Offcanvas

개발자 / 데브옵스 / 애플리케이션

지속적 배포의 핵심 전략··· ‘카나리 릴리즈’ 살펴보기

2021.12.30 Isaac Sacolick  |  InfoWorld
소규모 사용자 그룹이 새로운 기능 및 서비스를 사용할 수 있도록 하는 것은 위험을 줄이는 좋은 개발 전략이다. 

클라우드와 마이크로서비스 이전 시대의 ‘개발, 테스트, 프로덕션, 재해 복구(DR)’ 배포 패러다임을 기억하는가? 당시에는 인프라를 구매하고, 구성하며, 유지관리하는 비용이 많이 들고 복잡했기 때문에 데이터센터 운영팀은 더 많은 환경과 배포 유연성을 확보하는 데 거의 동의하지 않았다. 

오늘날 데브옵스 조직은 지속적 통합/지속적 제공(CI/CD)을 사용하여 딜리버리를 자동화하고, 코드형 인프라(Infrastructure as Code; IaC)를 활용해 인프라를 구성하며, 쿠버네티스를 통해 환경을 컨테이너화한다. 또 지속적인 테스트로 품질을 높이고, AI옵스(AIops)를 사용하여 모니터링 및 관찰 가능성을 중앙집중화한다. 이러한 관행 덕분에 배포 빈도를 높이는 동시에 변경으로 인한 보안, 성능, 안정성 위험을 최소화할 수 있다.

하지만 변경 사항과 액세스 권한에 따라 위험을 줄이고 릴리즈를 제어하고자 한다면 애플리케이션 또는 배포를 구성하고 관리하는 추가적인 기법이 필요하다. 
 
ⓒGetty Images

릴리즈 파이프라인에는 유연한 관리 및 배포 옵션이 필요하다
배포를 제어하는 한 가지 방법은 기능 플래그를 활용하여 사용자별로 기능 액세스를 전환, A/B 테스트, 세분화하는 것이다. 데브옵스 팀은 기능 플래그를 사용하여 앱을 클라우드로 이동하거나, 단일 애플리케이션을 마이크로서비스에 리팩토링할 때 새롭게 개발한 기능을 검증할 수 있다.

기능 플래그는 앱 또는 마이크로서비스의 기능을 확인할 수 있는 사람을 통제하려는 개발팀과 제품 관리자에 유용하다. 하지만 때때로 데브옵스 또는 IT 운영팀은 배포를 관리하고 프로덕션 환경에 투입된 애플리케이션의 여러 버전을 관리할 수 있는 유연성이 필요하다. 몇 가지 예는 다음과 같다. 

• 운영체제, 데이터베이스, 미들웨어 등의 중요한 시스템 구성 요소를 패치하거나 업그레이드할 때 앱 및 마이크로서비스를 검증하는 것
• 앱 및 서비스를 여러 클라우드에 배포할 때 이를 테스트하는 것
• 새 버전의 머신러닝 모델을 릴리즈하고 사용자 경험을 모니터링하는 것


마이크로서비스와 클라우드 네이티브 애플리케이션을 지원하는 다양한 배포 전략이 있다. 클라우드용 앱 개발 초기에는 2가지 프로덕션 환경이 있는 블루-그린(Blue/Green) 배포를 사용했다. 배포를 블루 환경으로 이동한 다음, 로드 밸런서에서 컷오버를 제어해 최신 배포가 있는 블루 환경을 라이브로 만들고 새 그린 환경을 백업 환경으로 전환했다.

이 방식은 배포 중 다운타임 최소화에 효과적이었으며, 필요한 경우 롤백 옵션을 제공했다. 그러나 블루 환경을 위한 전용 인프라가 필요했기 때문에 비효율적이었다.

‘카나리(Canary)’ 배포란?
블루-그린 배포의 발전에는 카나리 배포 또는 릴리즈가 포함돼 있다. 하네스(Harness)의 수석 제품 관리자 로한 굽타에 따르면 카나리 릴리즈는 애플리케이션 또는 서비스를 일부 사용자에게 점진적으로 공개하고, 새 소프트웨어 아티팩트를 프로덕션 환경에 배포하는 범위, 영향, 위험을 줄이는 배포 전략이다. 

이어서 그는 “대상 환경의 모든 인프라는 작은 단계(예: 트래픽 부하 2%, 25%, 75%, 100%씩 증가)로 업데이트되며, 이러한 제어로 카나리 릴리즈는 다른 모든 배포 전략에 비해 위험이 가장 낮은 접근방식이다”라고 덧붙였다.

가상화 및 클라우드 기술을 사용하여 카나리 배포를 구현하는 방법에는 여러 가지가 있다. 그중 스피내커(Spinnaker)는 이 기능을 지원하는 오픈소스 도구다. 일반적인 접근방식에는 프로덕션 환경, 더 작은 기준 프로덕션 복제본, 새 배포를 위한 카나리 환경이 있다. 지능형 라우팅은 이러한 환경의 트래픽을 동적으로 제어하고, 규칙은 새 카나리 배포가 허용 기준을 충족하는지 여부와 시기를 결정한다. 

카나리 배포는 CI/CD 파이프라인이 프로덕션 환경 배포를 트리거하는 지속적 배포를 달성하는 접근방식이기도 하다. 지속적 배포에는 탄탄한 소프트웨어 개발 프로세스, 강력한 관찰 가능성 사례, 안정적인 CI/CD 파이프라인, 탄탄한 테스트 자동화 기능, 포괄적인 AI옵스 모니터링, 지능형 프로덕션 배포 방법론이 필요하며, 여기에는 카나리 배포가 적합하다. 

데브옵스 팀이 카나리 배포를 사용하는 방법
런치다클리(LaunchDarkly)의 공동설립자 겸 CTO 존 코듀말은 데브옵스 팀이 카나리 배포를 통해 기능 플래그 지정을 사용하는 방법을 언급하면서, “카나리 배포는 광범위한 릴리즈에 앞서 제한된 사용자에게만 새 소프트웨어 기능을 제공한다. 그 목적은 전체적인 위험을 줄이면서 사용자에게 더 나은 소프트웨어 경험을 제공하는 것이다. 광범위한 릴리즈 검증을 제공하는 데 유용하며, 애플리케이션 계층에 도달하여 개별 변경 사항을 분리할 수 있는 기능 플래그와 함께 이상적으로 작동한다”라고 설명했다. 

굽타는 카나리 배포를 사용하는 주된 이유가 여러 프로덕션 릴리즈의 결과를 비교하기 위해서라고 말했다. 그는 “카나리 배포를 통해 조직은 실제 사용자와 사용 사례를 활용해 프로덕션 환경에서 테스트하고, 서로 다른 서비스 버전을 나란히 비교할 수 있다. 2개의 프로덕션 환경이 필요하지 않기 때문에 블루-그린 배포보다 더 저렴하다. 이전 버전의 애플리케이션으로 롤백을 트리거하는 것도 빠르고 안전하다”라고 전했다.

하지만 카나리 릴리즈에는 솔루션 설계 및 고급 스크립트가 필요하다고 굽타는 언급했다. 그는 “카나리 배포의 단점은 프로덕션 환경에서의 테스트와 이러한 배포 패턴을 구현하는 데 전문 지식이 필요하다는 것이다. 카나리 릴리즈 스크립트는 수동 확인 및 테스트에 시간이 걸리기 때문에 복잡하고, 프로덕션 환경에서의 테스트에 필요한 모니터링 및 계측에도 추가적인 리소스가 필요할 수 있다. 적절한 CD 솔루션이라면 이 문제를 해결할 수 있는 템플릿과 자동화를 제공해야 한다”라고 설명했다.

안정성 및 확장성 요건이 낮은 앱과 마이크로서비스를 개발 중인 경우라면 카나리 배포가 과분할 수 있다. 그러나 대용량 미션 크리티컬 고객 경험 및 종속 마이크로서비스를 위한 지속적인 배포를 추구하는 데브옵스 팀에게는 카나리 릴리즈가 획기적인 데브옵스 방식이 될 수 있다.

아모리(Armory)의 사장 겸 COO 마가렛 프랜시스도 이에 동의하면서, “카나리 릴리즈는 특히 확장성 측면에서 중요하다. 비즈니스가 서비스의 가용성, 성능, 예측 가능성에 좌우되는 경우 프로덕션 환경에 코드를 점진적으로 딜리버리하면 서비스의 성능을 보장하는 한편 혁신도 제공할 수 있다”라고 말했다. 

이어서 그는 “(예를 들어) 팀이 2명으로 구성돼 있고, 한 달에 1번 릴리즈를 한다면 이는 그렇게 중요하지 않다. 하지만 디지털 서비스를 활용하고 수백 명의 개발자가 매일 또는 시간별로 릴리즈를 수행하는 조직은 카나리 유형 릴리즈 프로세스를 우선순위에 둬야 한다. 이러한 조직은 서비스 안정성을 위해 혁신 속도를 희생할 여유가 없다. 그 반대의 경우도 마찬가지다”라고 덧붙였다. 

속도, 확장성, 안정성이 중요하다면 ‘지속적 배포(CD)’를 목표로 하라
앞서 언급한 것처럼 지속적 배포는 높은 기준이며, (이를 위해) 데브옵스 팀은 몇 가지 성숙한 테스트, 딜리버리 자동화, 모니터링 관행을 확보해야 한다. 많은 비즈니스, 애플리케이션, 서비스는 지속적 제공으로도 충분할 수 있으며, 지속적 배포 역량을 추구하기에는 비용이 너무 많이 들거나 기술적으로 복잡할 수 있다.

하지만 대규모 앱과 마이크로서비스를 개발하고자 한다면 그리고 빈번한 릴리즈가 목표라면 카나리 릴리즈는 고성능의 안정적인 릴리즈를 배포하는 핵심 전략이라고 할 수 있다. ciokr@idg.co.kr
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.