공개SW 개발자센터


- 공개SW개발자센터는 공개SW 리더로 성장할 개발자와 커뮤니티를 지원합니다 -

공개SW역량프라자에서는 오픈프론티어로 활동중인 개발자들이 진행하는 프로젝트를 소개합니다.


URAQ 프로젝트는 안드로이드 앱을 배포한 후 발생하는 여러 버그를 수집하여, SW 품질을 높이는 Bug Reporting을 위한 공개SW 프로젝트이다. 

이 글에서는 UrQA 프로젝트의 개발배경 및 목적을 소개하고 UrQA 프로젝트 현황, 추진 내용, 적용 분야 등에 대해 설명하고자 한다.


프로젝트명URQA
개요안드로이드 앱을 배포한 후 발생하는 여러 버그를 수집하여, 소프트웨어 품질을 높이는 Bug Reporting 무료 서비스
특징- 버그의 등급 및 버그정보 시각화
- 발생한 버그의 사용자 이벤트를 시각화
- 시간별, OS별, verson 등의 단위로 발생한 다양한 통계데이터 제공
목표Open sorce 모바일 버그 리포팅 서비스
기대효과무료로 사용할 수 있는 모바일 버그 리포팅 서비스
리퍼지토리http://github.com/urqa

[목차]

  1. 프로젝트 개요 

    1.1. 개발배경 및 목적

    1.2. UrQA 시스템 구성도

        1.2.1. 서버 아키텍처

        1.2.2. 클라이언트 아키텍처 - 안드로이드 

        1.2.3. 클라이언트 아키텍처-자바스크립트 (타이젠, 폰갭, 센차 등)

    1.3. 메뉴 구성도

    1.4. 개발언어

    1.5. 사용시스템

  2. 프로젝트 현황

  3. 추진 내용

  4. 프로그램 적용 분야

  5. 참조 자료

    5.1. 주석 및 메뉴얼

    5.2. 시연 가능성

    5.3. 개발 문서

    5.4. 프로젝트 공개 여부


1. 프로젝트 개요


1.1. 개발배경 및 목적

스마트 폰의 출현으로 모바일 SW 시장이 매우 빠른 속도로 증가하고 있다. 이러한 시장 성장은 기존의 SW 개발자들을 모바일 SW 시장으로 뛰어들게 해주었다. 개발자가 모이면서 SW가 더 다양해지고 사용자들도 계속해서 모이는 선순환을 거쳤고, 모바일 SW 시장은 SW 시장의 거대한 한 축을 가지게 되었다.

하지만 모바일 시장이 폭발적으로 증가하면서 SW를 뒷받침하기 위한 개발 툴은 제대로 발전하지 못한 상태이다. 프로젝트 UrQA는 이러한 모바일 SW 시장에서 개발 툴 중에 가장 중요한 디버깅 시장을 공략하고자 한다. 또한, 프로젝트를 더욱 발전시켜 SW 프로파일링 시장까지 확장하고자 한다.

Android market_1.JPG 

[그림 1] 안드로이드 마켓



모바일 “Bug & Crash Report”(이하 버그리포팅) 시장은 2011년 처음 형성되었다. 현재 모바일 SW 시장에 공식적으로 등록된 앱의 수는 안드로이드 플레이스토어의 경우 약 85만 건 이상이며[그림 1], 미국 아이폰 앱스토어만 해도 90만 건 이상이다. 안드로이드 마켓 분석 사이트인 Appbrain.com의 통계에 따르면 안드로이드의 경우 앱 전체의 약 10%가 버그 리포팅 서비스를 사용하고 있다[그림 2]. 버그 리포팅 시장은 주목 받은 지 얼마 되지 않아 아직은 크지 않은 숫자를 보이지만 최근 생성되는 앱의 경우, 약 19%가 서비스를 사용하고 있으며 꾸준히 그 규모가 커지고 있다[그림 3].


using android_2.jpg 

[그림 2] 안드로이드 전체 앱 중 Bug Report를 사용하는 앱



          new app_3.JPG

[그림 3] 새로 만들어지는 앱 중 Bug Report를 사용하는 앱



market share_4.jpg 

[그림 4] Bug & Crash Report Market Share


bugsense_5.jpg 

[그림 5] splunk사의 Bugsense


최근 버그리포팅 회사 Bugsense는 세계 최대의 네트워크 모니터링 회사인 Splunk에 인수되었으며, 가격을 3배로 올렸다. [그림 6, 7 참조] 이는 시장 가치를 인정받았다는 뜻이며 고객이 돈을 내고 사용하는 서비스라는 의미이다.


early price_6.jpg [그림 6]Bugsense 초기 가격


price_7.jpg [그림 7] Bugsense 현재 가격


UrQA는 모바일 앱에서 버그를 분석해 주는 공개SW 겸 클라우드 서비스다. 크리에이티브 커먼즈(CC) 라이선스 아래 무료로 내려 받아 내부용으로 쓸 수도 있다. 위에서 언급한 버그센스의 경우, 분석하는 버그 숫자가 월 500개를 넘어가면 만만치 않은 비용을 내야 한다. 이와 달리 UrQA는 아직은 모두 무료다.

UrQA는 C++과 자바로 만들어진 앱에 있는 버그를 모두 잡아낸다. 안드로이드 NDK(Native Development Kit)도 지원한다. 지금은 안드로이드 앱, iOS 앱 개발자들도 활용할 수 있다.


 1.2. UrQA 시스템 구성도

 1.2.1. 서버 아키텍처


server_8.jpg 

[그림 8] 서버 아키텍처 구성도


○ Frontend : 프론트 엔드를 구성하고 있으며, 각 화면 페이지 마다의 정보를 가져오는 작업을 하고 있다.

○ Data Handler : 안드로이드, 자바스트립트 기반의 폰, IOS 의 기본적인 에러를 전송 받는 곳이다. 

○ Native Handler: 안드로이드일 경우 NDK 일시 SO 파일 정보, IOS일 경우 Dsym파일을 전송 받음으로써 Byte 

Code의 정보에 심볼릭 정보를 더하여 사람이 읽을 수 있는 코드로 변경하는 부분이다.

○ Client Data Receiver : 외부 클라이언트와 통신하기 위해 Restful Service 형태로 제공하고 있다.

  

  1.2.2. 클라이언트 아키텍처 - 안드로이드


  client_9.jpg


[그림 9]클라이언트 아키텍처 - 안드로이드 구성도

   

 User Program이 비정상적으로 죽거나 에러가 발생했을 경우 전송한다. 전송 받은 정보를 기반으로 현재 콜스택, 로그,  덤프 그리고 다양한 센서의 정보를 수집한다. 이 정보를 JSON Parser를 통해서 Encoding한다.  NDK나 iOS인 경우 심볼릭 링크 정보를 같이 전송한다.


  1.2.3. 클라이언트 아키텍처 - 자바스크립트 (타이젠, 폰갭, 센차 등)

10_clientarchi.png 
[그림 10]클라이언트아키텍처-자바스크립트 구성도

하이브리드 앱이나 웹앱을 지원하기 위해 기존 안드로이드 라이브러리를 내부적으로 호출해서 네이티브도 지원을 하면서 동작한다. 기존의 다양한 자바스크립트 계열을 지원하기 위해 아파치 코도바(Apache Cordova)를 지원하고 있다. 코도바로 대부분의 기능은 지원되나, 타이젠이나 플랫폼 별로 특성을 타는 로직들은 별개로 처리하고 있다.

1.3. 메뉴 구성도
 - Insight: 주별 에러 수와 에러 등급을 시각화하여 보여준다.

insight_11.jpg 
[그림 11] UrQA – Insight 페이지

   - Errors: 에러를 앱 버전별, OS 버전별 그리고 이슈 상태(New, Open, Fixed, Ignore)를 필터링화하여 분류할 수 있다.

errors_12.jpg
[그림 12] UrQA – Errors 페이지

 - Statistics : 통계 화면을 제공한다. 일별, 주별, 월별 등의 에러를 볼 수 있다. 어느 클래스에서 에러가 많이 발생하였는  지, 어느 폰에서 많이 발생하였는지, 에러의 앱과 OS의 상관관계를 표현하여 준다.

Statistics _13.jpg
[그림 13]  UrQA – Statistics 페이지

   1.4. 개발언어
   Django, Java, C++, Objective C, Java Script, HTML, CSS, node.js

   1.5. 사용시스템
   Ubuntu 12.04, MySQL, REDIS   

2. 프로젝트 현황

현재 Java Script, Tizen은 개발이 완료되었으며, Unity와 iOS 개발을 진행 중이다. 프로젝트 홈페이지 개편과 함께 User Guideline 및 서버 구축 매뉴얼(영문 버전), 분산 아키텍처 기술서(영문버전) 작성을 함께 진행 중에 있다. 또한, 더욱 더 안정적인 서비스를 위해 클라우드 환경으로 서버 이전 및 서비스 안정화를 진행 중이다. (http://urqa.io 참조)


3. 추진 내용 

위 프로젝트에서 Server Side 개발을 주도하고 있으며, 주로 Backend 아키텍처 설계 및 개발을 진행하고 있다. 아울러 backend endpoint들은 node.js와 python으로 개발 완료하였으나, 대용량 데이터를 위한 분산 처리 시스템을 위해 go lang과 erlang, 그리고 mariaDB로 교체 진행 예정이며 이에 대한 아키텍처를 설계 및 Test Base에서 개발진행 중이다.


4. 프로그램 적용 분야

   UrQA는 모든 품질을 보장하는 솔루션으로 발전하려고 한다. 단순히 Crash Report를 넘어서 프로파일링, 그리고 자동화    테스트까지 지원을 할 생각이다. 또한, Unity 및 iOS도 안정적으로 개발하여 게임 쪽 Crash를 지원할 예정이다.


5. 참조 자료


 5.1. 주석 및 메뉴얼 

     ○ Android

https://www.dropbox.com/s/6m2huj4l5bbiz8k/android_document.zip?dl=0

     ○ JS, Tizen

https://www.dropbox.com/s/pi72b36djvifwkn/js_tizen_client_docs.zip?dl=0

     ○ Django

https://github.com/UrQA/URQA-Server (직접 repo 참고) 


 5.2. 시연 가능성

    ○ urqa 기본 동영상

 http://www.youtube.com/watch?v=uC0u570xxHM&feature=youtu.be


     ○ JS Client & TIZEN Client DEMO

http://www.youtube.com/watch?v=akWGtM6jxI0&feature=youtu.be


 5.3. 개발 문서


    ○ UrQA User Guide 

 https://docs.google.com/document/d/10ZR7Rken21j8c3WZTiPSBi5-pXlYSQHJfsc3h7QCHaE/edit?usp=sharing

     ○  UrQAProguard Support - Server & Android

 https://docs.google.com/document/d/1qIGKtFIST_EyU9XAeCrZ_qP85QkSFFzoPhdtNh46RDM/edit?usp=sharing

     ○ UrQA Server Install Guide

if you want to bulid UrQA server at your machine, you refers at https://docs.google.com/document/d/1NCBxk6MRz7rAFygk0J9wYbWJ4bt-CVYQhjQ94ZROLr8/edit?usp=sharing

     ○ UrQA DB ERDiagram : https://docs.google.com/file/d/0B-p_Ig-CmFFeSlFLWmdEWDlseEk

     ○ UrQA Protocol Documentation

https://docs.google.com/document/d/1PKUL0H1H_IJxM4CHGelH7R16KGFnn9bJdcuYZFDrT7k/edit 

http://docs.urqa.apiary.io

     ○ UrQA Issue

http://issues.urqa.io로 사용 중  (이전 2개월 데이터는 아래 참고)

     ○ Server Issue

https://github.com/UrQA/URQA-Server/issues?state=open

     ○ Android Issue

https://github.com/UrQA/UrQA-Client-Android/issues

 

 5.4. 프로젝트 공개 여부

 https://github.com/urqa에서 참고.

 주요 소개는 https://github.com/UrQA/URQA-Server에 있다.


[필자소개]

khj_14.png
김현종
• 주요경력2015 Neo games 게임 서버 개발
2014 (주) 구미 코리아 게임 서버 개발, Backend Service 개발 및 구축
• 활동 커뮤니티EVA
• 전문분야C/C++, Python, Golang, Erlnag, Nodejs, MySQL(MariaDB), NoSQL(Redis,MongoDB) 등


by 공개SW역량프라자에 의해 작성된 이 저작물은 크리에이티브 커먼즈 저작자표시-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.
List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 오픈프론티어 개발 프로젝트 연재 OSS 2016-08-06 2455
25 [3기 정진영 개발자] XPUSH (실시간 커뮤니케이션 플랫폼) file OSS_ 2017-02-20 1233
24 [3기 방진호 개발자] Blink (웹브라우저 크롬의 레이아웃 엔진) file OSS_ 2017-02-20 1127
23 [3기 송태웅 개발자] Linux Kernel - perf(리눅스 서버의 버전별, 기능별 성능측정 분... file OSS_ 2017-02-08 2907
22 [2기 채수원 개발자] Yona (설치형 프로젝트 호스팅 SW) file OSS_ 2017-02-08 1292
» [2기 김현종 개발자] UrQA (Android Crash Report 도구) file OSS_ 2017-02-07 1023
20 [2기 임정민 개발자] 구름IDE (클라우드 통합 개발 환경) file OSS_ 2017-02-07 1283
19 [3기 김영근 개발자] Pandas (빠르고 유연한 데이터 처리를 위한 파이썬 라이브러리) file OSS 2016-12-22 1629
18 [3기 윤제상 개발자] Apache Zeppelin (빅데이터 처리툴 Spark의 실행과 데이터 시각... file OSS 2016-12-16 2399
17 [3기 신정규 개발자] 텍스트큐브/메모리큐브 (개인화에 집중한 설치형 블로그 서비스 ... file OSS 2016-12-16 1137
16 [3기 김종광 개발자] IoT분야의 통신, DB, 데이터 분석을 지원하는 개발지원플랫폼 file OSS 2016-12-15 1258


사이트하단 로고, 하단메뉴, 트위터 바로가기

퀵메뉴모음
퀵메뉴열기
퀵메뉴닫기