[Jenkins pipeline]
1. GIT > Source coude
2. MAVEN > Build to RPM file
3. DOCKER > Make a image & upload to harbor
4. HARBOR > 패키지 도커 이미지 형상 관리
[Kubernetes]
1. Argo rollouts > Canary 배포 전략 사용
2. 배포 전략 정리
2-1) Rolling-update
i. 직렬 배포.
ii. 롤링 업데이트란 새 버전을 배포하면서, 새 버전 인스턴스를 하나씩 늘려가고 기존 버전의 인스턴스를 하나식 줄여나가는 방식이다.
iii. 이러한 경우 새 버전의 인스턴스로 트래픽이 이전되기 전까지 이전 버전과 새 버전의 인스턴스가 동시에 존재할 수 있다는 단점이 있지만, 시스템을 무중단으로 업데이트 할 수 있다는 장점이 있다.
2-2) Blue-green
i. 애플리케이션 또는 마이크로서비스의 이전 버전에 있던 사용자 트래픽을 이전 버전과 거의 동일한 새 버전으로 점진적으로 이전하는 애플리케이션 릴리스 모델이다.
ii. 이때 blue, green 두 버전 모두 프로덕션 환경에서 실행 상태를 유지한다.
iii. 이전 버전을 blue 환경으로, 새 버전은 green 환경으로 부를 수 있다.
iv. 프로덕션 트래픽이 blue에서 green으로 완전히 이전되면, blue는 롤백에 대비하여 대기 상태로 두거나 프로덕션에서 가져온 후 업데이트하여 다음 업데이트의 템플릿으로 삼을 수 있다.
v. 장점
1. RollingUpdate 와 달리 기존앱에서 새로운앱으로 바로 이전이 가능하다.
2. 이전 앱과 새로 배포할 앱을 테스트 할 수 있다.
3. 새로운 앱에서 문제가 발생할 때 이전 버전으로 빠르게 롤백할 수 있다.
vi. 단점
1. 배포 구성을 두 배로 (deployment 2개) 운용해야 하므로 사용해야할 인프라가 많다. > 비용 문제로 이어질 수 있다.
2. PaaS 솔루션이나 argo 같은 도구를 사용하지 않으면 배포하기가 까다롭다.
2-3) Canary
i. Canary의 사전적 의미는 카나리아라는 참새목의 새이다. 유독가스에 굉장히 민감한 동물이라 광산에서 유독가스의 누출을 확인하는 용도로 사용되었다고 한다.
ii. Canary 배포는 카나리아 새처럼 위험을 빠르게 감지할 수 있는 배포 기법이다.
iii. 구 버전의 서버와 새 버전의 서버들을 구성하고 일부 트래픽을 새 버전으로 분산하여 오류 여부를 판단한다.
iv. 오류율 및 성능 모니터링에 유용하다. 트래픽을 분산시킬 라우팅은 랜덤으로 할 수도 있고 사용자 프로필 등을 기반으로 분류할 수도 있다.
v. 분산 후 결과에 따라 새 버전이 운영 환경을 대체할 수도 있고, 다시 구 버전으로 돌아가 수도 있다. 개발 팀이 새로운 버전에 대해 확신하지 못할 때 가장 유용하다.
vi. 이처럼 일부만 신 서버로 교체하여 모니터링과 디버깅을 한 후, 문제가 없는 경우 모든 서버를 교체하는 방식으로 이루어진다. 특정 서버만 배포를 해놓고 배포된 서버로 트래픽을 조금씩 흘려보낸다. 이때 정상적이라면 트래픽을 계속 흘려보내면서 다른 서버도 점진적으로 배포를 한다.
vii. 조금씩 업데이트된 신 서버로 트래픽을 흘려보내면서 정상 여부를 체크하고 만약 정상적이지 않다면 바로 롤백할 수도 있고 정상적이라면 배포를 할 수도 있다.