Docker 이미지 기반 배포 및 단일 DB 아키텍처
Broadcast는 소스 코드 대신 Docker 이미지로 배포되어 설치 및 업데이트를 간소화합니다. 약 500MB 이미지는 모든 종속성을 포함하며 docker compose up으로 전체 스택을 시작합니다. Rails 8의 SolidQueue, SolidCable, SolidCache 등 PostgreSQL 기반 서비스를 활용, Redis 없이 단일 PostgreSQL 인스턴스로 모든 데이터를 관리하여 외부 서비스 종속성 및 유지보수 복잡성을 최소화했습니다.
트리거 파일 패턴과 파일 기반 모니터링으로 시스템 제어 및 가시성 확보
컨테이너 내부 Rails 앱이 호스트 시스템을 직접 제어할 수 없는 제약을 극복하고자 ‘트리거 파일’ 패턴을 도입했습니다. Rails 앱이 파일에 의도를 기록하면, 호스트 cron 작업이 이를 감지하여 업그레이드, 백업, 도메인 변경 등 시스템 작업을 수행합니다. 역으로, 호스트 시스템 메트릭(CPU, 메모리, 디스크)은 호스트 cron 스크립트가 생성한 JSON 파일을 Rails 앱이 읽는 방식으로 제공되어, 파일 시스템을 통한 양방향 정보 교환을 구현합니다.
단일 행 설치 모델 및 Thruster를 통한 자동 SSL/HTTP/2
installations 테이블의 단일 행에 라이선스 키, 도메인 등 설치 설정을 저장하여 환경 변수를 대체하고 UI를 통한 동적 변경을 지원합니다. SSL/HTTP/2 구현을 위해 Basecamp의 Thruster를 활용, 제로 구성 자동화를 달성했습니다. Thruster는 Let’s Encrypt 인증서 프로비저닝, 갱신, SSL 종료, HTTP/2 서비스를 자동으로 처리하며, TLS_DOMAIN 변수를 통해 다중 도메인까지 지원하여 사용자들은 복잡한 SSL 설정 없이 즉시 안전한 서비스를 이용할 수 있습니다.