* https://medium.com/netflix-techblog/deploying-the-netflix-api-79b6176cc3f0
이번 글에서는 Netflix가 선택한 API 배포 techniques에 대해 소개한다.
이전 글을 보았다면 Netflix에서 API의 위치를 확인할 수 있다. (아래 참조)
이처럼 Netflix는 API를 배포할 때, 보다 빨리 운영 환경에 적용하고 발생 할 수 있는 여러 risk를 최소화하기 위해 7가지 방법을 사용한다.
Moving Toward Continuous Delivery
개발된 기능을 빠르게 배포하기 위해 pipeline*을 구축하였다. 아래 Netflix에서 Delivery 시스템에 대한 2가지 개념에 대해 알아보자.
*pipeline을 통해 배포 중에 발생 할 수 있는 문제를 쉽게 파악하고 risk를 최소화 할 수 있다.
- 자동화(Automation) : 반복적인 수동 작업을 자동화
- 통찰력(Insight) : 숨겨진 문제를 파악하고 개선
모니터링 뿐만 아니라 다양한 tool도 내부에서 발생하는 문제를 파악하는데 도움이 된다. 이를 통해 빠르게 문제에 대해 대응하고 시스템의 안정성 및 성능을 높일 수 있다.
Development & Deployment Flow
그림 1은 code가 수정되었을 때, 진행되는 흐름도이다. 각 단계를 통해 수정된 code의 안정성을 확보 할 수 있다.
(Y축이 confidence인 것을 보면 만든 기능이 '정말 오류가 없군' 이라는 말을 함축하고 있는 것 같음)
그림 1. Logical Flow of Code
그림 2는 Continuous Integration 및 Deploy Flow를 보여준다. 해당 과정은 대부분 자동화로 동작하며 Insight를 얻기 위해 모니터링 또는 여타 tool을 사용한다.
그림 2. Continuous Integration & Deploy Flow
Branches
자동화되어 있는 3가지의 branch(Test, Release, Prod)를 사용한다. 각 branch는 사용 목적 및 환경이 다르다.
Confidence in the Canary
Canary 테스트를 수행하여 Metric(HTTP Status code, Response time, Exception counts, Load avg, etc.)을 확인하는 것이다.
아래 그림에서 확인 할 수 있듯이 모니터링 및 다양한 tools을 사용하여 새로운 코드를 적용한 시스템이 정상적인지 확인한다.
그림 3. Canary Analysis
Multi-region Deployment Automation
여러 지역에 배포를 "red/black push" 방법을 사용하여 자동화한다. 물론 여러 지역을 한 번에 관리하는 것은 아니고, 특정 지역에서 새로운 버전을 적용할 때가 되면 해당 지역만 버전 업을 하는 것이다.
자세한 것은 원문에서 순서에 대한 내용을 읽어보면 알겠지만 간략히는 아래 그림으로 확인 할 수 있다.
(구 버전을 Black으로 표시하지만 새로운 버전에 문제가 생겼을 경우 Black으로 rollback 할 수 있다.)
그림 4. Red/Black Push
Keep the Team Informed
개발 팀에게 현재 진행 과정을 알릴 수 있도록 한다.
(배포 진행 중인 환경에서 어떤 일들이 발생하는지 확인하는 것이 중요함)
Move Fast, Fail Fast (and Small)
자동화된 Pipeline에서 발생하는 문제에 대한 feedback을 공개하여 빠르게 대응할 수 있도록 한다.
(실제 시스템에 부정적인 영향을 주지 않도록 함)
'IT > AWS' 카테고리의 다른 글
[Netflix] Hystrix Overview (0) | 2019.01.14 |
---|---|
[AWS] ElastiCache Redis Cluster (0) | 2019.01.06 |
[Netflix] Part 5 - API 배포 준비 (0) | 2018.12.22 |
Circuit Breaker 패턴 (0) | 2018.12.20 |
[Netflix] Part 4 - Fault Tolerance (0) | 2018.12.19 |
댓글