레거시 시스템 자신감 있게 현대화하기: Ruby on Rails 모놀리스 사례

6. Szymon Fiedler - Rewrite with confidence - wroc_love.rb 2025

작성자
wrocloverb
발행일
2025년 04월 17일

핵심 요약

  • 1 보험 산업의 복잡한 Ruby on Rails 레거시 시스템을 안전하게 현대화하는 방법론을 제시합니다.
  • 2 기존 시스템의 동작을 '사실상의 사양'으로 간주하고, 프로덕션 데이터를 샘플링하여 비즈니스 규칙을 검증합니다.
  • 3 HTTP 요청 스텁 및 트랜잭션 롤백 기법으로 프로덕션 환경에 부작용 없이 정확한 재작업을 성공적으로 완료했습니다.

도입

본 강연은 '빠르게 움직이고 부수는' 방식이 통용되지 않는 고위험 비즈니스 영역에서 레거시 시스템을 신뢰할 수 있게 현대화하는 방법론을 소개합니다. 아전시(Argency)의 소프트웨어 엔지니어 시만 피들러(Shiman Fidler)는 기존 시스템 행동을 사양으로 삼고 격리된 테스트를 통해 비즈니스 규칙을 검증하는 독창적인 접근 방식을 공유합니다. 특히, 혁신적인 인슈어테크 기업 레모네이드(Lemonade)의 Ruby on Rails 모놀리스 시스템을 성공적으로 현대화한 실제 사례를 통해 그 실용성을 입증합니다.

레모네이드 팀은 3개월 내에 복잡한 보험 견적 흐름을 재구축해야 하는 중대한 과제에 직면했습니다. 문서 부족, 복잡한 비즈니스 규칙, 그리고 보험의 100% 정확성 요구가 주요 난관이었습니다. 팀은 ‘기존 시스템 동작을 사양으로 활용’하고 ‘격리된 테스트를 통한 비즈니스 규칙 검증’ 방법론을 채택했습니다. 핵심은 프로덕션 환경에서 실제 데이터를 샘플링하여 비교 검증하는 것이었습니다. 이를 위해 Active Record 모델로 견적 스냅샷, HTTP 요청 및 비교 결과를 저장했습니다. Ruby의 module prepend로 샘플링 메커니즘을 주입하여 특정 조건의 견적을 수집했고, Typhoeus 콜백 시스템으로 HTTP 요청/응답을 기록하여 새로운 흐름의 스텁 데이터로 활용했습니다. 검증 안전성을 위해 새로운 흐름의 견적 생성 및 언더라이팅을 Active Record 트랜잭션으로 감싸고 완료 후 롤백하여 프로덕션 오염을 방지했습니다. 모든 외부 HTTP 요청을 차단하고 기록된 스텁 데이터만 사용하여 외부 시스템 부작용을 차단했습니다. 샘플 수집과 검증을 분리하여 비동기적으로 처리했고, ‘diff’ 도구로 불일치를 시각화하여 신속한 개선을 가능하게 했습니다.

결론

이러한 체계적인 방법론 덕분에 레모네이드 팀은 3개월 안에 레거시 보험 시스템을 성공적으로 현대화했습니다. 새로운 흐름은 간결해졌지만, 기존과 동일한 정확한 결과를 제공했습니다. 프로덕션에서의 신중한 샘플링 및 롤백 기반 검증 덕분에 배포 후 롤백이 전혀 없었으며, 이는 프로젝트 리더로부터 '최고의 릴리스 중 하나'라는 극찬을 받았습니다. 본 사례는 고위험 도메인에서 레거시 시스템을 현대화할 때, 기존 시스템 동작을 활용하고 프로덕션 데이터를 기반으로 한 격리된 검증을 통해 점진적으로 정확성을 확보하는 것이 얼마나 강력한 전략인지를 명확히 보여줍니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!