Kamal, 편리한가? AWS에서 3가지 사내 프로젝트를 Kamal로 운영한 경험

Kamalって便利?社内プロジェクト3つをKamal + AWSで運用した体験談 / yappu - Kaigi on Rails 2025

작성자
Kaigi on Rails
발행일
2025년 11월 25일

핵심 요약

  • 1 Kamal은 서버와 Docker 환경만 준비하면 웹 애플리케이션을 손쉽게 배포할 수 있는 도구로, YAML 기반의 간결한 설정과 블루/그린 배포를 지원합니다.
  • 2 ALB 헬스 체크 문제와 다인 개발 환경 배포 불편함 등의 난관이 있었으나, 자동 SSL, 간편한 유지보수/디버깅, 환경별 배포 용이성 등 다양한 이점을 제공합니다.
  • 3 Rails 8부터 기본 탑재된 Kamal은 인프라 지식이 적은 개발자도 AWS 환경에서 효율적으로 애플리케이션을 배포하고 관리할 수 있도록 돕는 유용한 솔루션입니다.

도입

발표자는 인프라 지식이 부족한 상태에서 사내 프로젝트 인프라 담당을 맡게 된 배경과, 기존 Heroku/Render와 같은 PaaS 서비스만 알던 중 Kamal을 접하게 된 계기를 설명합니다. AWS 환경에서 Kamal을 시도해본 결과 그 편리함에 매료되어 3개의 사내 프로젝트 운영에 채택하게 된 과정을 공유합니다. 본 발표는 Kamal에 익숙하지 않은 개발자들을 대상으로 Kamal의 개념, AWS에서의 운영 방식, 그리고 경험을 통해 얻은 장점과 해결했던 문제점들을 상세히 다룹니다.

Kamal은 Rails 8부터 기본으로 포함된 Docker 기반 배포 도구로, YAML 파일을 통한 간결한 설정과 블루/그린 배포를 지원하며 ‘어디든 웹 앱 배포’를 가능하게 합니다. kamal setup 명령 하나로 서버 초기 설정부터 Docker 설치, 이미지 빌드 및 레지스트리 푸시, 서버에서 이미지 풀 및 컨테이너 실행까지 일괄 처리하여 배포 과정을 극도로 단순화합니다. 발표자는 AWS CodePipeline을 활용한 자동 배포 파이프라인과 EC2, ECR, RDS, ALB, CloudWatch Logs 등으로 구성된 아키텍처에서 Kamal을 운영했습니다.

주요 운영 경험 및 문제 해결 사례

  • ALB 헬스 체크 문제:
    • ALB는 프라이빗 IP로 헬스 체크를 수행하나, Kamal Proxy는 호스트 이름을 기반으로 컨테이너에 라우팅하여 헬스 체크 요청이 Rails 앱에 도달하지 못했습니다.
    • 해결책: 하나의 애플리케이션이 프라이빗 IP 요청을 받아들이도록 설정하여 헬스 체크를 통과시켰습니다.
  • 다인 개발 환경에서의 배포 불편함:
    • 수동 배포는 개발자별 SSH 키 및 ECR 푸시 권한 관리의 번거로움과 반복적인 배포 요청으로 비효율적이었습니다.
    • 해결책: AWS CodePipeline을 구축하고 CodeBuild 단계에서 kamal deploy 명령을 실행하도록 자동화하여 배포 과정을 간소화했습니다.

Kamal의 주요 장점

  • 자동 SSL 지원: ssl: true 설정만으로 Let’s Encrypt를 통한 SSL 인증서 발급 및 자동 갱신을 처리합니다.

  • 간편한 유지보수 및 디버깅: kamal console, kamal logs 명령으로 Rails 콘솔 접속 및 애플리케이션 로그 확인이 용이합니다.

  • 환경별 배포 용이성: deploy.staging.yml 등 환경별 설정 파일을 분리하고 kamal deploy -d staging 명령으로 쉽게 배포 환경을 전환할 수 있습니다.

  • Docker 로그 수집 설정 간편: driver: awslogs 설정으로 CloudWatch Logs 등으로 로그를 쉽게 수집할 수 있습니다.

결론

Kamal은 서버와 Docker 환경만으로 웹 애플리케이션을 간편하게 배포할 수 있는 강력한 도구입니다. ALB 헬스 체크와 Kamal Proxy의 조합, 그리고 다인 개발 환경에서의 수동 배포 문제 등 초기에는 몇 가지 난관에 부딪혔으나, 자동 SSL, 손쉬운 유지보수, 환경별 배포 및 로그 수집의 간편함 등 수많은 장점이 이러한 단점을 상회합니다. 특히 Rails 8부터 기본 탑재되어 더욱 주목받는 Kamal은 인프라 지식이 많지 않은 개발자도 효율적으로 배포 환경을 구축하고 운영할 수 있도록 돕는 유용한 솔루션이므로, 적극적인 사용을 권장합니다.

댓글 0

로그인이 필요합니다

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

로그인 하러 가기

아직 댓글이 없습니다

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