WEBBOOK CHAPTER

WAR 배포, 밤에 깨지 않게: 11장 병렬 버전과 reverse proxy로 중단 시간을 줄인다

11장 병렬 버전과 reverse proxy로 중단 시간을 줄인다

Tomcat은 WAR 파일명의 ## 뒤를 버전으로 해석하는 병렬 배포 방식을 지원한다. 예를 들어 releaseportal##001.warreleaseportal##002.war는 같은 context path의 서로 다른 버전이 된다. 새 세션은 최신 버전으로, 기존 세션은 이전 버전에 남을 수 있다.

병렬 배포는 마법의 무중단이 아니다. 세션 직렬화, 외부 session store, WebSocket, 백그라운드 작업, DB schema 호환성을 검토해야 한다. 이전 버전이 새 schema에서 계속 동작해야 한다.

더 명확한 방식은 두 Tomcat 인스턴스 또는 두 upstream을 blue/green으로 운영하는 것이다.


upstream releaseportal_active {
    server 127.0.0.1:8081;
    # 검증 후 8082로 변경하거나 upstream 관리 기능 사용
}

location /releaseportal/ {
    proxy_pass http://releaseportal_active;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

새 인스턴스에 직접 health와 smoke를 실행하고, 설정 테스트 후 reload로 upstream을 전환한다. 실패하면 이전 upstream으로 되돌린다. reload 전에 현재 설정과 활성 버전을 기록한다.