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

Deploying with Kamal 2.0 | Rails 8 Unpacked - YouTube

3줄 요약

  • Rails 8은 Kamal을 통해 Heroku와 같은 PaaS 없이도 간단하게 프로덕션 서버에 배포할 수 있습니다.
  • Kamal은 Docker를 활용하여 어떤 Ubuntu 서버든 SSH 접속만 가능하다면 손쉽게 Rails 앱을 배포하는 도구입니다.
  • `kamal setup` 및 `kamal deploy` 명령어를 통해 Docker 설치, 이미지 빌드, 배포, 그리고 서버 관리가 효율적으로 이루어집니다.

본 영상은 Rails 8 애플리케이션을 Kamal이라는 혁신적인 배포 도구를 활용하여 프로덕션 환경에 효율적으로 배포하는 방법을 제시합니다. PaaS의 제약을 넘어, 개발자가 직접 서버를 관리하고 배포를 제어하는 Rails 8의 'No PaaS' 철학을 구현하는 핵심 접근 방식을 상세히 다룹니다. Docker 기반 Kamal의 간결하고 강력한 워크플로우가 중점적으로 소개됩니다.

Kamal은 PaaS의 높은 비용 및 클라우드 종속성 문제를 해결하는 대안입니다. Docker 기반으로 SSH 접속 가능한 모든 Ubuntu 서버에 PaaS와 유사한 배포 경험을 제공하며, Rails 8의 ‘No PaaS’ 비전을 실현하여 개발자가 앱의 전 생애주기를 직접 관리하도록 돕습니다.

영상은 DigitalOcean Droplet을 예시로 서버 환경을 구성합니다. Solid Trifecta(Solid Cache, Solid Cable, Solid Queue) 활용으로 데이터를 RAM 대신 DB에 저장하여, 2GB RAM Droplet과 소규모 DB 클러스터로도 효율적 운영이 가능하며, 100GB 추가 볼륨을 마운트하여 DB 공간을 확보합니다.

Kamal 설정은 config/deploy.yml에서 서비스 이름, Docker 이미지, 서버 IP, SSL, Docker Hub 레지스트리 등을 정의합니다. Kamal Secrets를 통해 1Password에서 민감한 정보(Docker Hub 비밀번호, Rails Master Key, DB URL)를 안전하게 가져와 환경 변수로 주입합니다.

배포는 kamal setup 명령어로 시작되며, Docker 설치, 레포지토리 클론, 이미지 빌드, Docker Hub 푸시/풀, 컨테이너 실행까지 자동화합니다. 이후 kamal deploy로 업데이트 가능하며, kamal console, kamal shell, kamal logs 등 CLI 도구로 배포 후 관리를 용이하게 합니다.

Kamal은 Rails 8 애플리케이션 배포를 극도로 단순화하고 효율성을 높이는 강력한 도구입니다. 복잡한 PaaS 없이도 개발자가 직접 배포를 제어하고 서버를 관리할 수 있게 함으로써, Rails 8이 지향하는 '원-퍼슨 프레임워크'의 가치를 효과적으로 구현합니다. 이 영상은 Kamal을 통한 배포의 간결함과 유연성을 명확히 보여줍니다.