Application을 Production 환경으로 옮길때 사용하는 기술적인 방법들이 있다.
Application의 새로운 버전이 잘 동작하는지 테스트 하고 싶거나 아예 새로운 버전으로 바꾸고 싶을 때,
A/B Testing, Canary Releases, and Blue-Green Deployments 등의 방법이 쓰인다.
Blue-Green Deployments
새로운 Version의 Application을 배포하는 과정은 신속하게 이루어져야 하며, 새로운 배포판에 Bug가 감지되면 빠르게 Rollback을 해야한다.
Blue-Green Deployments는 2개의 동일한 Production 환경을 셋팅해놓고 시작한다.
예를 들어, 현재 live 되고 있는 환경이 Green이라고 해보자.
V2로 업그레이드 된 Application을 Blue 환경에 실행해 OS, cache, CPU 등의 문제를 정상적으로 작동이 되는지 테스트 해본다.
아무런 Issue가 없다면 loadbalancer/reverse proxy/ router 를 Blue 환경으로 맞춰준다.
또한 버그 또는 Exceptions의 발생을 막기위해 지속적으로 모니터링 해준다.
더이상 문제가 생기지 않는다면 이전 환경인 Green은 Shut Down 할 수 있고, 아니라면 다시 Green 으로 Rollback 해준다.
이론상으로는 완벽해 보이는 방법이지만 단점이 존재한다.
1. 기존 Green 환경에서 처리하는데 오랜 시간이 걸리는 Transaction이 있을 수 있다. 이는 새로운 환경으로 전환을 시도할 때 해당 Transaction이 제대로 완료되지 못하고, DB backends에서도 이를 처리하지 못하는 문제가 생길 수 있다.
2. DataBase Migration에 대한 고려가 필요하다. 새로운 버전인 Blue 환경에서 문제가 생겨 Rollback 해야하는 상황이라면 Database에 대한 Rollback도 생각해야 한다.
3. 2가지 환경을 동시에 올리기위한 인프라 구축이 필요하다. 즉, 비용이 많이 들어간다.
이러한 단점들을 해결하기 위해 Continuos Deployment Pipeline을 구축할 수 있는 서비스들이 존재하니 잘 활용하면 된다.
A/B Testing, also known as Split Testing
A/B Testing이란 준비된 대상(web page, page element, sales email, etc)에 대한 2가지 이상의 버전을 테스트 하는 과정을 말한다.
A는 기존의 대상을, B는 새롭게 테스트하고자 하는 대상을 의미한다.
A/B Testing은 주로 비즈니스를 전략적으로 수립하기 위해 사용된다.
예를 들어, Website를 방문하는 유저들을 나누어 각각 다른 버전으로 접속하게 하고, 어떤 버전이 비즈니스에 가장 긍정적인 결과를 가져오는지 비교한다.
이러한 A/B Testing을 수행하기 위해서는 대상으로 들어오는 Traffic을 Split 해야한다.
Traffic Split에 대해서는 다음 글을 참고하자.
https://showlgu-ml.tistory.com/175
Traffic Splitting에 대해 알아보자
트래픽 분할을 사용하면 서비스 내 버전 두 개 이상에 트래픽 분산 비율을 지정할 수 있다. 트래픽을 분할하면 버전 간 A/B 테스트를 할 수 있으며, 기능을 배포할 때 속도를 제어할 수 있다. 이러
showlgu-ml.tistory.com
Canary Releases
소프트웨어 배포의 방법으로 새로운 버전의 Application을 일부 사용자들에게 배포한 뒤, 정상적으로 작동한다면 점진적으로 사용자의 범위를 늘려가며 피드백을 통해 배포하는 방식을 말한다.
Canary Release는 카나리아라는 새를 광부들이 광산에 데려가 유독 가스의 누출 여부를 알아내는 방법에서 비롯되었다. 광산에서 유독가스가 누출되면 광부들이 중독되기 전에 카나리아가 먼저 죽게된다.
Canary release는 이와 비슷한 개념으로 잠재적인 문제(다른 app과의 통합에서 발생하는 문제, CPU, Memory, Disk 사용량 등)를 초기에 발견하여 전체 운영환경이나 사용자에게 영향을 미치는 것을 방지한다.
Canary Release는 Blue-Green Deployments와 마찬가지로 인프라 구축을 위한 비용과, Database Migration의 복잡성 등을 가지고 있다.
'DevOps > Google Cloud Platform' 카테고리의 다른 글
GCP PCA 자격증 시험 후기 & 공부 방법 (0) | 2023.02.03 |
---|---|
Traffic Splitting에 대해 알아보자 (0) | 2023.01.15 |
Big Data Migration Flowchart (1) | 2023.01.12 |
SLI, SLO, and SLA in SRE에 대해 알아보자 (1) | 2022.12.16 |
Cloud DNS에 대해 알아보자 (0) | 2022.12.05 |