박상권의 삽질블로그

[안드로이드/Android]오류 리포팅 서비스 비교(Google Analytics, URQA, Userhabit, Fabric) 본문

IT/Android-TIP (한글)

[안드로이드/Android]오류 리포팅 서비스 비교(Google Analytics, URQA, Userhabit, Fabric)

박상권 2016. 2. 2. 19:55

안드로이드 개발자들이 모여있는 오픈채팅방에 참여해보세요 .
Q&A 및 팁을 공유하는 방입니다..
오픈채팅방 참여



블로그를 Medium으로 옮겨서 운영하고 있습니다.
앞으로 새로운 글은 모두 미디엄 블로그를 통해서 올릴 예정입니다.
미디엄에서 다양하고 유익한 포스팅을 살펴보세요
미디엄 블로그 보기







학교 과제 제출용이든, 회사 테스트 프로젝트든, 스타트업 서비스를 운영하시든 각자 여러가지 이유로 안드로이드 앱을 개발하고 계실겁니다.

(저는 스타트업하는 불효자식입니다...)


그렇게 안드로이드 앱을 개발하고나면 드디어 플레이스토어에 배포할 날이 옵니다.

저는 개발자 콘솔에 배포용 APK를 처음 올리던 감격을 아직도 잊을수가 없습니다.





축하드립니다.

드디어 플레이스토어에 앱이 올라갔습니다.







하지만, 사실 진짜 문제는 지금부터 시작입니다.

분명히 내가 테스트했을때는 잘되던것들이 사용자들은 안되기 시작하고 생각지도 못했던 부분에 문제가 발생하는 일이 생길겁니다.

더 큰 문제는 이러한 문제들을 우리가 알 수 없다는 것입니다..

가끔 아주 착하거나 의욕적인 사용자분들은 개발자 이메일로 보내서 오류를 알려주시기도 하고 해당 어플 리뷰에 오류가 난다고 도배되는 현상이 발생하게 됩니다.

물론 개발자콘솔의 '다운및 ANR'이 있긴하지만 사용자가 보고를 하지 않는이상 우리는 절대 알길이 없습니다.



그래서 우리는 오류를 추적하고 해결해야만 합니다.

제가 사용해본 오류 리포팅 서비스(혹은 그에 준하는 기능을 제공하는 서비스)는 Google Analytics, URQA, Userhabit, Fabric Crashlytics입니다.

그외에 New Relic, ACRA등이 있지만 제가 사용해본 서비스가 아니기때문에 제외하였습니다.


결론적으로 제가 가장 만족스러웠던 리포팅 툴은 Fabric Crashlytics입니다.








Google Analytics(GA)


홈페이지

연동방법


엄밀히 말하면 에러 리포팅만을 위한 툴은 아닙니다. 오류분석보다는 더 많은 다양한 용도로 쓰이는게 GA입니다.

오류분석외에 다른 용도로는 정말 좋은기능들이 많아서 실제 서비스를 운영하신다면 꼭 추가하셔서 사용하시길 추천합니다.

(일별 다운로드/사용자 숫자, 실시간 사용자, utm source를 이용한 플레이스토어 다운로드 경로, custom event를 통한 사용자 이용패턴 분석, 사용자 성별/나이/관심분야 등등)


물론 [충돌 및 예외]에서 사용자의 오류를 확인해볼 수 있지만 아래 그림처럼 단순히 어떤 오류가 몇번째 줄에서 발생 했는지밖에 알 수 없습니다.

오류별로 그룹화 되어있는것이 아니라 앱 버전별로 묶여 있기때문에 제가 느끼기에는 불편해보였습니다. (fabric은 오류별로 묶여있고 그안에서 버전별로 나뉩니다)

또한 오류가 발생한 사용자들의 기기정보/버전정보/메모리정보 등 오류가 발생한 상황에 대해서 전혀 알수 없습니다.


말하다보니 GA가 엄청 안좋은 서비스인것처럼 묘사되어있는것 같지만 이 기능을 제외하고 나머지는 너무나도 편리하고 유용한 기능을 제공해 줍니다.

(구글님 사랑합니다)















URQA


홈페이지

연동방법


URQA는 우리나라 회사에서 만든 서비스입니다.

서비스 이름에서도 볼수있듯이(Your QA겠죠?) 모바일을 위한 오류분석 서비스입니다.

아래 이미지는 URQA홈페이지에 소개되어있는 간단한 소개입니다.







URQA에서 GA보다는 좀더 나은 오류보고서를 확인할 수 있습니다.

하나의 오류에 대해서 Exception Stack을 보여줄뿐만 아니라,  오류가 발생한 사용자들의 통계를 확인해 볼수도 있습니다.

(OS버전별 / 앱버전별 / 기기별 / 국가별)










또한 각 사용자별로 어떤 상황에서 오류가 발생했는지 알수 있도록 기기정보다 OS버전정보는 물론이고 GPS, 배터리, 와이파이등의 상세한 정보를 살펴볼 수도 있습니다.






전체적으로 제가 원하는 기능에 근접한 오류리포팅을 제공했지만 그리고 실제로 한동안 운영하는 서비스에 적용하기도 했었지만 현재는 사용하지 않고 있습니다.

URQA 개발자분들께는 죄송하지만 리포팅 UI가 별로 이쁘지 않았습니다...(단순...)




그리고 연동방법이 Android Studio기반이 아닌 Eclipse기반으로 설명되어있고 라이브러리를 gradle에 추가하는 방식이 아닌 jar파일을 추가하는 방식이어서 뭔가  '관리가 안되고있는건가?' 라는 느낌을 받기도 하였습니다..







유저해빗


홈페이지

연동방법



유저해빗 또한 GA와 마찬가지로 오류분석만을 위한 서비스는 아닙니다.

아래 이미지는 유저해빗 홈페이지에 소개되어있는 서비스 소개입니다.




유저해빗에서 제공하는 다양한 기능들은 여기에서 확인해 볼 수 있습니다.


흥미로운 기능은 히트맵세션리플레이 입니다.


히트맵은 우리가 만든 화면에서 사용자들이 어느위치를 터치를 가장 많이 했는지 등의 터치 히트맵 정보와 그와 관련된 정보들을 확인 해 볼수 있습니다.

예를들면 5개의 선택버튼중 사용자들이 어디를 가장 많이 누르는지를 확인해 볼 수도 있고, 

리스트에서 아이템을 선택하는것과 검색창을통해 선택하는 경우에 사용자들이 어떤방식의 선택을 더 선호하는지도 살펴볼 수 있습니다.











오류와 관련된 부분은 세션리플레이 입니다.

세션 리플레이에서 [크래쉬 세션]만을 필터링해서 살펴볼수 있습니다.

단순히 에러로그 스택이 아닌 사용자가 앱을 사용한 영상을 보듯이 세션을 리플레이하여 어느상황에서 어떻게 오류가 났는지 확인해볼 수 있습니다.





유저해빗은 에러리포팅에 특화된 서비스가 아니기때문에 오류 리포팅관련해서는 다른 서비스에 비해서 강하지는 않습니다.

오류 리포팅과 함께 사용한다면 오류리포팅에서 채워지지않는 부분들을 좀더 다양한 시선으로 확인할 수 있을것입니다.


현재는 서비스가 무료로 제공되고 있지만 얼마전 있었던 '정식출시 기능 설명회'에 따르면 조만간 유료화가 될 예정인것 같습니다.

과금은 스크린뷰수에 따라서 과금될 예정이며 물론 일정수준의 스크린뷰까지는 무료로 제공됩니다.

정식출시되면서 확정된 과금방식을 참고해볼 필요가 있습니다.



참 좋은 서비스이기도 하고 유저해빗쪽 이사님과도 친분이 있어서 피드백이나 오류에대해서 즉각 반영해주는편이십니다.


지금까지 유저해빗을 사용하면서 두번의 중대한 서비스 오류가 있었습니다.



1. 'ShowcaseView' 라이브러리를 사용하고 있던중에 유저해빗과의 충돌로 앱이 실행하자마자 죽는현상이 발생해서 모든 사용자가 앱을 사용하지 못하였습니다.

2. 저는 View에 setTag(),getTag()개념을 많이 사용하는데 유저해빗 라이브러리의 일부 기능에서 setTag(),getTag()하는 부분이 있어서 충돌로 인해 앱이 의도치않은 실행을 한적이 있습니다.


아직 정식서비스가 아니기도 하고 이전에 발생했던 두번의 중대한 오류때문에 현재는 제가 운영하는 서비스에서 유저해빗을 사용하지 않고 있는 상황입니다.


+2017.03.18

2016년 3월 정식출시이후에는 위의 2가지문제가 해결되었다고 합니다.

현재는 위와관련된 오류는 없다고 하니 착오 없이 사용하시기 바랍니다.





Fabric Crashlytics


홈페이지

연동방법





위에서 결론적으로는 fabric이 제일 좋았다고 해놓고 너무 오래 기다리셨죠?

(원래 주인공은 항상 나중에 등장하는법)


이 서비스는 트위터에서 Crashlytics를 인수해서 현재 Fabric Crashlytics라는 서비스로 제공되고 있습니다.


모든 앱에는 충돌이 존재하고, 이런 충돌들은 실제로 앱의 사용에 큰 영향을 미칩니다. 

전세계엔 수백만 개의 앱들이 있고, 사람들은 낮은 평가를 받은 앱을 선택하지 않습니다. 

당신의 앱에 왜 충돌이 일어나는지, 얼마나 많은 사용자들이 불편을 겪고 있는지, 무엇이 문제인지 알아내는 것은 앱의 성공을 위한 필수요소지만 동시에 매우 어려운 일입니다. 

크래시리틱스(Crashlytics)는 이런 문제를 해결하기 위해 존재합니다. 

크래시리틱스는 오류를 감지해 찾아내고 버그를 수정하는 데에 필요한 시간을 절약해주어 개발자가 디버깅에 시간을 쓰는 대신 더 좋은 앱을 만드는 데에 집중할 수 있게 해줍니다. 

겨우 지난 30일 동안에 크래시리틱스가 찾아낸 충돌은 5억 5천만 건입니다. 

크래시리틱스는 충돌을 찾아내는 데에 그치지 않고 어떤 코드가 문제를 일으키는지 찾아주기 때문에 버그를 수정하고 업데이트를 제공하는 데 드는 시간을 아낄 수 있습니다.


트위터 공식계정 Fabric 소개글에서


연동방법은 정말 미친듯이 쉽습니다.

안드로이드 스튜디오에서 Fabric IDE만 설치하시면 됩니다.

그다음부터는 [Next],[Next] 만 눌러주시면 끝입니다.

Manifest에 추가하고 Application class에 추가하고 하는 등의 작업들을 알아서 다 해줍니다.




사실 여기서 뿅가버렸습니다.

사실 오류리포팅 서비스를 연동하는게 그렇게 어려운 작업은 아니지만 정말 다음,다음만 누르면 설정이 끝나는것에 매료되어 버렸습니다.



아래 이미지는 메인 오류리포팅 화면입니다.







오류 유형별로 묶여서 정렬되어 있고 몇명의 사용자로부터 몇개의 오류가 있었는지 파악할 수 있습니다.

각 오류를 선택하면 해당 오류에대한 상세 정보들을 표시해줍니다.

발생빈도를 차트별로 보거나 URQA에서 제공되었던 OS별,디바이스별로 살펴볼수도 있습니다.

또한 각각 세션에 대해서 오류가 발생했던 디바이스의 상태정보에대해서도 살펴볼 수 있습니다.





















지금까지 제가 사용했었던 오류 리포팅 서비스와 후기에 대해서 포스팅 해보았습니다.

물론 위의 서비스들을 모두 사용하셔도 상관없습니다.

하지만 너무 많이 분산하는것또한 체크해야할부분들이 많아지고 관리포인트가 많아지는 부분에서는 좋지 않을수도 있을겁니다.



또한 가끔 알수없는 오류이거나 오류분석툴 자체의 오류가 발생하기도 합니다.









위에서 소개해드린 오류 리포팅서비스들을 모두 살펴보시고 직접 체험해보시면서 장단점을 느껴보시길 권합니다.

그중에서 본인에게 가장 잘 맞는 것들을 적용하셔서 마지막 오류 하나까지도 끝까지 찾아가서 없애버리는 평온한 앱을 만드시길 기원합니다.




감사합니다.


Comments