여러분의 앱에는 카나리아가 살고 있나요?
광부와 새 두 마리
100년 전 석탄을 캐는 광부는 카나리아 새 두 마리를 함께 데리고 광산으로 들어갔다고 합니다. 이 새는 평소에는 아름다운 새소리를 내지만 주변 환경에 민감하여 가스나 일산화탄소와 같은 유독물질을 마시면 노래를 멈추고 기절해버렸죠. 광부는 함께 내려온 새 소리를 듣다 새 소리가 멈추면 위험을 감지하여 탄광을 빨리 빠져나가 생명을 구할 수 있었다고 합니다.
Canary in the coal mine은 위와 같은 상황에서 나온 관용구로 닥쳐올 위험을 미리 경고한다라는 의미로 사용됩니다.
Canary 테스트
카나리아 테스트는 카니리아 환경에 실험적인 서비스를 배포하여 문제가 있는지 없는지는 테스트 하는 A/B테스트 중 하나입니다. 새로운 기능을 '일부 유저'에게 배포하여 장애를 파악하고 고객의 피드백을 받을 수 있습니다.
특히 개발을 할 때 운영에서 발생하는 이슈들이 있는데 카나리아 환경을 만들고 서비스를 배포하여 일부 고객에게 기능을 테스트 해보는 것이죠. 서버에서 Canary 테스트를 할 때는 라우터에 일부 사용자에게만 Canary 환경으로 라우팅하여 고객이 사용해볼 수 있도록 하는 경우가 많습니다.
다양한 Canary 서비스
많은 서비스들이 Canary Test를 이용합니다.
Microsoft Edge
Microsoft Edge는 최근 Chromium을 채택하여 Dev 및 Canary 채널을 오픈하였습니다.
* Microsofe edge insider 바로가기
Microsoft Edge도 Chromium을 내장하기로 한 뉴스가 화제였는데, 이 또한 Canary, Beta를 거쳐 현재 Chromium이 내장된 안정적인 Edge 브라우저를 사용할 수 있게 되었습니다.
Chrome
Chrome도 Chrome canary 버전을 제공하여 공식 배포 전에 여러 가지 테스트를 지원하기도 합니다.
웹 개발자라면 고객 환경에서 테스트 하셔야 하기 때문에 Chrome Canary 버전에서 서비스 QA를 하셔서는 안 되겠죠. Android Studio를 이용하는 앱 개발자도 canary 서비스를 이용해볼 수 있습니다.
Android Studio Canary 버전에서 미리 사용해보고 싶은 기능이 있다면 사용해보셔도 좋을 것 같으나, 실험적인 기능이 많이 들어가 있어 실제 공식 버전에 릴리즈 될지는 모릅니다. 또한 Canary 버전에는 Android Studio Gradle Plugin의 패치 버전 테스트가 많은데 이는 앱 빌드에 영향을 주기 때문에 다른 협업하는 개발자와 호환이 되지 않는 문제가 발생할 수 있으니 재미로만 사용해보시기를 추천드립니다.
앱을 위한 Canary
여러분들의 앱은 닥쳐올 위험을 어떻게 알 수 있을까요? 또 앱에서 생길 위험은 무엇이 있을까요? 앱에서의 위험은 크게 성능 저하, 크래시로 인한 앱 종료가 있습니다.
해당 위험은 결국 고객의 나쁜 피드백이 쌓여 결국 앱을 사용하지 않게 되어 매출에 영향을 가게 되니까요
그렇다면 이러한 앱에서의 위험을 미리 감지할 Canary는 없는 것일까요?
Firebase Test Lab
Google이 제공하는 Test Lab은 실제 기기를 기반으로 테스트를 할 수 있습니다.
다만 북미 기준의 디바이스가 많아서 미국 진출을 고민하시는 분을 사용하시면 좋을 듯 합니다.
무료 플랜으로는 가상기기 테스트 일 10회, 물리기기 테스트 일 5회 사용할 수 있으며, 유료 플랜으로는 가상기기 1달러에 가상기기 1시간 사용, 5달러에 물리기기 5시간을 사용할 수 있습니다.
https://firebase.google.com/pricing에서 비용을 확인하실 수 있습니다.
Samsung Remote Test Lab
삼성에서 제공하고 있는 디바이스 팜입니다. 삼성의 최신 기종들을 사용할 수 있으며 30분 단위로 예약이 가능합니다.
https://developer.samsung.com/remote-test-lab
다른 디바이스 팜에서는 구하기 어려운 갤럭시 폴드, 갤럭시 Z 등을 사용할 수 있습니다. 또한 타이젠 기반의 와치 등도 원격에서 접속해서 사용할 수 있는 장점이 있습니다.
mTworks
200개의 실제 물리 디바이스를 제공하고 있으며, 무료로 일 최대 4시간, 50개의 디바이스를 접속해서 사용할수 있습니다. 한국 환경에 최적화된 디바이스 세트를 구성하고 있습니다.
실제 디바이스가 없는 분은 배포 전에 테스트 용도로 사용하시면 좋을 듯 합니다.
https://mtworks.skcc.com/home.do
Mobile APM Canary Test (IMQA)
IMQA는 MPM/Crash 모니터링 서비스를 통해 어느 곳에서 앱이 느린지를 알려주고 어떠한 문제로 앱이 죽었는지를 알려드릴수 있습니다.
일부 유저에게만 MPM/Crash 모니터링 적용할 Canary 환경을 만들려면 어떻게 해야 할까요?
프로젝트 리스트 > 설정 > SDK 옵션 관리에서 원하는 프로젝트를 선택한 뒤 데이터 수집비율을 조정할 수 있습니다.
만약 10%의 앱 사용자만 IMQA의 성능/크래시 정보를 알고 싶다면 해당 값을 10으로 넣으면 되는 것이죠.
Canary 테스트 후에 모든 앱 사용자에게 정보를 알고 싶다면 해당 기능을 off하면 되고, 모니터링을 종료하고 싶다면 데이터 수집을 on 하시면 됩니다.
자세한 내용은 IMQA 홈페이지 또는 영상을 통해 확인해주시기 바랍니다.
앱의 성능을 보는 정확한 실 사례는 다음과 같습니다.
앱 서비스 장애편 #1 - 화면 로딩 속도
마치며
위험이 닥쳤을 때 보다 위험을 미리 인지하는 것이 더욱 저렴한 비용이 들게 됩니다.
새를 들고 광산으로 들어간 광부처럼 여러분의 앱도 위험을 미리 감지 할 수 있는 Canary가 필요할 것입니다. 여러분의 앱에도 새 한 마리 넣어두시는 건 어떨까요?