프로덕션 데이터베이스 설정하기
로컬 개발 동안 Backstage는 빠른 인메모리 데이터베이스인 SQLite를 사용해요. SQLite는 재시작 후에도 데이터를 유지하지 않으며 다중 인스턴스 배포용으로 설계되지 않았으므로, 프로덕션에는 전용 데이터베이스가 필요해요. 이 글을 끝내면 PostgreSQL을 Backstage 데이터베이스로 구성하게 될 거예요.
출처: 문서
본문
대상 독자: 관리자
요약
로컬 개발 동안 Backstage는 빠른 인메모리 데이터베이스인 SQLite를 사용해요. SQLite는 재시작 후에도 데이터를 유지하지 않으며 다중 인스턴스 배포용으로 설계되지 않았으므로, 프로덕션에는 전용 데이터베이스가 필요해요.
이 페이지가 끝나면 PostgreSQL을 Backstage 데이터베이스로 구성하게 될 거예요.
왜 PostgreSQL인가요?
PostgreSQL은 Backstage에 권장되는 프로덕션 데이터베이스예요. 동시 연결을 잘 처리하고, Backstage 플러그인이 사용하는 쿼리 패턴을 지원하며, 모든 주요 클라우드 프로바이더에서 관리형 서비스로 제공돼요.
PostgreSQL을 실행하는 몇 가지 옵션:
-
관리형 서비스: Amazon RDS, Google Cloud SQL, Azure Database for PostgreSQL 또는 유사한 서비스.
-
자체 호스팅: 컨테이너 또는 전용 서버에서 PostgreSQL 실행.
-
Kubernetes: Backstage와 함께 PostgreSQL 배포(시작하는 데 유용하지만, 프로덕션에는 관리형 서비스가 선호됨).
PostgreSQL을 사용하도록 Backstage 구성하기
app-config.production.yaml을 열고 데이터베이스 구성을 추가해요:
app-config.production.yaml
backend: database: client: pg connection: host: ${POSTGRES_HOST} port: ${POSTGRES_PORT} user: ${POSTGRES_USER} password: ${POSTGRES_PASSWORD}
${...} 구문은 환경 변수를 참조해서 구성 파일 밖에 시크릿을 둡니다. 배포 환경에서 이 변수들을 설정해요.
구성 파일에 데이터베이스 자격 증명을 하드코딩하지 마세요. 환경 변수나 배포 플랫폼이 제공하는 시크릿 관리자를 사용해요.
선택 사항: SSL 연결
데이터베이스 프로바이더가 SSL을 요구한다면(대부분의 관리형 서비스가 그렇음) SSL 구성을 추가해요:
app-config.production.yaml
backend: database: client: pg connection: host: ${POSTGRES_HOST} port: ${POSTGRES_PORT} user: ${POSTGRES_USER} password: ${POSTGRES_PASSWORD} ssl: require: true rejectUnauthorized: true
프로바이더가 사용자 지정 인증 기관을 사용한다면 CA 인증서 파일을 참조할 수 있어요:
ssl: ca: $file: /path/to/ca/server.crt
Backstage가 데이터베이스를 사용하는 방식
각 플러그인은 자체 격리된 데이터베이스 스키마를 가져요. 백엔드가 시작될 때 마이그레이션이 자동으로 실행되므로 수동 마이그레이션 단계를 실행할 필요가 없어요. 데이터베이스는 인스턴스 간의 상태와 작업 분배를 조정하는데, 이것이 나중에 수평 확장을 가능하게 만드는 요인이에요.
더 읽어보기
단계별 PostgreSQL 설치 지침과 클라우드별 설정 가이드는 데이터베이스 구성 가이드를 참고하세요.
다음 단계
데이터베이스가 준비되었으니, 다음 단계는 게스트 로그인을 실제 인증 프로바이더로 교체하는 거예요.
- 인증 구성하기