스키마 변경이 있는 상황에서 무중단 배포는 어떻게 할 수 있을까?

대부분의 무중단 배포는 새로운 버전을 띄우고 Health Check를 수행 후에 문제가 없다면 트래픽을 새 버전으로 전환하는 방식을 차용한다.

때문에 스키마 변경이 있는 무중단 배포의 경우 어떻게 처리해야 할까에 대한 고민이 생겼다.

하지만 모든 스키마 변경에 대해서 고민할 필요는 없을 것 같고, 신경 써야하는 배포와 신경을 조금 덜 써도 되는 배포가 있다고 생각했다.

블루 그린, 카나리, 롤링 상관없이 무중단으로 배포하기 위해서는 먼저 새로운 버전의 애플리케이션을 실행시키고 순차적으로 트래픽을 전환한다.

이때 애플리케이션이 실행되려면 Schema를 변경해야만 하고, Schema를 변경하면 아직 트래픽을 받고 있는 이전 버전 애플리케이션에서는 문제가 발생할 수 밖에 없다.

신경써야하는 배포

1. 테이블 Column 삭제

테이블 Column를 삭제하는 경우, 새 버전이 배포됨과 동시에 테이블의 Column이 삭제된다.

때문에 배포 과정에서 새로운 버전의 애플리케이션으로 트래픽을 전환하는 텀 동안 기존 버전의 서버에도 트래픽이 전달되고 있을 것이다.

이때 삭제된 Column을 조회하는 요청이 들어온다면 기존 버전으로 전달되고 있는 유저의 요청에는 문제가 발생할 수 있다.

해결책

먼저 이 해결책은 개인적으로 생각한 해결책이며, 더 좋은 방식이 있을 수도 있다는 점을 알아주길 바란다.

테이블 Versioning