카나리아 테스트: 그것이 무엇이며 어떻게 이점을 얻을 수 있습니까?
게시 됨: 2022-08-20프로그래머가 아니라면 카나리아 테스트에 대해 들어본 적이 없을 것입니다. 괜찮습니다. 하지만 이것이 무엇인지 궁금할 것입니다. 왜 이것을 카나리아 테스트라고 합니까?
이 용어는 "탄광의 카나리아"라는 문구에서 파생됩니다. 카나리아는 유독 가스에 대한 내성이 낮기 때문에 석탄 광부들은 갇힌 카나리아를 탄광으로 가져오곤 했습니다.
따라서 노동자들은 카나리아가 죽으면 광산에서 나와야 한다는 것을 알고 있었습니다. 소프트웨어 개발 측면에서 새로운 소프트웨어를 만들 때 목표는 사용자에게 문제가 되기 전에 가능한 한 빨리 문제를 감지하고 해결하는 것입니다.
카나리아 테스트란 무엇입니까?
카나리아 테스트는 사용자에게 최소한의 부정적인 영향을 미치면서 새로운 기능을 시험해 보는 방법입니다. 이러한 유형의 테스트는 일반적으로 애플리케이션에 약간의 변경이 있는 소규모 사용자 그룹과 함께 사용됩니다. 이렇게 하면 대다수의 사용자는 여전히 현재 버전의 소프트웨어를 사용하고 선택된 소수의 사용자 그룹은 약간 업그레이드된 버전을 사용하게 됩니다.
이 연습의 목적은 소프트웨어를 사용하는 대다수의 사람들이 문제 없이 계속 사용할 수 있도록 하고 소수의 사용자에게만 변경 사항을 적용하는 것입니다.
이 모든 작업은 애플리케이션의 기존 버전과 새 버전을 동시에 실행하는 동안 수행됩니다. 그런 다음 카나리아 테스트에서 오류가 반환되지 않으면 더 많은 비율의 사용자로 계속 확장할 수 있습니다.
독자는 또한 즐길 수 있습니다: 신속한 애플리케이션 개발이란 무엇입니까? RAD 방법론의 4단계 – DevriX
카나리아 테스트를 수행하는 방법?
카나리아 테스트의 첫 번째 단계는 백엔드 서버 또는 컨테이너 세트를 실행하여 새 코드를 실행하는 것입니다. 새로운 사용자가 생기면 로드 밸런서가 이들 중 일정 비율을 "카나리아 클러스터"로 보냅니다.
그런 다음 DevOps 전문가는 서버를 모니터링하여 컴퓨팅 로드 또는 더 높은 I/O 속도와 같은 잠재적인 문제를 식별합니다. 그리고 심각한 문제가 발생하더라도 프로세스가 소프트웨어를 사용하는 모든 사람에게 영향을 미치지 않기 때문에 문제를 원래대로 되돌리기가 쉽습니다.
그렇지 않으면 Spinnaker와 같은 도구를 사용하여 새 코드를 사용하는 사용자 수를 지정하여 카나리아 테스트를 쉽게 구현하고 자동화할 수 있습니다.
이 비율은 일반적으로 약 5%이며 할당된 DevOps 팀이 문제가 없다고 설정하면 모든 사람이 애플리케이션의 새 코드 버전을 사용할 때까지 해당 비율을 꾸준히 높일 수 있습니다.
또한 카나리아 테스트는 개발 또는 스테이징 환경이 프로덕션 환경과 완전히 일치하지 않는 상황에서 유용합니다. 소규모 사용자 테스트 그룹을 사용하면 스테이징 또는 개발 환경에서 감지되지 않은 모든 문제를 드러낼 수 있습니다.
독자는 또한 즐길 수 있습니다: WordPress를 사용한 A/B 테스트: 최종 가이드 – DevriX
카나리아 테스트의 장점과 단점
카나리아 방법을 사용하여 테스트와 관련하여 좋은 점과 나쁜 점을 정의해 보겠습니다.
카나리아 테스트의 이점
- 실제 테스트 . 폐쇄된 내부 환경에서 테스트하는 것도 좋지만 실제 사용자를 대상으로 소프트웨어를 테스트할 수 있다는 것은 한 단계 더 나아가는 것입니다. Canary 배포를 사용하면 완전히 새로운 애플리케이션을 출시할 위험 없이 소규모 청중을 대상으로 애플리케이션을 테스트할 수 있습니다.
- 더 나은 위험 관리 . 새로운 기능을 점진적으로 출시하고 제대로 작동하는지 확인하면 중대한 오류와 실패로 인한 총 비용을 크게 줄일 수 있습니다.
카나리아 테스트 방법을 사용하면 기본적으로 주요 업데이트를 롤백하거나 많은 양의 코드를 다시 작성할 필요가 없습니다. - 보다 비즈니스 지향적인 . 관리자와 마케팅/영업 담당자에게 비즈니스 데이터를 제시해야 합니까? 카나리아를 사용하면 결과를 매우 빠르게 볼 수 있습니다. 예를 들어, 새로운 소프트웨어 기능을 테스트하려는 경우 소규모 사용자 그룹을 위해 새 기능을 배포한 다음 기능이 제대로 작동하지 않는지 확인할 수 있습니다. 그런 다음 이 데이터를 사용하여 참여를 유도할 수 있습니다. 당신의 제품.
카나리아 테스트의 단점
- 소프트웨어 문제 . 아직 테스트되지 않은 코드가 있으므로 당연히 위험이 수반됩니다. 일부 사용자가 특정 기능에 심각한 문제를 겪고 있는 경우에는 보다 엄격한 내부 테스트를 위해 카나리아 테스트를 건너뛰는 것이 가장 좋습니다.
- 더 큰 비용 . 로드 밸런서를 사용하여 사용자를 분할하려는 경우 추가 인프라와 더 많은 관리가 필요합니다. 즉, 테스트를 실행하려면 두 개의 별도 프로덕션 환경과 백엔드를 만들어야 합니다. 따라서 두 개의 앱 서버, 두 개의 코드 라인, 두 개의 웹 서버 및 유지 관리할 네트워킹 인프라가 필요합니다.
- 나쁜 사용자 경험 . 일부 사용자는 테스트 대상으로 사용되는 아이디어에 너무 열중하지 않을 수 있습니다. 진행 상황에 대해 공개하고 싶다면 "조기 채택" 프로그램 또는 이와 유사한 것을 통해 사용자에게 자신이 "카나리아"로 사용되고 있음을 알릴 수 있습니다.
언제 카나리아 테스트를 사용하지 말아야 합니까?
카나리아 테스트는 많은 경우에 유용하지만 모든 것에 대한 확실한 답은 아닙니다(42개).
다음은 카나리아 접근 방식을 절대 사용해서는 안 되는 경우입니다.
- 지속적인 배포에 적합하지 않은 환경.
- 생명 유지 시스템이나 원자로와 같은 중요한 소프트웨어를 다룰 때.
- 실패가 상당한 경제적 영향을 초래할 수 있는 금융 시스템.
원격으로 소프트웨어를 업데이트할 수 없는 경우.
카나리아 배포는 어떻게 합니까?
이제 카나리아 배포를 수행하기 위해 수행해야 하는 필수 단계를 살펴보겠습니다.
- 스테이징 서버에 배포할 준비를 합니다.
- 부하 분산을 통해 카나리아 노드를 제외합니다.
- 새 버전을 카나리아 노드에 배포합니다.
- 자동화된 테스트 스크립트로 새 버전을 테스트합니다.
- 로드 밸런싱을 사용하여 카나리아 노드를 트래픽에 연결합니다.
- 나머지 프로덕션 노드에 업데이트를 롤아웃합니다.
실제로 배포는 스테이징 서버를 준비하는 것으로 시작됩니다. 구성 파일, 테스트 스크립트, 빌드 아티팩트 등을 확인합니다. 그런 다음 자동 또는 수동 테스트를 실행하거나 서버를 활성 상태로 두고 모든 것이 제대로 실행되는지 또는 충돌하는지 확인할 수 있습니다.
카나리아를 언제 프로덕션으로 밀어야 할까요?
사용자의 5% 또는 10%에서 카나리아 업데이트를 테스트하고 모든 것이 올바르게 작동하면 테스트 사용자의 비율을 두 배 또는 세 배로 늘릴 수 있습니다.
그런 다음 다시 테스트하고 메트릭에서 피드백을 수집하고 모든 것이 제대로 작동하는지 평가하면 다시 한 번 프로덕션 환경의 70%를 업데이트할 수 있습니다.
마지막으로 테스트 절차를 반복하고 모든 것이 정상이면 소프트웨어의 새 버전을 100% 사용자에게 배포하고 물론 계속 모니터링합니다.
Canary 배포를 구현한 회사
canary 배포가 널리 사용되는 구현 방법임을 보여주기 위해 canary 배포를 사용하는 일부 회사를 살펴보겠습니다.
넷플릭스
스트리밍 서비스 거인은 2018년부터 Kayenta와 함께 자동화된 카나리아 분석을 사용하고 있습니다. 이를 통해 Netflix의 프로덕션 환경을 매우 빠르게 업데이트할 수 있습니다. 회사는 이 배포 방법이 개발자의 생산성을 높이는 동시에 프로덕션 환경을 변경할 위험을 줄인다고 말합니다.
인스 타 그램
이 소셜 미디어 플랫폼은 카나리아 배포의 오랜 팬이기도 합니다. 그들의 공동 설립자이자 CTO인 Mike Krieger는 카나리아 릴리스가 버그가 너무 많은 피해를 입히지 않고 소수의 사람들에게만 영향을 미치도록 보장한다고 말했습니다.
Google 크롬에는 개발자를 위한 특별한 버전이 있다는 것을 알고 계셨습니까? 맞습니다. Google Chrome Canary를 사용하면 새로운 웹 플랫폼 API를 테스트하고 다른 누구보다 먼저 브라우저의 미래가 어떤 모습일지 확인할 수 있습니다.
마이크로소프트
Microsoft는 자체 직원을 사용하여 모든 제품 업데이트를 카나리아 테스트합니다. 이 프로세스는 Windows Vista 및 Microsoft Azure 이후로 적용되었습니다. Windows 10 업그레이드도 직원 운영 체제의 카나리아 업데이트를 사용하여 수행되었습니다.
요약
카나리아 테스트는 실제 테스트 환경에서 새로운 애플리케이션 버전을 빠르게 도입할 수 있는 좋은 방법입니다. 뿐만 아니라 더 나은 위험 관리와 더 많은 추적 가능한 데이터를 허용합니다.
카나리아 테스트에는 많은 이점이 있지만 항상 모든 상황에 대한 솔루션은 아닙니다. 카나리아 배포를 시작하기 전에 조사를 수행해야 합니다. 그렇지 않으면 역효과가 날 수 있습니다.