예전에는 수 개월(혹은 수 년)에 한 번씩 서비스를 릴리즈 했었지만, 최근에는 서비스를 더 작게 만들고(마이크로서비스) 더 자주 배포(Deployment) 하는 방식으로 변화하고 있다. 이러한 트렌드에 맞춰 서비스 배포 전략도 다양하게 개발되고 발전되어 왔다.


본 포스트에서는 가장 대표적인 배포 전략 Rolling, Blue/Green, Canary 기법에 대해 알아보겠다.



1. Rolling

Rolling 배포는 서버를 한 대씩 구 버전에서 새 버전으로 교체해가는 전략이다. 서비스 중인 서버 한 대를 제외시키고 그 자리에 새 버전의 서버를 추가한다. 이렇게 구 버전에서 새 버전으로 트래픽을 점진적으로 전환한다. 이와 같은 방식은 서버 수의 제약이 있을 경우 유용하나 배포 중 인스턴스의 수가 감소 되므로 서버 처리 용량을 미리 고려해야 한다.




2. Blue/Green

Blue/Green 배포는 구 버전에서 새 버전으로 일제히 전환하는 전략이다. 구 버전의 서버와 새 버전의 서버들을 동시에 나란히 구성하고 배포 시점이 되면 트래픽을 일제히 전환시킨다. 하나의 버전만 프로덕션 되므로 버전 관리 문제를 방지할 수 있고, 또한 빠른 롤백이 가능하다. 또 다른 장점으로 운영 환경에 영향을 주지 않고 실제 서비스 환경으로 새 버전 테스트가 가능하다. 예를 들어 구 버전과 새 버전을 모두 구성하고 포트를 다르게 주거나 내부 트래픽일 경우 새 버전으로 접근하도록 설정하여 테스트를 진행해 볼 수 있다. 단, 시스템 자원이 두 배로 필요하고, 전체 플랫폼에 대한 테스트가 진행 되어야 한다.




3. Canary

'Canary'라는 용어의 어원을 알면 이해가 더 쉽다. Canary는 카나리아 라는 새를 일컫는 말인데, 이 새는 일산화탄소 및 유독가스에 매우 민감하다고 한다. 그래서 과거 광부들이 이 새를 옆에 두고 광산에서 일을 하다가 카나리아가 갑자기 죽게 되면 대피를 했다고 한다.

Canary 배포는 카나리아 새처럼 위험을 빠르게 감지할 수 있는 배포 기법이다. 구 버전의 서버와 새 버전의 서버들을 구성하고 일부 트래픽을 새 버전으로 분산하여 오류 여부를 판단한다. 이 기법으로 A/B 테스트도 가능한데, 오류율 및 성능 모니터링에 유용하다. 트래픽을 분산시킬 라우팅은 랜덤으로 할 수도 있고 사용자 프로필 등을 기반으로 분류할 수도 있다. 분산 후 결과에 따라 새 버전이 운영 환경을 대체할 수도 있고, 다시 구 버전으로 돌아가 수도 있다.





[참고]

https://www.slideshare.net/awskorea/ci-cd-pipleine-on-aws

https://dev.to/mostlyjason/intro-to-deployment-strategies-blue-green-canary-and-more-3a3

'IT기술 > DevOps' 카테고리의 다른 글

배포 전략: Rolling, Blue/Green, Canary  (0) 2019.03.12
CI/CD란 무엇인가?  (0) 2019.03.08

1. CI/CD 개념

  - 애플리케이션 개발 단계를 자동화하여 보다 짧은 주기로 배포하는 전략 또는 방법

  - 코드통합, 테스트, 릴리즈, 배포(Deployment) 등의 애플리케이션 라이프사이클 전체 과정을 자동화하고 이 과정을 모니터링 가능토록 하는 것. (연속된 과정을 "CI/CD 파이프라인" 이라고도 한다.)

  - 개발자가 아닌 사람도 쉽게 빌드, 배포를 가능하도록 하는 것 -> 개발자는 개발에만 집중


2. 대상 시점

CI와 CD는 세부적으로 아래와 같이 나눠지며, 개발/배포 단계에 적용되는 전략이 달라진다.



3. CI - Continuous Integration

  - 개발자를 위한 자동화 프로세스

  - 개발자간의 코드 충돌을 방지하기 위한 목적

  - 정기적인 빌드 및 테스트(유닛테스트 및 통합테스트)를 거쳐 공유 레포지터리에 병합되는 과정


4. CD(1) - Continuous Delivery

  - 애플리케이션에 적용한 변경사항이 버그 테스트를 거쳐 레포지터리에 자동으로 업로드 되는 것

  - 운영팀은 언제든 실시간으로 이 레포지터리에서 실시간으로 프로덕션 환경으로 배포 가능


5. CD(2) - Continuous Deployment

  - 애플리케이션을 프로덕션 환경으로 배포하는 작업을 자동화 하는 것

  - 서버가 여러 대 일 경우 더욱 중요

  - Continuous Delivery로 통칭하여 언급하기도 함


6. CI/CD 지원 툴

  - Hudson

  - Jenkins

  - Bamboo(상용)

  - 그 외 다양한 툴 존재


7. CI/CD의 핵심 목적

한 번에 많이 수정하지 말고, 조금 수정하여 여러 번 배포하라!




[참고문서]

https://www.redhat.com/ko/topics/devops/what-is-ci-cd


'IT기술 > DevOps' 카테고리의 다른 글

배포 전략: Rolling, Blue/Green, Canary  (0) 2019.03.12
CI/CD란 무엇인가?  (0) 2019.03.08

boxplot 사분위값을 이용하여 데이터의 분표 모양, 대칭성, 극단 값을 쉽게 파악할 있는 그림이다.

크게 중앙 50% 데이터의 분포 형태를 파악하는 부분과 나머지 50%(outlier) 분포 형태를 파악하는 부분 가지로 나누어 있다.


[5, 10,  15, 15, 16, 16, 20, 20, 20, 21, 25, 45, 50]


위의 데이터에서 사분위값은 아래와 같다


1사분위(Q1) = 15

2사분위(Q2) = 20

3사분위(Q3) = 25

(사분위값을 구하는 방법은 여러가지가 있다방법에 따라 값이 달라질  있다.)


Q1 Q3 끝으로 하는 상자를 그리고 Q2 실선으로 그어 중앙 50% 데이터가 어떻게 분포되어 있는지 나타낸.


나머지 50% 분포는 IQR 이용하여 그린다.

IQR(InterQuartile Range) 'Q1 Q3 사이 길이'이다.


Q1 Q3 주변으로 1.5 * IQR 범위에 있는 데이터를 울타리 안에 표시하고,

바깥에 있는 데이터는 * 또는 O 으로 표시한다.

(이때 울타리 안의 데이터를 'suspect outliers' 하고울타리 밖의 데이터를 'highly suspect outliers' 한다.)


IQR = 25 - 15 = 10

1.5*IQR = 15

Q1 - 1.5*IQR = 15 - 15 = 0

Q3 + 1.5*IQR = 25 + 15 = 40


위에서 구한 값을 그림으로 그리면 다음과 같다.




'통계' 카테고리의 다른 글

boxplot(상자그림) 설명  (0) 2019.02.10

+ Recent posts