Kamal 2: 단일 서버에 여러 Rails 앱 배포 간소화

Kamal 2: Deploying multiple apps

작성자
발행일
2025년 10월 20일

핵심 요약

  • 1 Kamal 2는 새로운 Kamal Proxy를 통해 단일 서버에 여러 Rails 애플리케이션을 쉽게 배포할 수 있도록 지원합니다.
  • 2 DigitalOcean Droplet을 예시로 들어, 첫 번째 Rails 8 앱과 두 번째 Rails 앱을 동일 서버에 배포하는 구체적인 설정 과정을 설명합니다.
  • 3 Kamal 2는 자동 HTTPS, 카나리 배포, 유지보수 모드, 개선된 비밀 관리 등 다양한 신규 기능을 제공하여 배포 효율성을 높입니다.

도입

과거 단일 서버에 여러 웹 애플리케이션을 배포하는 것은 복잡한 인프라 설정이 필요했습니다. Docker가 이 과정을 개선했지만, Basecamp에서 개발한 배포 도구인 Kamal의 최신 버전 Kamal 2는 컨테이너화된 애플리케이션 배포를 더욱 용이하게 만듭니다. Kamal 2는 내장된 프록시를 활용하여 여러 Rails 애플리케이션을 동일한 서버에 배포하는 과정을 간소화합니다. 본 가이드는 Kamal 2를 활용하여 DigitalOcean Droplet에 두 개의 Rails 앱을 배포하는 방법을 상세히 설명합니다.

Kamal 2를 활용한 단일 서버 다중 앱 배포는 다음과 같은 주요 단계를 거쳐 진행됩니다.

1. DigitalOcean Droplet 설정

DigitalOcean에서 Droplet(가상 서버)을 생성하고, 지역, OS, 크기를 선택한 후 SSH 키를 등록합니다. 이후 Droplet의 IP 주소를 확인합니다.

2. 첫 번째 Rails 8 앱 배포 설정

Rails 8 앱은 Kamal이 기본 내장되어 있습니다.

  • config/deploy.yml 설정: service, image, servers(Droplet IP), proxy(SSL, 호스트 도메인), registry(Docker Hub 사용자명)를 설정합니다.

  • 환경 변수 및 DNS: Docker Hub 액세스 토큰을 KAMAL_REGISTRY_PASSWORD로 설정하고, 앱 도메인의 A 레코드를 Droplet IP 주소로 추가합니다.

  • 배포 실행: 변경사항 커밋 후 kamal setup으로 초기 설정을, kamal deploy로 앱을 배포합니다.

3. 두 번째 앱 배포 설정

두 번째 앱은 gem "kamal"을 추가하고 bin/rails generate kamal:install을 실행합니다.

  • config/deploy.yml 설정: 첫 번째 앱과 동일하게 설정하되, proxy.host는 고유한 다른 도메인으로 지정합니다.

  • 배포 실행: 변경사항 커밋 후 kamal setupkamal deploy를 실행합니다.

4. Kamal 2의 주요 신기능 및 고려사항

Kamal 2는 새로운 Kamal Proxy를 통해 다중 앱 지원, 카나리 배포, 유지보수 모드, 자동 HTTPS(Let’s Encrypt), 개선된 비밀 관리를 제공합니다. 배포 시 Dockerfile 포트 설정과 서버 RAM 용량 확보에 유의해야 합니다.

결론

Kamal 2는 새로운 Kamal Proxy와 다양한 개선 사항을 통해 단일 서버에 여러 웹 애플리케이션, 특히 Rails 앱 배포의 복잡성을 크게 줄여줍니다. 자동 HTTPS, 카나리 배포, 개선된 비밀 관리 등 현대적인 배포에 필수적인 기능들을 통합 제공하여 개발자의 배포 경험을 향상시킵니다. 인프라 관리가 도전적일 수 있지만, Kamal 2는 효율적인 솔루션을 제공하며, 안정적인 프로덕션 환경 유지를 위해 모니터링 솔루션 활용을 권장합니다.

댓글 0

로그인이 필요합니다

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

로그인 하러 가기

아직 댓글이 없습니다

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