Rails 8 개발 컨테이너에서 Redis 기본 제외

Rails 8 does not include redis by default in the dev container.

작성자
발행일
2025년 07월 11일

핵심 요약

  • 1 Rails 8부터는 생성되는 개발 컨테이너에 Redis가 기본적으로 포함되지 않습니다.
  • 2 이 변경은 Rails 8이 Solid Queue 및 Solid Cache를 기본 젬으로 채택하여 Redis 의존성이 감소했기 때문입니다.
  • 3 Rails 7.2에서는 Kredis, ActionCable 등을 위해 Redis 컨테이너가 개발 컨테이너에 기본 포함되었습니다.

도입

개발 컨테이너(dev container)는 컨테이너를 완벽한 개발 환경으로 활용할 수 있게 해주는 기술입니다. 이는 애플리케이션 실행, 코드베이스 작업에 필요한 도구, 라이브러리, 런타임 분리, 지속적 통합 및 테스트 지원 등 다양한 용도로 사용됩니다. 로컬 또는 원격 환경에서 다양한 도구와 에디터를 통해 실행될 수 있습니다. Rails 7.2는 개발 컨테이너를 옵트인 기능으로 도입하여 개발 환경 설정을 간소화했으나, Rails 8에서는 기본 개발 컨테이너 구성에서 Redis의 포함 여부에 중요한 변화가 생겼습니다.

Rails 7.2와 Rails 8의 개발 컨테이너 구성 변화는 Redis의 기본 포함 여부에 초점을 맞춥니다.

Rails 7.2 개발 컨테이너 구성

Rails 7.2는 개발 컨테이너를 옵트인 기능으로 제공했습니다. 새로운 Rails 애플리케이션 생성 시 --devcontainer 옵션을 사용하거나, 기존 앱에 bin/rails devcontainer 명령을 통해 추가할 수 있었습니다. .devcontainer 폴더는 앱을 부팅하고 원격 컨테이너에서 개발하는 데 필요한 모든 것을 포함했습니다.

  • 포함된 서비스:
    • Kredis, ActionCable 등을 위한 Redis 컨테이너
    • 데이터베이스 (SQLite, Postgres, MySQL 또는 MariaDB)
    • 시스템 테스트를 위한 Headless Chrome 컨테이너
    • 로컬 디스크 사용 및 미리보기 기능이 구성된 Active Storage
  • 기본 compose.yaml 예시: rails-app, selenium, redis 서비스가 명시적으로 정의되었으며, redis 서비스는 redis:7.2 이미지를 사용했습니다.

  • 기본 devcontainer.json 예시: containerEnvREDIS_URL이 설정되었고, forwardPorts에 6379 포트가 포함되어 있었습니다.

Rails 8 개발 컨테이너 구성 변경

Rails 8에서는 개발 컨테이너 생성 시 Redis가 기본적으로 포함되지 않습니다. 이는 Rails 8이 Solid Queue 및 Solid Cache 젬을 기본으로 사용하여 Redis에 대한 의존성을 줄였기 때문입니다.

  • Redis 제외 이유:
    • 새로 생성되는 앱은 Solid Queue와 Solid Cache 젬을 기본으로 사용하며, 이 젬들은 Redis에 의존하지 않습니다.
    • 기존 앱에 대한 개발 컨테이너 생성 시에도 Solid 젬 중 하나라도 사용 중이면 Redis가 포함되지 않습니다.
  • 새로운 compose.yaml 예시: rails-appselenium 서비스만 포함되며, redis 서비스 항목이 완전히 제거되었습니다.

  • 새로운 devcontainer.json 예시: containerEnv에서 REDIS_URL 설정이 사라졌고, forwardPorts에서도 6379 포트가 제외되었습니다.

  • Redis 포함 조건: ActiveJob 또는 ActionCable을 사용하는 앱에서 Redis를 포함하려면 앱 생성 시 --skip-solid 옵션을 사용해야 합니다.

이러한 변화는 Rails 애플리케이션의 개발 환경 구성에 있어 Redis의 기본 역할이 축소되었음을 명확히 보여줍니다.

결론

Rails 8은 개발 컨테이너 전략에 있어 중요한 변화를 가져왔습니다. Rails 7.2에서 기본적으로 제공되던 Redis 컨테이너가 Rails 8에서는 Solid Queue 및 Solid Cache 젬의 도입으로 인해 기본 구성에서 제외됩니다. 이는 개발 환경의 경량화를 도모하고, Redis가 필수적이지 않은 애플리케이션의 경우 불필요한 리소스와 설정을 줄이는 이점을 제공합니다. 개발자들은 이제 ActiveJob이나 ActionCable과 같이 명시적으로 Redis가 필요한 경우에만 `--skip-solid` 옵션을 사용하여 Redis를 포함하도록 선택해야 합니다. 이러한 변화는 Rails 생태계가 더욱 유연하고 효율적인 개발 환경을 제공하기 위해 지속적으로 발전하고 있음을 시사합니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

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