카나리 테스트와 함께하는 안전한 서버 배포 - VCNC Engineering Blog
- 타다를 운영하는 VCNC의 김태호님이 작성한 쿠버네티스 환경에서의 카나리 배포 경험담.
- 카나리 배포는 탄광에서 광부들이 가수 누출을 검출하기 위해 새장에 카나리를 넣어 가져가던 일에서 유래한 이름.
- Spring Boot의 메이저 버전을 올릴 때 의존하는 라이브러리의 버전도 강제로 바뀌게 되므로, 이로 일어나는 성능 문제나 테스트하지 못한 장애를 최소화 하기 위해 카나리 배포를 시도.
- 쿠버네티스에 Helm 패키지 매니저를 사용해서 배포하는데, Helm의 패키지 단위를 '차트'라 부르며, 차트를 쿠버네티스 클러스터에 설치하면 릴리스가 생성됨.
- 카나리에 대한 차트/릴리스를 작성하고 , Ingress 컨트롤러에 어노테이션을 추가하여 지정한 비율의 요청만 카나리 Ingress로 가도록 설정하였음.
향후 과제
- 카나리 릴리스에 문제가 발생했을 때, 원인이 카나리의 변경사항 때문인지, 원래 발생하던 문제인지 파악하는 것이 어려우므로, 동일 비율로 대조군을 띄워놓고 메트릭을 비교하는 방법이 필요.
- 사용자와 무관하게 요청의 일부를 카나리로 보내므로, 카나리에 문제가 있더라도 요청을 재시도하다 보면 기존 버전이 처리해서 성공하기도 하지만, 전체적으로 봤을 때 카나리의 문제점을 경험하는 사용자의 비율이 늘어날 수 있으므로, (LB에서 스티키 처리를 하듯) 사용자 그룹에 따라 카나리로 라우팅하면 통제가 가능해질 듯.
Detect language Afrikaans Albanian Amharic Arabic Armenian Azerbaijani Basque Belarusian Bengali Bosnian Bulgarian Catalan Cebuano Chichewa Chinese (Simplified) Chinese (Traditional) Corsican Croatian Czech Danish Dutch English Esperanto Estonian Filipino Finnish French Frisian Galician Georgian German Greek Gujarati Haitian Creole Hausa Hawaiian Hebrew Hindi Hmong Hungarian Icelandic Igbo Indonesian Irish Italian Japanese Javanese Kannada Kazakh Khmer Korean Kurdish Kyrgyz Lao Latin Latvian Lithuanian Luxembourgish Macedonian Malagasy Malay Malayalam Maltese Maori Marathi Mongolian Myanmar (Burmese) Nepali Norwegian Pashto Persian Polish Portuguese Punjabi Romanian Russian Samoan Scots Gaelic Serbian Sesotho Shona Sindhi Sinhala Slovak Slovenian Somali Spanish Sundanese Swahili Swedish Tajik Tamil Telugu Thai Turkish Ukrainian Urdu Uzbek Vietnamese Welsh Xhosa Yiddish Yoruba Zulu
Afrikaans Albanian Amharic Arabic Armenian Azerbaijani Basque Belarusian Bengali Bosnian Bulgarian Catalan Cebuano Chichewa Chinese (Simplified) Chinese (Traditional) Corsican Croatian Czech Danish Dutch English Esperanto Estonian Filipino Finnish French Frisian Galician Georgian German Greek Gujarati Haitian Creole Hausa Hawaiian Hebrew Hindi Hmong Hungarian Icelandic Igbo Indonesian Irish Italian Japanese Javanese Kannada Kazakh Khmer Korean Kurdish Kyrgyz Lao Latin Latvian Lithuanian Luxembourgish Macedonian Malagasy Malay Malayalam Maltese Maori Marathi Mongolian Myanmar (Burmese) Nepali Norwegian Pashto Persian Polish Portuguese Punjabi Romanian Russian Samoan Scots Gaelic Serbian Sesotho Shona Sindhi Sinhala Slovak Slovenian Somali Spanish Sundanese Swahili Swedish Tajik Tamil Telugu Thai Turkish Ukrainian Urdu Uzbek Vietnamese Welsh Xhosa Yiddish Yoruba Zulu
Text-to-speech function is limited to 200 characters