Rails Default: 업그레이드된 앱의 시한폭탄 해체하기

RailsConf 2025 Rails Framework Defaults: Defusing the Time Bomb in Your Upgraded App by Josh Puetz

작성자
Ruby Central
발행일
2025년 07월 24일

핵심 요약

  • 1 Rails 업그레이드 후 `new_framework_defaults_*.rb` 파일 처리는 앱 안정성 확보에 필수적입니다.
  • 2 Rails 기본값은 프레임워크의 최신 권장 사항을 반영하며, 미적용 시 잠재적 문제점을 야기할 수 있습니다.
  • 3 철저한 준비와 점진적인 적용을 통해 기본값을 업데이트하여 앱의 미래를 보장해야 합니다.

도입

Rails 애플리케이션 업그레이드는 개발자에게 중요한 과제입니다. 특히, 업그레이드 과정에서 간과하기 쉬운 'Rails 기본값(Defaults)' 처리는 앱의 안정성과 성능에 중대한 영향을 미칩니다. 본 강연은 Rails 업그레이드 이후에 발생하는 '진정한' 업그레이드, 즉 Rails 기본값 관리의 중요성을 강조하며, 이를 소홀히 할 경우 발생할 수 있는 '시한폭탄'과 같은 문제점을 경고합니다. 연사는 Rails 5부터 7까지의 실제 업그레이드 경험을 바탕으로 `config/initializers/new_framework_defaults_*.rb` 파일의 역할과 `config.load_defaults` 설정의 의미를 상세히 설명합니다.

Rails 기본값은 Rails 팀이 권장하는 구성 설정으로, 애플리케이션의 동작 방식에 영향을 미칩니다. 이 값들은 application.rb 또는 initializers 파일에서 설정될 수 있으며, ActiveRecord, ActionDispatch, ActionView 등 Rails 스택 전반에 걸쳐 영향을 줍니다. 예를 들어, Rails 5 이전에는 belongs_to 연관 관계가 기본적으로 필수(required)가 아니었으나, Rails 5부터 true로 변경되어 데이터 무결성을 강화하는 방향으로 진화했습니다. 이러한 기본값 변경의 주된 이유는 더 나은 개발 관행 수용, 반복적인 코드(boilerplate code) 감소, 그리고 향후 기능의 비권장(deprecation)에 대한 준비입니다.

Rails는 앱이 업그레이드 시 이전 버전의 기본값을 유지하도록 config.load_defaults 설정을 통해 동작을 고정합니다. 이 설정은 Rails 업그레이드 과정에서 자동으로 변경되지 않으므로, 개발자는 수동으로 new_framework_defaults_*.rb 파일에 주석 처리된 새로운 기본값들을 하나씩 활성화하며 점진적으로 새로운 동작을 적용할 수 있습니다. Rails 5.1부터는 이 파일의 형식이 변경되어, 새로운 기본값이 주석 처리된 채로 제공되어 개발자가 의도적으로 선택하여 적용하도록 유도합니다.

오래된 기본값을 유지하는 것은 단기적으로는 앱이 깨지는 것을 방지하지만, 장기적으로는 새로운 기능, 보안 업데이트, 성능 개선 등의 이점을 놓치게 만들며, 향후 Rails 버전에서 해당 기본값이 완전히 제거될 경우 더 큰 문제를 야기할 수 있습니다. 또한, 최신 버전의 기본값을 기대하는 Gem이나 튜토리얼과의 호환성 문제도 발생할 수 있습니다. 따라서 기본값 업그레이드는 피할 수 없는 작업이며, 이를 미루는 것은 결국 더 큰 고통으로 이어집니다.

기본값 업그레이드를 위한 전략으로 연사는 ‘느리고 꾸준한(slow and steady)’ 접근 방식을 제안합니다. 이는 철저한 준비 작업(테스트 커버리지 확인, 테스트 통과), 심도 있는 연구(업그레이드 가이드, new_framework_defaults 파일, Rails 소스 코드 및 Pull Request 검토), 그리고 점진적인 설정 활성화(하나씩 주석 해제, 필요시 피처 플래그 사용, 특정 기본값 유지 결정)를 포함합니다. 각 변경 사항을 적용한 후에는 반드시 테스트, 배포, 모니터링을 통해 예상치 못한 문제를 확인해야 합니다. 모든 기본값을 활성화한 후에는 해당 파일을 삭제하고 config.load_defaults 버전을 현재 Rails 버전으로 업데이트할 수 있습니다.

결론

결론적으로, Rails 업그레이드는 `new_framework_defaults` 파일에 있는 기본값들을 완전히 처리해야만 비로소 완료됩니다. 이 과정은 앱의 미래 안정성과 유지보수성을 보장하는 중요한 단계입니다. 연사는 Rails 커뮤니티에 업그레이드 가이드와 `new_framework_defaults` 파일 내의 문서화를 개선하여 개발자들이 기본값 변경의 의도를 더 쉽게 이해하고 적용할 수 있도록 요청합니다. 마지막으로, 개발자들에게 현재 앱의 `config.load_defaults` 버전을 확인하고, `new_framework_defaults` 파일들을 검토하며, 팀과 함께 업그레이드 계획을 수립하고, 각 변경 사항이 앱에 미칠 영향을 연구하며, 더 이상 지체하지 말고 기본값 업그레이드를 시작할 것을 강력히 권고합니다. 이는 미래의 자신에게 베푸는 친절이며, 결국 앱의 건강한 성장을 위한 필수적인 투자입니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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