실리콘밸리의 유명 대기업들은 하루의 천 번 이상의 크고 작은 배포를 하며 시장과 고객의 비즈니스 요구에 빠르게 대응하고 있다. 하지만 건강하지 못한 아키텍쳐에서는 배포 자체가 개발자들로 하여금 두려움의 대상이 될 수 있다.
그렇기 때문에 배포는 위험을 최소화하고 안정적으로 수행해야 한다.
오늘은 효과적인 소프트웨어 배포 방법 중 무중단 배포 전략 아키텍쳐에 대해 알아보자.

무중단 배포는 서비스 장애와 배포에 대한 부담을 최소화하고자 운영 서버를 죽이지 않고 수정된 코드 및 소프트웨어를 밀어넣는 개념이다.
이는 로드밸런싱을 통해 연결된 두 개 이상의 인스턴스의 트래픽을 제어해 배포하는 방식이다.
이렇게 하기 위해선 운영에 띄워진 서비스에 영향을 주지 않도록 인스턴스와 로드밸러서의 다중화를 고려하는 고가용성 시스템 인프라가 구축될수록 보다 안정적인 배포가 가능하다.

롤링 배포 전략은 사용 중인 인스턴스 내에서 점진적인 교체가 이뤄지는 방식이다.
쿠버네티스를 예로 들자면, 하나의 pod을 로드밸런서가 라우팅하지 않도록 하고서 신규 프로젝트의 것으로 갈아끼우는 방식이다.
이를 반복해 모든 인스턴스에 신규 애플리케이션을 배포하는 방식이다.
롤링의 장점으로는 롤백이 편리하고 하나의 서버 리소스만으로 배포가 가능하다는 점이다.
단점으로는, 점진적으로 변경되면서 기존 애플리케이션과 신규 애플리케이션이 공존하며 생기는 호환성 문제, 그리고 신규 버전을 배포할 때 인스턴스가 감소하기 때문에 서비스 처리 용량을 고려해야 하는 어려움이 있다.

블루가 기존, 그린이 신규 버전의 애플리케이션을 뜻한다.
운영 서버의 신규 버전으로 인스턴스를 구성한 뒤 로드밸런서를 통해 신버전으로 모든 트래픽을 한번에 전환하는 방식이다.
이 역시 빠른 롤백이 가능하고 하나의 버전만 존재하기에 호환성 문제가 생길 일이 없을 것이다. 또한 배포 성공 이후에도 기존 버전을 활용해 다음 배포에 활용할 수 있다는 장점이 있다.
반면 시스템 서버 리소스가 두 배로 필요하기 때문에 쉽게 적용하기 힘들다.

옛날 광부들이 유독 가스에 민감한 카나리아 새를 이용해 가스 누출 위험을 감지했던 것에서 유래한 것으로 잠재적 문제 상황을 미리 발견하기 위한 방식이다.
롤링과 비슷한 개념인데, 특정 사용자 혹은 비율을 기준으로 구분해 일부의 서버만 신규 버전으로 테스트해 볼 수 있다. A/B 테스트와 합쳐서 많이 사용되는 배포 방식이다.
이는 롤링과 블루그린의 장점을 섞어놓았으면서도 각각의 단점인 버전 관리 필요성, 비용 문제라는 단점 역시 섞여있다.