의존성 업데이트는 새로운 기능 도입, 버그 수정, 성능 최적화 등 이점을 제공합니다. 반면, 소홀히 할 경우 CVE(Common Vulnerability and Exposure)와 같은 보안 취약점에 노출되어 심각한 위험을 초래하며, 이는 법적 문제 및 기업 평판 손상으로 이어질 수 있습니다. 또한, 젬 비호환성으로 인한 개발 지연이나 새로운 환경 설정의 어려움도 발생합니다.
Infinum은 이러한 문제 해결을 위해 체계적인 의존성 업그레이드 문화를 구축했습니다. 핵심 전략은 ‘작고 빈번한 의무적 업그레이드’, 보안, Rails, Ruby 업그레이드 순의 ‘우선순위 설정’, 그리고 주요 버전 업그레이드의 ‘독립적 계획’입니다. 클라이언트에게 유지보수의 중요성을 설명하여 ‘이해관계자 인식 개선’에도 힘씁니다.
의존성 상태 관리를 위해 Infinum은 자체 개발 도구들을 활용합니다. 내부 앱 ‘Reviser’는 프로젝트의 Ruby 의존성을 취합하여 ‘헬스 스코어’를 계산하고 슬랙 알림을 통해 공유합니다. 이 로직을 추출한 공개 젬 ‘Polariscope’는 프로젝트 젬 상태를 스캔하여 헬스 스코어를 제공하며, ‘Gorama’는 의존성 업데이트 추이를 시각화합니다.
마지막으로, Dependabot을 활용한 자동화된 업데이트 전략을 제시합니다. Rubocop, 개발, 비-주요 프로덕션 의존성 그룹별로 월 3회 자동화된 PR을 생성하며, 각 PR을 개별적으로 프로덕션에 배포하고 충돌 발생 시 해결을 권장합니다. 이 방법을 통해 월 8시간 미만의 노력으로 의존성을 최신 상태를 유지하고 변경 로그를 한곳에서 확인할 수 있습니다.