1. 분리 이유
- 개발 중 발생할 수 있는 버그나 예기치 않은 오류가 실사용 중인 서비스에 영향을 주지 않도록 격리
- 개발 데이터(테스트용 더미 데이터)가 실제 사용자 데이터에 혼입되는 것을 방지
- DB 커넥션, 외부 연동 서비스 설정을 각각 분리하여 관리
2. 분리 전략
2.1 설정(Configuration) 분리
| 환경 | backend | frontend |
|---|---|---|
| dev | DB: 로컬 YEOL_POST <br> DB 계정: root <br> origin: http://localhost:8080 | origin: http://localhost:3000 <br> api origin: http://localhost:8080 |
| prod | DB: YEOL_POST <br> DB 계정: user <br> origin: https://api.yeo-li.com | origin: https://blog.yeo-li.com <br> api origin: https://api.yeo-li.com |
2.2 데이터베이스 분리
- 스키마/인스턴스 분리
- Dev에서는 ddl-auto: update 혹은 create
- Prod에서는 ddl-auto: validate <br><br>
- 마이그레이션 도구
- Liquibase/Flyway로 마이그레이션 스크립트 관리
- Dev 브랜치 머지 시 자동 마이그, Prod는 수동 혹은 검증 후 진행
2.3 CI/CD 파이프라인 분리
- 브랜치 전략
- main → Prod 배포
- develop → Dev 배포
- 기능별 feature/* → develop로 PR <br><br>
- 배포 스테이지
- Build & Test (양쪽 공통)
- Dev Deploy (develop 브랜치 머지 시 자동)
- Prod Deploy (main 브랜치 태그 혹은 수동 승인) <br><br>
- 환경별 검증 단계
- Dev: 통합테스트, 스모크 테스트
- Prod: 헬스체크, 카나리아 배포, 롤백 스크립트 준비