유저해빗의 매거진

아직도 크래시를 로그만으로 해결하고 있나요?

유저해빗

2019.03.14 19:19
  • 1133
  • 콘텐츠에 ‘좋아’해줘서 고마워요 -
    0
  • 0

  

- 앱의 안정성과 사용성에 큰 영향을 미치는 크래시

여러분 앱이 좋은 평가를 받기 위해서는 앱의 안정성을 모니터링하고 크래시 발생수의 최소화하는 것이 필수적입니다. 아무리 많은 테스트를 거쳐 앱을 출시하더라도 크래시는 발생하곤 합니다. 사용자가 많아질수록 환경과 사용 케이스가 다양해지기 때문입니다. 그런 상황에서 크래시 대응 속도는 고객의 평가에 있어 그 무엇보다 중요한 요소가 됩니다.

  

- 앱의 크래시 해결을 위해 중요한 2가지 관점

크래시를 제때에 파악하고 빠른 크래시 해결로 앱의 안정성을 강화하기 위해서는 2가지 관점에서 문제에 접근해야 합니다.

첫째는 어떤 크래시를 먼저 해결해야 할지 우선순위를 정하는 것이고,

둘째는 해당 크래시를 빠르게 재현하여 문제를 파악하는 것입니다.

 

유저해빗은 이러한 2가지 관점에 대해서 해답을 줄 수 있습니다.

첫째, 유형별로 구분한 크래시 리스트를 통해 각 유형의 상황을 파악하고 문제 해결의 우선순위를 정할 수 있습니다.

둘째, 유저해빗의 강력한 리플레이 기능으로 해당 크래시의 재현에 소요되는 시간을 없앨 수 있습니다.

  

- 오직 유저해빗에서만 가능한 크래시 발생상황 재현 기능: 리플레이

리플레이 기능에서는 어떤 사용 케이스에서 크래시가 발생했는지 동영상 형태로 재현할 수 있습니다. 이로 인해 로그만으로는 아쉬운 상황에서 크래시에 대한 원인 훨씬 더 쉽고 빠르게 파악할 수 있습니다. 즉, 크래시 케이스를 추측을 통해 반복적인 테스트로 찾는 과정을 생략하고, 사용자들이 실제 행동한 결과를 직접 볼 수 있는 것이죠.

 

 

 크래시가 발생한 세션을 재현하는 유저해빗의 리플레이 페이지

 

위에서 말씀드린 것처럼, 유저해빗은 다른 크래시 분석툴에서 제공하는 기본적인 크래시 발생 현황, 유형별 크래시 목록, 크래시 로그뿐만 아니라, 유저해빗에서만 제공하는 리플레이 기능을 활용하여 빠른 문제 해결을 가능하게 합니다. 실제로 크래시 분석 출시 이후에 고객사에서도 "리플레이를 통해 타사에서는 볼 수 없는 사용 과정을 재현해 볼 수 있어 크래시 해결에 몹시 유용하다."는 평가가 많았습니다. 심지어 1kb 미만의 데이터 사용량으로 구동하기 때문에 앱의 성능에도 큰 영향을 미치지 않죠. 여러분들도 강력하고 가벼운 크래시 리포트 툴을 찾고 있다면 유저해빗을 사용해 보세요.

 

그럼 이제부터는, 실제 사례를 통해 크래시 이슈를 해결하는 과정을 살펴보도록 하겠습니다. 

 

어떤 크래시를 먼저 해결해야 할지 우선순위를 정하고,

해당 크래시를 어떻게 해결해야 할지 방법을 찾아봅시다.

 

 

1) 긴급하게 처리해야 하는 이슈는 없나?


 크래시 트렌드의 최근 24시간 발생 현황 차트


 

크래시 트렌드의 최근 24시간 발생 현황 차트를 확인해 보겠습니다. 최근에 발생한 크래시 수를 실시간으로 파악함으로써 현재 크래시가 폭발적으로 증가하고 있지는 않는지 살펴봅니다.

위 사진을 보면 다행히도 해당 앱에 최근 24시간 이내에는 크래시가 발생하지 않은 것을 확인할 수 있습니다.


2) 크래시에 대응해야 하는 상황인가?



 보고된 크래시의 주요 요약 지표

 

모든 크래시를 발생할 때마다 바로바로 해결하는 것이 가장 좋겠지만, 쉽지 않습니다. 현실적으로는 다른 개발업무와 크래시 해결 중에 우선순위를 정해야겠죠.

위 그림과 같이 주요 지표를 모니터링하는 것만으로도, 이것을 판단할 수 있습니다. 만약 크래시 비율을 사용자 기준으로 1% 미만으로 유지하는 것을 목표로 설정했다면, 현재 1.7%이므로 앱의 안정성을 위하여 크래시 대응을 우선적으로 하는 것이 좋을 것입니다.

 

 

3) 우선적으로 해결해야 할 크래시는 무엇일까?


 보고된 크래시의 유형별 리스트

 

빈도가 높은 유형 순으로 나열된 리스트에서 우선순위가 높은 크래시 이슈부터 빠르게 대응할 수 있도록 도와줍니다. 예를 들면,

[1] 현재 10개의 크래시가 발생한 상황입니다. 

[2] 발생 빈도 6회로 가장 높은 크래시 유형을 보면 특정 사용자나 특정 활동에 의한 것보다는 앱 전반적으로 발생하고 있습니다.

[3] 반면 1회씩 발생한 크래시들은 특정 버전에서만 발생하는 크래시네요.

 

발생 빈도가 높았던 최상단의 이슈를 우선적으로 해결하기 위해 해당 유형을 클릭하여 살펴보도록 하겠습니다.

 

 

4) 크래시의 패턴을 찾아보자.


 가장 크래시 빈도수가 높았던 유형의 요약 지표

 

크래시의 원인을 찾기 위해서는 발생 패턴을 파악하는 것이 중요합니다. 이러한 패턴은 먼저 앱의 버전, OS 버전, 디바이스의 종류로 확인해 볼 수 있습니다. 특정 환경에서만 발생하는 문제라면 그 원인을 추측해야 하는 범위가 상당이 줄어들기 때문입니다.

위 이미지의 상황에서는 해당 크래시 유형의 경우 앱 버전, OS 버전, 디바이스가 다양하게 나타나 패턴을 특정하기는 힘들어 보입니다.

 

해결을 위해 다음을 살펴보도록 하겠습니다.

 

 

5) 크래시 스택 트레이스를 확인해보자.


크래시 발생 세션의 스택 트레이스 확인

 

크래시의 스택 트레이스는 개발자가 가장 먼저 에러의 원인을 찾을 수 있는 방법입니다. 코드 라인과 함께 어떤 에러가 발생하는지 확인할 수 있습니다.

[1] 해당 에러는 java.io.InterruptedIOException: thread interrupted로 발생한 크래시네요.

[2] 스택 트레이스에는 에러 발생 위치(145번째 줄)를 알 수 있는 크래시 로그를 포함하고 있네요.

[3] 발생 위치에 해당하는 코드로 이동하여 크래시의 원인을 유추해 봅니다. 하지만 한 줄의 코드(emitter.onError(e); )로는 크래시의 원인을 파악하는 데에는 어려움이 있네요.

 

무엇이 문제인지 사용자의 크래시 발생 상황을 리플레이해 보겠습니다.

 


6) 문제 발생 패턴을 찾는 마지막 방법, 크래시 리플레이

 


 

지금부터 소개해드리는 기능은 타 서비스에서 제공하지 않는 크래시 세션 리플레이 기능으로 오직 유저해빗에서만 확인이 가능합니다.

 

일반적으로 크래시를 해결할 때, 특정 디바이스나 OS 등으로 나타나는 패턴과 스택 트레이스 정보로 해결을 하곤 합니다. 하지만 이러한 정보만으로 해결이 어려운 크래시들은 오직 개발자의 추측으로 문제를 예상하고 추적하게 됩니다. 이러한 과정은 정말 곤욕스럽고 힘이 드는 과정이지요.

 

하지만 유저해빗에서는 해당 크래시 상황을 직접 볼 수 있으므로 원인을 훨씬 쉽게 파악할 수 있습니다. 해당 크래시 세션에 대한 리플레이 기능으로 사용자들이 앱을 어떻게 사용하다가 크래시가 발생하였는지 알 수 있는 것이죠.

 

위 그림을 보면 해당 크래시는 모두 앱을 백그라운드로 이동하는 상황에서 발생하는 것을 확인할 수 있습니다. 그러면 이러한 상황이 쓰레드에 영향을 줄 수 있다는 것을 짐작할 수 있습니다. 그렇다면 관련 코드에 크래시가 발생하는 상황에 대해서 추가적으로 코드 보완을 할 수 있겠네요.

 

 

 

- 마무리하며

크래시 분석은 앱의 안정성뿐만 아니라, 나아가 만족스러운 사용자의 경험에 있어서도 굉장히 중요합니다. 유저해빗은 기존 크래시 분석 툴에서 제공하는 기본적인 정보뿐만 아니라, 크래시 상황을 그대로 재현해 주는 기능을 추가로 제공합니다. 이 기능의 추가로 개발팀은 어떤 상황에서도 쉽고 빠르게 크래시에 대응할 수 있는 능력을 얻게 되는 것이지요. 야근이 줄어드는 느낌이 들지 않으신가요?

 

 

----------

 



고객들의 찬사를 받은 유저해빗의 크래시 분석 기능!

 

  • # 유저해빗
  • #크래시
  • #앱분석
  • #앱서비스