1. 무중단 배포
무중단 배포란?
배포는 개발환경에서 개발된 코드를 패키징하여 서버에서 새로운 버전의 애플리케이션을 실행하도록 하는 것을 의미한다. 그 중에서 무중단 배포란 서버를 따로 중단하지 않고 배포를 진행하는 것을 의미한다.
예를들어, 배포 후 서버가 뜨는데 30초가 걸린다면 최소 30초 + @ 의 서비스 불가 시간이 발생하는데 이를 다운타임이라고 한다. 애플리리케이션의 서비스를 원활히 제공하기 위해서는 이 다운타임이 없는 무중단 배포를 해야만 한다.
2. 무중단 배포의 필요 요건
두대 이상의 서버 (혹은 애플리케이션)을 서비스해야한다.
- 다운타임이 발생하지 않으려면 실제 서비스 중인 서버와 새롭게 배포한 서버가 동시에 존재해야 한다.
- 비용을 줄이려면 배포할때만 새롭게 서버를 띄우고, 배포가 완료된 후에는 기존 서버는 죽이는 것이 필요
3. 무중단 배포방식
1) Rolling 배포
- 가장 간단한 배포방식
- 서버를 로드밸런서에 보내고 나서 배포한 다음에 다음 밸런서에 다시 배포한다.(순차적으로 배포를 한다)
- 서버가 많으면 1대씩 바포하면 느리므로 N대 단위로 배포를 한다
- 단, 배포 종료시 까지 누구는 이전 서비스를 받고, 누구는 신규 서비스를 받는 등 서비스 제공에 문제 발생 가능성 존재
2) 카나리 배포 (Canary 배포)
- 소수의 유저( 혹은 사내) 에서만 사용하는 환경(Canary) 에 배포한 후, 문제가 없다고 판단할 시에 다른 모든 서버에 배포하는 방식
3) 블루 / 그린 배포
- 실제로 서비스 중인 환경(Blue) 와 새롭게 배포할 환경(Green) 을 세트로 준비하여 배포하는 방식
- 새롭게 배포할 환경에만 배포하면 되기 때문에 배포속도가 빠름
- 언제나 Green 환경이 떠있기 때문에 잘못된 버전으로 배포를 했을 경우 신속하게 RollBack이 가능하다
- 서버가 항상 떠있어야 하기 때문에 비용이 두배로 든다 (많이 든다)
- Green 환경에서 스케쥴러 같은 배치성 Job 이 도는 경우, 레거시 버전으로 돌기에 장애가 발생할 가능성이 항상 존재
4. 참고 링크
'프로그래밍 개념들' 카테고리의 다른 글
5. 하이퍼바이저(Hypervisor) (0) | 2021.05.21 |
---|---|
4. SEDA ( Staged Event-Driven Architecture) (0) | 2021.05.20 |
3. NAS (Network Attached Storage) 간단 정리 (0) | 2021.05.12 |
2. 로드 밸런싱 간단 정리 (0) | 2021.05.12 |
1. 해시 알고리즘 간단 정리 (0) | 2021.05.10 |