배경

→ Docker + GithubAction으로 CI / CD 파이프라인을 구축

→ Docker Hub에서 이미지를 내려받고, 서버를 돌리는데 약 30초 ~ 1분의 시간 소요 (DownTime)

Untitled

→ DownTime을 없앤, 진정한 의미의 지속적 배포 환경을 구축하기 위해 무중단 배포 환경을 구축하기로 결정 (zero-downtime)

방법 모색

⇒ 작은 규모의 프로젝트이며, 서버를 1대만 돌리고 있기 때문에, Nginx의 리버스 프록시 기능을 활용하여 무중단 배포를 하기로 결정

용어 정리

Nginx

Untitled

Apache와 같은 웹 서버 소프트웨어 (정적 파일 처리, 리버스 프록시, 캐싱, 로드 밸런싱, 미디어 스트리밍 지원)

웹 서버 정리

NGINX 리버스 프록시

→ 도메인으로 전달되는 요청(Request)을 Nginx의 리버스 프록시에서 캐치하여, 내부 포트로 전달

클라이언트→ NGINX 리버스프록시

                   `→ 웹 서버(8080 or 8081)`

Untitled

Docker-compose

Untitled

→ 단일 서버에서 여러 개의 컨테이너를 하나의 서비스로 정의해 컨테이너 묶음 단위로 관리할 수 있는 작업 환경을 제공하는 관리 도구

무중단 배포 계획

1. 깃허브 레포지토리 dev, main 브랜치 Push / PR merge