본문 바로가기

Tomcat 병렬 배포로 무중단 버전 교체하기

조회 0 · 댓글 0
빅토르최빅토르최작성자2026년 9월 18일

운영 중 새 WAR를 올릴 때 기존 세션 사용자가 끊길까 봐 신경 쓰이는 상황에서 쓰는 팁입니다. Tomcat은 같은 context path에 여러 버전을 동시에 올려두는 병렬 배포(parallel deployment)를 지원합니다. WAR나 디렉터리 이름 끝에 ##버전을 붙이면 됩니다. context path는 그대로 유지되고 context name과 base name에만 ## 뒤 버전 식별자가 붙습니다.

foo##001.war   ->  /foo (버전 001)
foo##002.war   ->  /foo (버전 002)
ROOT##002.war  ->  / (루트 앱)

요청 라우팅 규칙은 이렇습니다. 세션 정보가 없으면 최신 버전으로, 세션 정보가 있으면 각 버전의 세션 매니저를 확인해 매칭되는 버전으로, 세션은 있는데 매칭이 안 되면 최신 버전으로 보냅니다. 즉 기존 사용자는 쓰던 버전에 그대로 남고 신규 요청만 새 버전으로 넘어가는 식입니다. 버전 문자열은 String으로 비교하니 foo##002가 foo##011보다 앞이 되도록 zero padding을 권장합니다.

안 쓰이는 옛 버전을 자동 정리하려면 Host의 undeployOldVersions를 true로 두면 됩니다. 세션이 다 빠져 더 이상 쓰이지 않는 옛 버전을 자동 언디플로이합니다. 단 이 속성은 autoDeploy가 true일 때만 동작하고 기본값은 false라, 켜지 않으면 옛 WAR는 수동으로 지워줘야 합니다.

🔗 https://tomcat.apache.org/tomcat-11.0-doc/config/context.html

🔗 https://tomcat.apache.org/tomcat-11.0-doc/config/host.html

로그인 후 답글을 남길 수 있습니다.