Kamal을 활용한 Ruby on Rails 애플리케이션 프로덕션 배포 가이드

Ep 7. Deploy with Kamal | Rails New Tutorial with Typecraft

작성자
Ruby on Rails Youtube
발행일
2025년 07월 16일

핵심 요약

  • 1 Kamal은 Rails 8에 내장된 배포 도구로, Ruby on Rails 애플리케이션을 프로덕션 환경에 직접 배포하는 과정을 간소화합니다.
  • 2 Docker 이미지를 빌드하고 컨테이너 레지스트리에 푸시한 후, 지정된 서버에 SSH로 접속하여 이미지를 실행하는 방식으로 동작합니다.
  • 3 타사 플랫폼 없이 자체 VPS에 배포하며, 무료 SSL 및 영구 스토리지 설정 등 최적의 배포 환경을 구축할 수 있습니다.

도입

이 영상은 Rails 8에 통합된 배포 도구인 Kamal을 활용, Ruby on Rails 애플리케이션을 프로덕션 환경에 배포하는 과정을 상세히 설명합니다. Heroku 등 타사 플랫폼 없이 자체 제어 서버에 직접 배포하는 Kamal의 강점을 부각하며, 효율적이고 안전한 배포 워크플로우를 제시합니다.

Kamal의 배포는 로컬에서 Git으로부터 최신 코드를 가져와 Docker 이미지를 빌드하는 것으로 시작됩니다. 이 이미지는 Docker Hub 같은 컨테이너 레지스트리에 푸시되며, 이후 Kamal은 SSH를 통해 배포 대상 서버(예: Digital Ocean VPS)에 접속, 이미지를 풀(pull)하고 컨테이너로 실행합니다. config/deploy.yaml 파일에서 서비스 이름, 이미지 이름, 웹 서버 IP 주소 등 핵심 배포 설정을 정의합니다. 컨테이너 레지스트리 인증을 위해 Docker Hub 토큰을 환경 변수로 설정하는 방법이 소개되나, 실제 프로덕션에서는 Vault1Password 같은 안전한 자격 증명 관리 도구 사용이 권장됩니다. Kamal은 사용자 정의 도메인 설정 시 Let’s Encrypt를 통해 무료 SSL 인증서를 자동으로 구성, HTTPS 접속을 용이하게 합니다. SQLite 같은 파일 기반 DB 영속성을 위해 영구 저장소 볼륨 마운트 모범 사례도 제시됩니다. 배포 전 로컬 Docker 설치가 필수적이며, kamal setup 명령 한 번으로 이미지 빌드, 푸시, 서버 설정 및 애플리케이션 실행까지 전 과정이 자동화됩니다. 배포 후에는 kamal logs, kamal console, kamal rollback 등으로 애플리케이션을 효과적으로 모니터링 및 관리할 수 있습니다.

결론

Kamal은 Ruby on Rails 개발자가 복잡한 배포 과정을 최소화하고, 자체 인프라를 통해 애플리케이션을 완벽하게 제어할 수 있도록 돕는 혁신적인 도구입니다. Rails의 '설정보다 관례' 철학을 배포 영역까지 확장하여, 개발자가 인프라 세부 사항에 얽매이지 않고 핵심 개발에 집중할 수 있는 환경을 제공합니다. 이는 Rails 생태계의 완성도를 높이며, 효율적이고 안정적인 프로덕션 배포를 가능하게 합니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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