Rails 핵심 팀 Q&A: 프레임워크의 현재와 미래

Rails Core AMA - Rails World 2023 - YouTube

3줄 요약

  • 본 Q&A 세션에서는 Rails 핵심 팀이 프레임워크의 개발 철학, 기능 통합 기준, 그리고 커뮤니티 참여의 중요성에 대해 논의합니다.
  • 특히, 실제 문제 해결에 기반한 기능 추가, PostgreSQL 지원 강화, 그리고 개발자 경험 개선을 위한 노력이 강조되었습니다.
  • Rails 커뮤니티의 활발한 기여와 협력이 프레임워크의 지속적인 발전에 핵심적인 역할을 한다는 점이 부각됩니다.

이 영상은 Rails World 2023에서 진행된 Rails 핵심 팀과의 Q&A 세션을 요약한 것입니다. 이 세션은 커뮤니티에서 제출된 약 40개의 질문을 바탕으로 진행되었으며, Rails 프레임워크의 현재 상태, 미래 비전, 그리고 개발 철학에 대한 심층적인 통찰을 제공합니다. 핵심 팀원들은 Rails의 다양한 측면에 대한 질문에 답변하며, 프레임워크의 발전 방향과 커뮤니티의 역할에 대한 중요한 시사점을 공유했습니다.

Rails 개발자를 위한 필수 학습 요소

팀원들은 Rails 매뉴얼 중 ‘반드시 읽어야 할 부분’에 대해, 특정 섹션을 지정하기보다는 ‘마법처럼 느껴지는’ 코드나 기능이 있을 때 직접 열어보고 원리를 이해하려 노력하는 것이 가장 중요하다고 강조했습니다. 이는 Rails가 마법이 아닌 이해 가능한 코드임을 깨닫는 과정입니다. 특히, 컨트롤러와 뷰 간의 통합은 모든 애플리케이션에서 사용되는 부분이므로 좋은 시작점이라고 언급되었습니다.

잘 알려지지 않은 Rails 기능 및 복합 기본 키

Rails에는 많은 기능이 숨겨져 있으며, 필요할 때 찾아 쓰는 것이 효과적이라고 설명합니다. 이는 복잡성을 추상화하여 개발자가 당장 필요 없는 세부 사항에 압도되지 않도록 돕는 철학을 반영합니다. 예를 들어, Rails 7.1에서 개선된 복합 기본 키(composite primary keys)는 대부분의 경우 기본값으로 사용할 필요는 없지만, 특정 상황에서 유용하게 활용될 수 있도록 지원됩니다.

데이터베이스 선택: MySQL vs. PostgreSQL

대부분의 Rails 핵심 팀원들이 MySQL 기반 애플리케이션에서 작업하지만, 새로운 애플리케이션을 시작한다면 PostgreSQL을 선택할 것이라고 밝혔습니다. PostgreSQL은 Active Record에서 일급 지원을 받으며, MySQL이 대규모 스케일에서 효과적인 복제 기록을 가졌음에도 불구하고 PostgreSQL은 완전하게 지원되는 데이터베이스로 적극 권장됩니다. 이는 과거의 유산과 현재의 기술적 선택 사이의 균형을 보여줍니다.

Rails 핵심 팀 가입 기준 및 커뮤니티 기여

Rails 핵심 팀에 합류하는 과정은 ‘트리아지(triage)’, ‘이슈(issues)’, ‘커미터(committers)’, ‘코어(core)’ 팀으로의 점진적인 신뢰 구축 단계를 거칩니다. 이는 버그 보고, 풀 리퀘스트 검토, 이슈 코멘트 참여 등 꾸준한 커뮤니티 기여를 통해 이루어집니다. 팀원들은 커뮤니티의 적극적인 참여가 Rails 프로젝트의 지속적인 발전에 필수적임을 강조하며, 코드 기여뿐만 아니라 문서 개선, 버그 테스트 등 다양한 방식으로 기여할 수 있다고 독려합니다.

Rails 기능 추상화 및 포함 기준

Rails에 새로운 기능을 포함하는 기준은 해당 기능이 웹 개발의 핵심 문제를 해결하고, 특정 애플리케이션에 국한되지 않는 충분히 일반적인 유용성을 가져야 한다는 것입니다. 37signals의 ‘오래된 애플리케이션에서 코드를 복사할 수 없다’는 규칙은 Active Storage, Action Text, Active Job과 같은 주요 프레임워크 기능의 추출로 이어졌습니다. 커뮤니티 기여의 경우, gem 형태로 기능을 먼저 증명하고, 이를 핵심 팀의 주목을 받게 하는 것이 가장 효과적인 방법입니다.

Rails의 미래 비전 및 개발자 경험 개선

Rails 핵심 팀은 앞으로 5년간 Rails가 나아가야 할 방향으로 개발자 삶의 질(Quality of Life) 향상을 꼽았습니다. 특히 언어 서버(language servers)와의 통합과 같은 툴링 개선을 통해 개발자들이 더 빠르고 효율적으로 작업할 수 있도록 돕는 데 중점을 둘 것입니다. 이는 Ruby와 Rails의 핵심 가치인 ‘빠른 작업 완료’를 더욱 강화하는 방향입니다.

보안 취약점 처리 과정 및 커뮤니티의 역할

보안 문제는 HackerOne 계정을 통해 보고되며, 핵심 팀은 월별 회의를 통해 버그를 분류하고 수정합니다. 이 과정은 보안 릴리스가 이루어지기 전까지는 비밀리에 진행됩니다. 커뮤니티는 보안 취약점을 발견하면 즉시 보고하는 것이 가장 큰 도움이 됩니다.

Rails 프레임워크의 난해한 부분

팀원들은 Active Record가 가장 복잡하지만 동시에 가장 강력한 코드베이스 중 하나라고 언급했습니다. 또한, Active Support의 콜백(callbacks) 기능도 작업하기 어려운 부분으로 꼽혔습니다. 그러나 Rails의 일반적인 구조와 패턴을 이해하면 대부분의 부분을 파악하는 데 큰 어려움이 없다고 덧붙였습니다.

신규 개발자 유치 및 문서 개선

Rails가 JavaScript와 같은 다른 언어에 비해 신규 개발자들에게 더 매력적으로 다가가기 위한 방안으로 문서(가이드) 재정비와 더 많은 비디오 튜토리얼 제작이 제안되었습니다. 또한, 커뮤니티 구성원들이 루비와 Rails에 대한 열정을 공유하고, 새로운 개발자들을 환영하는 문화가 중요하다고 강조했습니다. 이는 기술적인 측면뿐만 아니라 커뮤니티의 활력이 신규 유입에 큰 영향을 미친다는 인식을 보여줍니다.

기능 우선순위 및 인증 시스템

Rails에 기능이 추가되는 시점은 당면한 문제를 해결하고, 적절한 추상화 및 API가 발견될 때입니다. 예를 들어, Active Job 이전에 백그라운드 작업에 대한 필요성은 있었지만, 적절한 인터페이스를 찾는 데 시간이 걸렸습니다. 사용자 인증(authentication)과 같은 기능은 대부분의 애플리케이션에 필요하지만, 모든 경우에 맞는 ‘올바른’ 추상화를 찾기 어렵기 때문에 아직 프레임워크에 직접 포함되지 못했습니다. 이는 Rails가 실제 문제 해결에 집중하며 신중하게 기능을 추가하는 접근 방식을 보여줍니다.

경력 전환 및 Rails 코어 팀 합류

한 핵심 팀원은 30세에 첫 소프트웨어 개발자 직업을 시작했다고 밝히며, 경력 전환에 늦은 시기란 없음을 강조했습니다. 또한, 컴퓨터 과학 학위가 Rails 핵심 팀원이 되기 위한 필수 조건이 아님을 언급하며, 다양한 배경을 가진 사람들도 충분히 기여하고 성공할 수 있음을 시사했습니다.

이번 Q&A 세션은 Rails 핵심 팀의 깊이 있는 통찰력과 Rails 프레임워크에 대한 헌신을 보여주었습니다. 프레임워크의 진화는 실제 문제 해결, 커뮤니티의 적극적인 기여, 그리고 신중한 설계 철학을 바탕으로 이루어지고 있습니다. 특히, 개발자 경험 개선과 커뮤니티의 활성화는 Rails의 지속적인 성장을 위한 핵심 동력으로 강조됩니다. Rails는 단순히 기술 스택을 넘어, 사용자 중심의 개발 철학과 강력한 커뮤니티를 통해 끊임없이 발전하고 있는 생태계임을 다시 한번 확인할 수 있었습니다.