WEBBOOK CHAPTER

WAR 배포, 밤에 깨지 않게: 19장 WAR 배포 롤백은 파일 하나의 문제가 아니다

19장 WAR 배포 롤백은 파일 하나의 문제가 아니다

애플리케이션 rollback은 이전 WAR를 되놓는 것으로 끝나지 않을 수 있다. DB schema, 메시지 형식, cache, background job, session이 새 버전과 함께 바뀐다.

안전한 schema 변경은 expand-contract 순서를 따른다.

  1. 새·구 버전이 함께 쓸 수 있는 column/table을 추가한다.
  2. 새 애플리케이션을 배포하고 데이터를 채운다.
  3. 이전 버전이 없어졌음을 확인한다.
  4. 별도 배포에서 오래된 구조를 제거한다.

배포 직전에 destructive migration을 실행하면 WAR만 rollback해도 이전 앱이 뜨지 않는다. migration은 별도 artifact와 승인 단계로 다루고, rollback 가능 시점을 명시한다.

책의 sandbox 배포를 실행한다.


npm run build:war
npm run lab:deploy
readlink build/server-sandbox/current
cat build/server-sandbox/current/release.json

current는 1.0.0, previous는 0.9.0을 가리킨다. 실제 Tomcat webapps는 symlink 갱신을 항상 같은 방식으로 감지하지 않을 수 있다. 이 패턴은 release 보관과 원자적 승격 개념을 훈련하기 위한 것이다. 운영에서는 appBase 정책, Context docBase, blue/green 또는 배포 도구의 공식 원자적 전환 기능을 사용한다.