Flexcar의 Ruby on Rails 전환 과정 및 성과
Flexcar는 기존 Java 마이크로서비스의 한계를 극복하고자 Ruby on Rails로의 전환을 결정했습니다. 이는 초기 엔지니어들의 반발에도 불구하고, CTO의 강력한 리더십과 ‘Go All In’ 전략으로 추진되었습니다.
1. 과감한 전환 및 초기 도전
- 목표: 3개월 내 플랫폼의 90% 재구축.
- 실제: 4명의 핵심 엔지니어가 4개월 만에 약 80%를 재구축하며 목표에는 미달했으나, 단기간 내 놀라운 성과를 달성했습니다.
- 출시 과정: RailsConf 기간 중 라이브 출시를 감행했으며, 데이터 마이그레이션에 예상보다 긴 시간이 소요되는 등 난관이 있었으나 성공적으로 완료했습니다.
- 초기 안정화: 출시 후 약 2개월간 프로덕션 버그 수정 및 기능 안정화에 집중하며 시스템을 안정화했습니다. 이 과정에서 고객 지원팀의 업무량이 5-6배 증가하는 등 어려움도 있었습니다.
2. 전환을 통한 주요 개선점
- 개발 속도 향상:
- 기존 Java 환경에서는 분기당 10-15개의 프로젝트를 수행했으나, Ruby on Rails 전환 후 더 적은 인원으로 분기당 25-30개의 프로젝트를 수행하게 되었습니다.
- 새로운 기능 구현에 소요되는 시간이 ‘몇 달’에서 ‘몇 주’ 단위로 단축되어, 제품팀이 다양한 아이디어를 빠르게 시도하고 검증할 수 있게 되었습니다.
- 팀 효율성 증대:
- 기존의 ‘왕국’처럼 분리된 마이크로서비스 팀 구조를 해체하고, 모든 엔지니어가 시스템 전반을 이해하고 변경할 수 있게 되었습니다.
- 이전에는 특정 전문가(예: Dan)에게 집중되던 업무(예: 빌링 이슈)가 분산되어 팀 전체의 지식 수준이 향상되었습니다.
- 팀 규모가 5-8명에서 2-3명으로 축소되어 팀 간의 유연한 인력 교류와 시니어-주니어 멘토링이 활성화되었습니다.
- 개발 환경 개선:
- 기존에는 노트북에서 전체 시스템 실행이 불가능했으나, Rails 모놀리스 전환 후 로컬 환경에서 전체 Flexcar 시스템을 실행하고 테스트할 수 있게 되어 개발 효율성이 극대화되었습니다.
- 코드베이스를 새로 구축하며 기존의 복잡성을 제거하고 훨씬 깔끔한 아키텍처를 구현했습니다.
3. Ruby on Rails 커뮤니티 및 AI 도구의 영향
- 커뮤니티 지원: RailsConf에서 겪은 커뮤니티의 긍정적이고 지지적인 분위기가 Ruby on Rails 선택의 중요한 이유 중 하나임을 깨달았습니다.
- AI 활용:
- 초기에는 ChatGPT를 사용하며 환각(hallucination) 문제로 시간을 낭비하기도 했습니다.
- 최근에는 Cursor(또는 Cloud Code)와 같은 AI 코딩 도구를 도입하여 생산성을 혁신적으로 높였습니다. 특히, 프론트엔드 개발자도 백엔드(Rails) 코드 작성에 쉽게 참여할 수 있게 되어 풀스택 역량 강화에 기여했습니다. AI는 상용구 코드 제거 및 학습 과정 지원에 큰 도움이 되었습니다.
- 엔지니어 성장: Ruby on Rails의 명확한 구조와 AI 도구의 지원 덕분에 주니어 개발자들이 빠르게 성장하고 더 많은 책임을 맡을 수 있게 되었습니다.
4. 도전 과제 및 향후 계획
- 기술적 도전: N+1 쿼리, 잡(Jobs) 관리, 인증(React와 Device 연동) 등에서 어려움을 겪었으나, Sentry와 같은 도구로 문제를 해결하고 있습니다.
- 내부 툴링 개선: 고객 대면 사이트에 집중했던 과거와 달리, 이제는 내부 운영 툴링 개선에 초점을 맞추고 있습니다. React와 Inertia.js를 활용하여 내부 툴의 사용자 경험을 향상시키고, 궁극적으로는 React를 단일 프론트엔드 프레임워크로 통일할 계획입니다.
- 미래 아키텍처: 기술 부채를 관리하고 지속적인 학습을 통해 Flexcar의 다음 단계 아키텍처를 구상하며, 비즈니스 성장을 지원할 계획입니다.