최근, 많은 기업이 디지털 전환 가속화에 따른 경쟁우위를 확보하기 위해 고객의 비즈니스 요구를 빠르게 충족시키고 서비스의 가치를 높일 수 있는 방안을 모색하고 있다.
이에 따라 기존의 폭포수(Waterfall) 모델과 같은 전통적인 개발 방법론을 탈피하여 변화에 빠르게 대응할 수 있는 애자일(Agile) 방법론과 더불어 애플리케이션 아키텍처 패턴의 변화를 가져오고 있다.
본 포스팅에서는 애플리케이션 배포 및 테스트 패턴에 대한 설명, 장단점 및 고려해야 할 사항에 대해 설명한다.
폭포수 모델은 순차적인 소프트웨어 개발 프로세스로, 소프트웨어 요구사항 분석 단계부터 시작하여 설계, 구현, 테스트, 유지보수에 이르는 일련의 단계로 이루어져 있다. 주요 특징으로는 다음과 같다.
애자일 모델은 과거의 계획 중심의 정형화된 개발방법론에서 탈피하여, 일정한 주기를 가지고 끊임없이 프로토타입을 제작하고 고객의 요구사항을 추가/수정하는 방법론을 말한다.
주요 특징으로는 다음과 같다. (feat. 애자일 4대 가치)
"개인과 상호작용"
을"작동하는 소프트웨어"
를“고객과의 협력”
을"변화에 대응하기"
를기존의 대부분의 웹 기반 애플리케이션은 모놀리식(Monolithic) 아키텍처로 구축되었다.
모놀리식(Monolithic) 아키텍처에서는 하나의 애플리케이션 내 모든 로직이 포함되어 있으며, 단일 패키지로 배포하게 된다. 개발 환경이 단순하고 테스트가 용이하다는 장점을 가지고 있다.
하지만, 이러한 모놀리식 아키텍처에서는 다음과 같은 문제에 직면하게 된다.
마이크로서비스는 기존의 모놀리식 아키텍처에서의 문제에 대한 대안으로 나온 애플리케이션 구축 패턴으로, 애플리케이션 기능(서비스)을 작은 단위로 분리하는 방식이다.
실행 중인 애플리케이션을 변경하거나 새 버전으로 업그레이드를 진행해야 할 때, 비즈니스 목표에 따라 효율적인 배포 패턴을 고려할 수 있다.
원활한 서비스 제공을 위해 다음과 같은 사항을 고려해야 한다.
롤링 배포는 점진적으로 이전 버전의 애플리케이션을 신규 버전의 애플리케이션으로 교체해나가는 전략이다.
블루-그린 배포는 두 가지 운영 환경을 나란히 운영하여 로드밸런서를 통해 일제히 신규 버전으로 트래픽을 전환하여 배포하는 전략이다. (블루 : 운영 환경, 그린 : 테스트 환경)
카나리 배포는 옛날 광부들이 광산에 유독가스가 나오는 것을 알아내기 위해 가스에 민감한 '카나리아' 라는 새를 통해 가스 유출 위험을 감지했던 것에서 유래했다.
카나리 배포는 일부 서버에 대해 신규 버전을 배포 및 운영하여 문제 여부를 확인하며 단계적으로 트래픽을 전환하여 배포하는 전략이다.