21 / 21
블루그린 배포 — 새 버전을 옆에 띄우고 nginx upstream 전환, 무중단과 롤백
이전 노트에서 git push가 배포의 전부가 되었다. 테스트가 돌고, 이미지가 GHCR에 올라가고, 호스트가 그것을 받아 올린다. 그런데 올리는 순간은 아직 거칠다. docker compose up -d는 바뀐 서비스의 컨테이너를 지우고 새로 만든다. 스프링이 다시 뜨는 10~20초 동안 로그인과 재발급이 실패하고, Next.js가 교체되는 몇 초는 nginx가 502 Bad Gateway를 낸다. 새 버전에 문제가 있어도 이미 옛 버전은 사라진 뒤라서, 되돌리려면 또 한 번 그 끊김을 겪어야 한다.
이번 노트는 그 두 가지, 끊김과 되돌리기를 해결한다. 방법은 블루그린 배포다. 프론트엔드와 백엔드를 두 벌(blue, green) 두고 한 벌만 트래픽을 받는다. 새 버전은 쉬고 있는 벌에 띄워 먼저 확인하고, 통과하면 nginx가 보내는 곳을 바꾼다. 통과하지 못하면 바꾸지 않는다. 그게 롤백이다.