접근 방식: 포괄적인 기술 감사로 위험 최소화
맹목적인 업그레이드 대신, 애플리케이션의 의존성, 보안, 성능, 변경 허용 오차를 면밀히 분석하는 포괄적인 기술 감사를 수행했습니다. 이를 통해 잠재적 위험 요소를 명확히 파악하고, 명확한 로드맵을 수립하여 통제 가능한 업그레이드를 가능하게 했습니다.
주요 감사 항목 및 활용 도구
-
호환성 및 종속성: Ruby 버전 경로 계획,
bundle outdated를 통한 Gem 호환성 및 보안 취약점 식별. -
코드 품질 및 보안:
RubyCritic으로 코드 복잡성 분석,Brakeman으로 보안 취약점 스캔. -
성능 및 Deprecation: 프로파일링 도구로 병목 현상 식별, Rails 버전별 Deprecated 패턴 파악.
-
테스트 커버리지: 핵심 비즈니스 로직에 대한 테스트 우선 작성.
4단계 점진적 업그레이드 전략
업그레이드는 4단계로 나누어 점진적으로 진행되었으며, 각 단계는 사용자에게 안정성을 보장하면서 Rails 8 준비를 목표로 했습니다.
-
기반 작업: Ruby 버전 및 주요 Gem 업데이트, 보안 취약점 수정, 테스트 커버리지 향상.
-
Rails 마이너 업그레이드: Rails 5.2.8에서 6.0, 6.1로 업그레이드, Deprecation 수정.
-
주요 Rails 업그레이드: Rails 7.0, 7.1로 업그레이드, 오토로딩 문제 해결, 새로운 자산 파이프라인 및 프런트엔드 도구 채택.
-
Rails 8 준비: Rails 8 베타 기능 테스트, Gem 호환성 확인, 성능 최적화.
주요 난관 및 해결책
ActiveRecord 변경(where.not), Gem 충돌(will_paginate), Deprecated 코드, Sprockets Fingerprinting 변경 등이 주요 난관이었으며, 각각 리팩토링, 대체 Gem 사용, CI 도구 통합, 설정 변경 등으로 해결했습니다.