→ Docker + GithubAction으로 CI / CD 파이프라인을 구축
→ Docker Hub에서 이미지를 내려받고, 서버를 돌리는데 약 30초 ~ 1분의 시간 소요 (DownTime)
→ DownTime을 없앤, 진정한 의미의 지속적 배포 환경을 구축하기 위해 무중단 배포 환경을 구축하기로 결정 (zero-downtime)
Rolling: 새 버전 등록시, 로드 밸런서가 일시적으로 트래픽을 멈췄다가, 배포 완료 후 다시 보내는 방식 → 여러 서버를 동시에 돌리는 큰 규모의 프로젝트에 적합하다고 판단
Canary: 롤링 배포와 마찬가지로, 점진적 배포 진행 → 대신 유저가 사용 가능 → 버그 체크 용이
Blue/Green: 한 서버에 구 버전을 돌리면서, 다른 서버에 신 버전을 빌드하는 방식 → 직관적이며, 간단하게 무중단 배포 사용 가능
⇒ 작은 규모의 프로젝트이며, 서버를 1대만 돌리고 있기 때문에, Nginx의 리버스 프록시 기능을 활용하여 무중단 배포를 하기로 결정
Apache와 같은 웹 서버 소프트웨어 (정적 파일 처리, 리버스 프록시, 캐싱, 로드 밸런싱, 미디어 스트리밍 지원)
→ 도메인으로 전달되는 요청(Request)을 Nginx의 리버스 프록시에서 캐치하여, 내부 포트로 전달
클라이언트→ NGINX 리버스프록시
`→ 웹 서버(8080 or 8081)`
→ 단일 서버에서 여러 개의 컨테이너를 하나의 서비스로 정의해 컨테이너 묶음 단위로 관리할 수 있는 작업 환경을 제공하는 관리 도구