Rails 8로 풀-피처드 SaaS를 구축하고 한 번의 명령으로 배포한 방법

발행: (2026년 1월 8일 오후 06:34 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

Rails 8과 한 명령으로 배포한 전체 기능 SaaS 구축 방법

제가 무술 학원 관리 플랫폼인 MatGoat을 만들기 시작했을 때, 목표는 단 하나였습니다: 단순하게 유지하기.

Kubernetes는 없습니다. 마이크로서비스도 없습니다. 복잡한 CI/CD 파이프라인도 없습니다. 단일 명령으로 배포할 수 있는 Rails 모놀리스를 만들었습니다.

그 과정을 소개합니다.

스택

  • Rails 8.1 + Hotwire (Turbo + Stimulus)
  • PostgreSQL 데이터베이스
  • Kamal 2 배포 도구
  • Hetzner Cloud 호스팅 (~€20/월)
  • Solid Queue 백그라운드 작업
  • Tailwind CSS 스타일링

그게 전부입니다. webpack도 없습니다. Node.js 빌드 단계도 없습니다. Redis 클러스터도 없습니다. 별도의 작업 서버 인프라도 없습니다.

Rails 8이 모든 것을 바꾸는 이유

Rails 8은 제가 “Solid 삼위일체” 라고 부르는 것을 도입했습니다:

  • Solid Queue – 데이터베이스 기반 작업 처리
  • Solid Cache – 데이터베이스 기반 캐시
  • Solid Cable – 데이터베이스 기반 Action Cable

이 덕분에 대부분의 경우 Redis가 필요하지 않습니다. 백그라운드 작업, 캐시, 실시간 업데이트 모두 애플리케이션 데이터와 같은 PostgreSQL 데이터베이스에서 실행됩니다.

관리해야 할 서비스가 하나 줄어듭니다. 고장 날 가능성도 하나 줄어듭니다.

한 명령으로 배포하기

전체 배포 과정은 다음과 같습니다:

kamal deploy

Kamal이 담당하는 일:

  • Docker 이미지 빌드
  • 레지스트리에 푸시
  • 무중단으로 새 버전 롤아웃
  • 데이터베이스 마이그레이션 실행
  • Let’s Encrypt를 통한 SSL 인증서 관리

deploy.yml은 약 100줄 정도이며, 웹 서버, 작업 워커, PostgreSQL 데이터베이스, 프로덕션용 Action Cable을 위한 Redis, 그리고 S3에 자동 백업되는 데이터베이스를 정의합니다.

규모를 축소하는 아키텍처

대부분의 아키텍처 글은 규모를 확장하는 데 초점을 맞춥니다. 하지만 인디 개발자와 소규모 팀에게는 규모를 축소하는 것이 더 가치 있습니다.

MatGoat은 Hetzner에서 운영됩니다. 전체 인프라 비용은 매달 넷플릭스 구독료보다 적게 들지만, 다음을 처리합니다:

  • 다중 테넌트 학원 관리
  • WebSocket을 통한 실시간 수업 등록
  • 비디오 콘텐츠 전송
  • 학생 진행 상황 추적
  • 자동 수업 일정 관리

스케일이 필요하면 (필요할 경우) Kamal 설정 파일의 servers 배열에 서버를 하나 더 추가하면 됩니다. 그게 전부입니다.

내가 사용하지 않는 것들

  • 컨테이너 오케스트레이션 플랫폼 없음
  • 관리형 데이터베이스 서비스 없음
  • 별도 CDN 설정 없음
  • Kamal 설정 외에 인프라‑코드 없음

그리고 전혀 아쉽지 않습니다.

유지보수 이야기

매일 저는 다음을 실행합니다:

kamal deploy

무언가 잘못되면:

kamal rollback

로그를 확인하고 싶나요?

kamal logs

Rails 콘솔이 필요하면?

kamal console

정신적 부담이 최소화됩니다. 저는 인프라와 싸우는 대신 기능 개발에 시간을 씁니다.

결론

실제 제품을 만들기 위해 복잡한 아키텍처가 필요하지 않습니다. Rails 8과 Kamal을 사용하면 다음을 얻을 수 있습니다:

  • 단순성: 하나의 언어, 하나의 프레임워크, 하나의 배포 도구
  • 속도: 몇 분 안에 배포, 몇 시간도 안 걸림
  • 비용 효율성: 모든 것을 단일 VPS에서 실행
  • 유지보수성: 움직이는 부품이 적을수록 고장 나는 요소도 적음

인디 개발자이든 소규모 팀이든, 정말로 Kubernetes 클러스터가 필요한지 고민해 보세요. 때때로 지루한 솔루션이 가장 좋은 선택이 될 수 있습니다.

Back to Blog

관련 글

더 보기 »