일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- java
- redis
- JVM
- 요리
- it
- Spring
- ReactJS
- linux
- elasticsearch
- AWS
- php
- Git
- MySQL
- Spring Batch
- db
- IntelliJ
- devops
- Web Server
- laravel
- jsp
- jenkins
- Gradle
- 맛집
- Oracle
- ubuntu
- javascript
- springboot
- Spring Boot
- Design Patterns
- tool
Archives
- Today
- Total
아무거나
배포전략(Rolling, Blue/Green, Canary) 본문
반응형
평소 대략적으로만 이해하고있던 배포전략 개념에 관하여 좀 더 자세하게 정리하고자 포스팅을 작성하게 되었다.
배포전략(Rolling, Blue/Green, Canary)
- Rolling
- Rolling 배포는 서버를 한 대씩 구 버전에서 새 버전으로 교체해가는 전략이다. 서비스 중인 서버 한 대를 제외시키고 그 자리에 새 버전의 서버를 추가한다. 이렇게 구 버전에서 새 버전으로 트래픽을 점진적으로 전환한다. 이와 같은 방식은 서버 수의 제약이 있을 경우 유용하나 배포 중 인스턴스의 수가 감소 되므로 서버 처리 용량을 미리 고려해야 한다.
- Blue/Green
- Blue/Green 배포는 신 버전을 배포하고 일제히 전환하여 모든 연결을 신 버전을 바라보게 하는 전략이다. 구 버전, 신 버전 서버를 동시에 나란히 구성하여 배포 시점에 트래픽이 일제히 전환되며 빠른 롤백이 가능하고, 운영환경에 영향을 주지 않고 실제 서비스 환경으로 신 버전 테스트가 가능하다. 단, 이런 구성은 시스템 자원이 두배로 필요하여 비용이 더 많이 발생한다.
- Canary
- 'Canary'라는 용어의 어원을 알면 이해가 더 쉽다. Canary는 카나리아 라는 새를 일컫는 말인데, 이 새는 일산화탄소 및 유독가스에 매우 민감하다고 한다. 그래서 과거 광부들이 이 새를 옆에 두고 광산에서 일을 하다가 카나리아가 갑자기 죽게 되면 대피를 했다고 한다. Canary 배포는 카나리아 새처럼 위험을 빠르게 감지할 수 있는 배포 기법이다. 지정한 서버 또는 특정 user에게만 배포했다가 정상적이면 전체를 배포한다. 서버의 트래픽의 일부를 신 버전으로 분산하여 오류 여부를 확인할 수 있고, 이런 전략은 A/B 테스트가 가능하며, 성능 모니터링에 유용하다. 트래픽을 분산시킬 때는 라우팅을 랜덤하게 할 수 있고, 사용자로 분류할 수 있다.
[요약]
- Blue/Green: 테스트해보고 트래픽을 한번에 전환함. 롤백이 빠름
- 동일한 양의 instance로 이루어진 새로운 Server Group을 생성
- 신규 Server Group이 정상상태가 되면 LB는 신규 Server Group에 트래픽을 분산함.
* Blue 구역은 실제 운영서버이고, Green 구역에서 신규버전 테스트를 하고, 문제가 없으면 Blue 구역에 향하던 Request 를 Green 구역으로 향하게함. 그러면 이제 Green 구역이 실 운영서버가 되고 Blue 구역은 테스트서버가 됨. (구역 swap)
- Rolling: Blue/Green 과 동일하나 단, 인스턴스별 또는 그룹별로 Rolling
- Canary: 트래픽을 분산시켜 전환함
- 가장 작은 개수의 인스턴스를 교체시키고
- 새로운 버전으로 트래픽을 분산시킨다 (1~5%)
- 새로운 버전에 이슈가 없을때까지 테스트를 진행하고
- 특정시간까지 이슈가 없으면 배포를 늘려간다.
참고: https://onlywis.tistory.com/, https://reference-m1.tistory.com/, https://berrrrr.github.io/
반응형
'Infra > DevOps' 카테고리의 다른 글
Jenkins Pipeline + Nginx + Spring Boot(Maven) 활용한 무중단 배포 (0) | 2024.10.12 |
---|---|
Spinnaker (0) | 2022.08.29 |
[pinpoint] pinpoint 2.2.0 설치 및 실행 가이드 (3) | 2020.12.30 |
Ngrinder을 사용한 부하 테스트 (0) | 2020.12.26 |
[virtualBox] 고정 IP 할당 (CentOS7 기준) (0) | 2020.06.11 |
Comments