애플리케이션 배포 전략 (Deployment Strategy)

woodonggyu·2021년 7월 31일
2

들어가기 전

최근, 많은 기업이 디지털 전환 가속화에 따른 경쟁우위를 확보하기 위해 고객의 비즈니스 요구를 빠르게 충족시키고 서비스의 가치를 높일 수 있는 방안을 모색하고 있다.

이에 따라 기존의 폭포수(Waterfall) 모델과 같은 전통적인 개발 방법론을 탈피하여 변화에 빠르게 대응할 수 있는 애자일(Agile) 방법론과 더불어 애플리케이션 아키텍처 패턴의 변화를 가져오고 있다.

본 포스팅에서는 애플리케이션 배포 및 테스트 패턴에 대한 설명, 장단점 및 고려해야 할 사항에 대해 설명한다.


폭포수 모델과 애자일 모델

폭포수(Waterfall) 모델

폭포수 모델은 순차적인 소프트웨어 개발 프로세스로, 소프트웨어 요구사항 분석 단계부터 시작하여 설계, 구현, 테스트, 유지보수에 이르는 일련의 단계로 이루어져 있다. 주요 특징으로는 다음과 같다.

  • 적용 사례가 많아 기술적 위험도가 낮다.
  • 진행 단계 별 산출물(문서)이 확실하여 프로젝트 관리가 용이하다.
  • 전체 과정이 소프트웨어 개발 생명 주기와 동일하여 이해하기 쉽다.
  • 요구사항이 명확한 프로젝트에 적합하다.

애자일(Agile) 모델

애자일 모델은 과거의 계획 중심의 정형화된 개발방법론에서 탈피하여, 일정한 주기를 가지고 끊임없이 프로토타입을 제작하고 고객의 요구사항을 추가/수정하는 방법론을 말한다.

주요 특징으로는 다음과 같다. (feat. 애자일 4대 가치)

  • 공정과 도구보다 "개인과 상호작용"
  • 포괄적인 문서보다 "작동하는 소프트웨어"
  • 계약 협상보다 “고객과의 협력”
  • 계획을 따르기보다 "변화에 대응하기"


마이크로서비스 아키텍처 (MSA, Microservice Architecture)

What are microservices?

기존의 대부분의 웹 기반 애플리케이션은 모놀리식(Monolithic) 아키텍처로 구축되었다.

모놀리식(Monolithic) 아키텍처에서는 하나의 애플리케이션 내 모든 로직이 포함되어 있으며, 단일 패키지로 배포하게 된다. 개발 환경이 단순하고 테스트가 용이하다는 장점을 가지고 있다.

하지만, 이러한 모놀리식 아키텍처에서는 다음과 같은 문제에 직면하게 된다.

  • 애플리케이션 구동 시간, 빌드 및 배포 시간 증가
  • 작은 단위의 기능 추가/수정에도 전체 테스트 및 빌드 배포 과정 필요
  • 유지보수의 어려움
  • 일부 기능의 장애가 전체 시스템에 영향도 발생
  • 특정 기술, 언어 및 프레임워크에 종속

마이크로서비스는 기존의 모놀리식 아키텍처에서의 문제에 대한 대안으로 나온 애플리케이션 구축 패턴으로, 애플리케이션 기능(서비스)을 작은 단위로 분리하는 방식이다.

  • 독립적으로 개발/구축 및 배포 가능
  • 스케일링을 통한 안전성 확보
  • 적합한 기술, 언어 및 프레임워크 구현 용이
  • 일부 기능의 장애가 전체 서비스에 큰 영향도 없음


애플리케이션 배포 전략

실행 중인 애플리케이션을 변경하거나 새 버전으로 업그레이드를 진행해야 할 때, 비즈니스 목표에 따라 효율적인 배포 패턴을 고려할 수 있다.

원활한 서비스 제공을 위해 다음과 같은 사항을 고려해야 한다.

  • 애플리케이션 다운타임 최소화 (무중단 배포)
  • 사용자 영향을 최소화하면서 이슈 관리 및 해결 방안
  • 배포 실패에 따른 롤백 방안

롤링 배포

롤링 배포는 점진적으로 이전 버전의 애플리케이션을 신규 버전의 애플리케이션으로 교체해나가는 전략이다.

주요이점

  • 무중단 배포
    - 배포 대상을 점진적으로 업데이트한다.
  • 배포 위험 감소
    - 신규 버전의 불안정성이 일부 사용자에게만 영향을 미친다.

고려사항

  • 느린 롤백
    - 배포와 동일하게 점진적으로 롤백한다.
  • 이전 버전과의 호환성
    - 구 버전과 신 버전이 동시 운영되는 시간이 존재하므로, 호환성을 고려해야한다.
  • 세션 유지
    - 서비스 이용 중인 사용자 세션을 유지할 수 있도록 구성해야 한다.


블루-그린 배포

블루-그린 배포는 두 가지 운영 환경을 나란히 운영하여 로드밸런서를 통해 일제히 신규 버전으로 트래픽을 전환하여 배포하는 전략이다. (블루 : 운영 환경, 그린 : 테스트 환경)

주요이점

  • 무중단 배포
    - 다운타임 없이 신속하게 컷오버할 수 있다.
  • 테스트 및 롤백 용이성
    - 로드밸런서의 트래픽을 전환하여 즉시 롤백할 수 있다.

고려사항

  • 비용 및 운영 오버헤드 증가
    - 동일한 인프라셋을 운영해야 하므로 비용 및 운영 오버헤드 증가한다.
  • 컷오버
    - 기존 트랜잭션 및 세션에서 적절한 연결 드레이닝을 허용


카나리 배포

카나리 배포는 옛날 광부들이 광산에 유독가스가 나오는 것을 알아내기 위해 가스에 민감한 '카나리아' 라는 새를 통해 가스 유출 위험을 감지했던 것에서 유래했다.

카나리 배포는 일부 서버에 대해 신규 버전을 배포 및 운영하여 문제 여부를 확인하며 단계적으로 트래픽을 전환하여 배포하는 전략이다.

주요이점

  • 무중단 배포
    - 다운타임 없이 신규 버전의 애플리케이션으로 트래픽 라우팅할 수 있다.
  • 실시간 서비스 테스트
    - 실시간 운영 환경에서의 신규 버전의 서비스를 검증할 수 있다.
  • 빠른 롤백
    - 사용자 트래픽을 전환을 통해 빠르게 롤백할 수 있다.

고려사항

  • 느린 출시
    - 점진적 출시마다 적절한 기간 동안 모니터링이 필요하므로 전체 출시가 지연될 수 있다.
  • 모니터링 시스템 구현 필요
    - 인프라 및 애플리케이션 모니터링 시스템 구현이 필요하다.

0개의 댓글