Deployment

Jaeminst·2022년 3월 29일
0
post-thumbnail

배포 전략

참고 사이트:


인플레이스 배포

인플레이스 배포는 사용중인 환경에 새로운 변경사항이 포함된 어플리케이션만 반영하는 방법입니다.

  • 'AWS CodeDeploy EC2/온프레미스' 에서는 롤링배포와 혼합해서 사용됨.

배포 그룹의 각 환경 (인스턴스) 에 있는 어플리케이션을 일시정지한 후, 최신 상태의 어플리케이션의 변경 사항이 설치되면 새 버전의 앱을 실행하는 형식으로 이루어집니다. 로드 밸런서를 사용하면 각 인스턴스가 배포중이더라도 등록을 해제할 수 있으며, 배포 완료 후에 이전 버전으로 복원도 가능합니다.


블루/그린 배포

블루/그린 배포는 구 버전을 운영하면서 신 버전의 환경을 구축하고 테스트 후 서비스를 점진적으로 전환하는 배포.

기존에 운영 되던 환경을 중단시키거나 새로 오픈하는 컷오버나, 시스템을 이용할 수 없는 다운타임을 가지지 않고도 두 버전의 환경을 구축하면서 가지는 장점과 단점에 대하여 알아보자.

장점

  • 새 버전으로 사용자 트래픽을 이전하면서 문제가 생길 시, 구 버전으로 롤백이 용이하다.
    (인플레이스 배포보다 빠르다.)
  • 거의 동일하게 구성된 환경을 구축해놓으면 문제가 생길 시 가동 중단 시기를 최소화 할 수 있다.
  • 사용하지 않는 환경은 백업 또는 테스트 서버로 활용할 수 있다.

단점

  • 블루/그린 두 가지 환경을 구축해야 하기 때문에 시스템 자원을 두 배로 필요로 한다.

추가적으로, 트래픽 전환 방식은 All-at-Once만 있는게 아니라 몇 번에 나누어 전환할 수도 있기 때문에 한 번에 전환하거나 나누어 전환하는 것은 서비스 환경에 맞추어 사용할 수 있다.


롤링 배포

롤링 배포는 애플리케이션이 실행 중인 인스턴스를 갖춘 환경에서 정해진 수만큼의 서버를 새로운 버전의 애플리케이션으로 점진적으로 교체하는 배포.

  • Elastic Beanstalk
  • CodeDeploy (기본적으로 롤링 배포를 하도록 설정되어있다.)
  • Lambda
  • ECS 롤링 업데이트

새로운 버전을 배포하기 위하여 구 버전과 같은 시스템 자원을 요구하는 환경을 새로 구축하는 블루/그린 배포에 비해 일부 애플리케이션을 점진적으로 교체하는 롤링 배포의 장/단점을 알아보자.

장점

  • 가용 자원이 한정적일 경우 사용될 수 있는 유용한 방법이다.
  • 일부 인스턴스만 종료되므로 서비스의 다운타임을 가지지 않고 배포할 수 있다.

단점

  • 배포가 진행중에는 서비스내에서 구버전과 신버전이 공존하기 때문에 호환성 문제를 염두에 두고 대응방안을 준비해야 한다.
  • 제한된 자원 내에서 사용할 수 있지만, 구 버전의 인스턴스를 종료하고 신 버전의 인스턴스를 생성하는 과정에서 서버부하를 서비스에 부족하지 않도록 미리 고려해야 한다.

Elastic Beanstalk

추가적으로, Elastic Beanstalk에서 롤링 배포는 추가 배치를 사용할 시 새로운 버전의 인스턴스를 배포 후 즉시 가동시키면서 구 버전을 종료하고 신 버전을 배포하는 과정에서 시스템 자원을 일정하게 유지할 수 있어 서버 부하에 대응할 수 있게 도와준다.


카나리 배포

카나리아 배포는 가동 중인 서버의 일부 인스턴스만 신 버전의 애플리케이션으로 교체하면서 프로덕션 환경에서 새로운 소프트웨어 버전을 도입함으로써 생기는 위험을 줄여주는 기술이다.
이 처럼, 광부들이 광산으로 들어갈 때 새장에 카나리아를 넣어 가져가서 유독가스가 누출되면 광부들이 중독 되기 전에 카나리아가 먼적 죽게 된다는 것에서 유래되었다.

  • CodeDeploy 배포 설정 타입의 종류 중 하나로 분류되어 있다.

일부 트래픽을 신 버전의 환경에 분산 배포하면서 문제가 발견되지 않으면 신 버전의 환경으로 점차 트래픽을 이동시키거나 다시 구 버전으로 되돌릴 수 있다.

다른 배포방식과 달리 카나리 배포가 가지는 장점과 단점에 대하여 알아보자.

장점

  • 특정 서버에만 배포함으로써 신 버전의 오류 및 성능을 모든 서버에 배포하기전에 미리 모니터링할 수 있다.
  • 여러가지 방법으로 신버전을 체험하는 사용자를 분류할 수 있다.

단점

  • 동시에 여러 개의 소프트웨어 버전을 관리해야 한다.

블루/그린 배포와 차이점

블루-그린 배포는 다운타임 없이 프로덕션 환경에서 앱을 안전하게 업데이트하기 위한 릴리스 전략으로 새 버전의 검증 테스트를 거치며 안전해지면 구 버전에서 새 버전으로 이동하고 구 버전은 대기 상태로 유지된다.
새로운 버전에 문제가 있는 경우 사용자는 구 버전으로 이동되며 눈치채지 못하는 사이 원활한 전환과 최대 가동 시간을 보장한다.
따라서 블루-그린 배포는 전체적인 트래픽이 이동하지만, 카나리아 배포는 특정 사용자를 표적으로 업데이트 하기 때문에 일부 트래픽만 다른 환경으로 나뉜다는 차이가 있다.


Canary release 개념

카나리아 릴리스와 카나리아 배포는 본질적으로 같은 것으로 팀에서 카나리아 릴리스라고 부르거나 엔지니어 리더가 카나리아 배포를 선호한다는 것은 같은 개념이다.
이름을 무엇으로 지정하든 궁극적인 목적 은 문제를 발견하고 이상이 생기면 롤백하는 등, 더 나은 사용자 경험을 제공 하기 위해서다.

A/B Testing

개발한 기능이 의도한 방향으로 사용되는지, 신버전의 사용자경험 등을 테스트 한다.
웹 사이트를 예로 들면, 하나의 디자인 요소에 대해 두 가지 버전을 무작위로 방문자에게 제공하여 상대적인 효용성을 측정하는 통계로 가설 검증에 사용한다.


참고 영상

AWS Innovate 2018

  • 다양한 배포 기법과 AWS에서 구축하는 CI/CD 파이프라인
    • 안효빈 솔루션즈 아키텍트, AWS

https://www.youtube.com/watch?v=T5SyIGKZ0x4

profile
DevOps !

0개의 댓글