아름다운 배포

테크 기업, 꽤 알려진 스타트업들은 무중단 배포를 잘 해낸다.
우리 회사도 무중단 배포를 잘 해내기 위해 여러 구성을 해두었지만, 언제나 중단이 발생한다.

작은 이슈가 변경될 때는 문제가 없다.
DB의 스키마가 변경되거나, API 스펙이 변경될 때 문제가 발생한다.
롤링업데이트 특성상, 변경이 되더라도 그 이전 버전에 대한 기능이 제공되어야 하는데 이런 부분이 반영되지 않은 레거시 프로젝트들이 있다.
더군다나 django ORM에서 각 필드의 default값을 DB의 값이 아닌, ORM에서 값을 지정하는 형태를 가지고 있기 때문에 DB에 NOT NULL로 필드를 생성하고 롤링업데이트를 진행하면 이전 서버에서는 에러가 난다.
default 값을 넣어주는 코드가 배포되지 않은 서버이기 때문이다.

분명 내가 놓치고 있는 것들 투성이 일것이다.
django의 이슈도 해결할 수 있을 것이고, GCP의 롤링업데이트도 다른 방식이 존재할 것이다.

레거시 프로젝트의 배포 주기가 길거나 잘 없으니, 그저 미루게 되는 것이다.
그런데 이제 시스템이 중요한 시기가 다가온 것 같다.
다른 모든 고려사항을 떠나서 내가 손을 뗄 수 있냐가 가장 중요한 척도가 되었다.

이제 아름다운 배포를 만들어봐야겠다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다