brunch

You can make anything
by writing

C.S.Lewis

by 매스프레소 Aug 12. 2019

QANDA의 AAB 적용기

‘Qanda + Android App Bundle’ — A to Z

안녕하세요. 저는 매스프레소에서 콴다 안드로이드 막내 개발자로 일하고 있는 Devy 라고 합니다.



We R Android

최근에 회사의 한분한분이 최고의 퍼포먼스를 보여주셔서 많은 분들이 콴다에 많은 관심을 주고 계신 것 같습니다.

이러한 관심 속에서 우리 안드로이드 팀도 미디엄을 통해서 우리 매스프레소의 개발 문화, 그리고 어떠한 생각과 비전을 가지고 콴다를 가꿔가는지 기술 블로그를 통해서 여러분들께 소개해드릴 수 있어서 정말 기쁘게 생각합니다.

이번 포스팅에서는 통통한 연애에서 폭발적인 반응을 보이고 있는 ‘문제집’ 서비스를 4월에 추가하고 난 뒤의 통통한 콴다AAB를 통해서 어떻게 다이어트 시키려고 하는지에 대해 자세히 설명 드리도록 하겠습니다.



콴 빼자! 살다야!

콴다의 최근 몸무게


최근, 콴다의 몸무게는… 32.7MB를 찍었습니다!! 올해 2월까지만 해도 23.1MB였던것에 비하면 약 10MB나 살이 쪘네요... ㅠㅅㅠ

최근에는 베트남과 인도네시아에도 Localizing 하여 서비스 하게 되었는데 한국과는 다른 네트환경 때문에 성공적인 진출을 위해서라도 콴다의 다이어트는 우리 안드로이드 팀의 아주 중요한 과제 중 하나가 되었습니다.

그럼 여름은 다이어트의 계절이니 본격적으로 어떻게 살을 빼게 할까 생각을 해봅시다!



Android App Bundle

우리가 콴다같은 친구들을 위해 만들었어 feat.구글


콴다의 성공적인 다이어트를 위해 이것 저것 방법을 찾던 중… 마치 Goo느님이 콴다를 위해 개발한 것만 같은 기능인 Android App Bundle(AAB)를 찾게 되었습니다.


그럼 AAB는 도대체 뭐길래 이렇게 구글에서 홍보하는 것일까요??
출처: https://developers-kr.googleblog.com/2018/05/google-io-2018-whats-new-in-android.html


기존에 우리가 다운로드 받게되는 안드로이드 APK에는 위에서 설명해주는 것과 같이 크게 나눴을때 3가지 요소가 들어가게 됩니다.


1. ABI(Application Binary Interface)

2. 화면 밀도에 따른 리소스

3. 사용언어에 따른 리소스


현재의 모바일 시장은 다양한 제조사에서 다양한 사이즈의 디바이스를 만들어내고 있습니다. 이에 맞춰 모바일 어플리케이션도 다양한 환경에 대응을 하기위해서 다양한 ABI와 Resource, Language등을 지원해야하는 건 당연한 얘기가 되었습니다.


기존 APK 방식 = SM 방식


그래서 기존의 APK는 일단 모든 디바이스에서 동작하도록 하기위해서 지원 가능한 모든 ABI와 Resource, Language를 사용자에게 제공하였습니다.

실제로 어플을 다운받는 유저는 arm, xxhdpi, ko 만 필요로 했지만 말이죠. 그래서 나온 것이 바로 AAB 입니다.


AAB는 qanda.aab 와 같은 파일을 Play Store 게시하게 되면 Google Play가 해당 기기의 ABI, 화면 밀도, 언어에 따라 최적화된 APK파일을 전송하게 됩니다. 또한 특정 기능을 모듈화 하여서 유저가 필요로 하는 특정 기능만을 필요시에 별도로 다운 받을 수도 있습니다.


이렇게 되면 유저는 더욱 더 적어진 다운로드 크기와 디스크 할당 크기, 설치 시간을 줄일 수 있게 됩니다.


현재까지 크고 작은 많은 스타트업에서 AAB를 적용하여 용량을 줄이는데 사용하고 있습니다.


현재 AAB 적용 스타트업


이렇게 다양한 스타트업에서 적용한 AAB가 콴다에서는 특히 더 필요한 이유로는 다음과 같습니다.


1. 국가별로 지원하는 기능이 다르다.

2. 한국에서도 영어 서비스를 쓸 수 있고, 베트남에서도 인도네시아어로 사용 할 수 있게하자.


현재 콴다는 기본적으로는 영어를 기반으로 전 세계에 서비스를 오픈 한 상태이지만, 국가에 따라 서비스하는 기능 또한 다르며, 이용하는 언어의 폭 또한 다양합니다. 현재 Localizing을 하여서 서비스하는 언어는 영어를 제외한 한국어, 일본어, 베트남어, 인도네시아어가 있습니다.



핫한 문제집 서비스

콴다 문제집 서비스


현재 콴다에 존재하는 ‘문제집 서비스’는 한국 콴다에만 존재하는 기능입니다. 한국을 제외한 다른 국가에는 없는 기능이죠.


현재 문제집 서비스의 용량은 약 5MB ~ 10MB 정도의 사이즈를 차지하고 있으며 서비스 지역이 한국인 경우에는 문제집 서비스를 앱 내에 포함하는 것은 아무런 문제가 없지만 한국 이외의 국가의 경우에는 사용하지 않는 문제집 서비스를 코드상으로 포함시키고 있는 것은 리소스 낭비가 생기게 됩니다.

바로 이런 점 때문에 AAB의 Dynamic Feature 기능을 이용하게 되면 한국과 같은 국가는 문제집 모듈을 인스톨하게 되고, 이외의 국가는 기능을 다운 받지 않아 초기에 PlayStore에서 다운로드 해야되는 사이즈를 줄일 수 있게 됩니다.



다양한 언어 지원

5개국어를 지원하는 콴다


현재 콴다는 한국어를 포함하여 총 5개의 언어를 지원하고 있습니다.

콴다가 세계적인 교육 어플리케이션이 되기 위해서 1차 한국어, 2차 일본어, 3차 영어, 4차 베트남어, 인도네시아어를 로컬라이징하여 확대해나가고 있는데 콴다가 적용하고 있는 국가별 drawable, strings 등등의 리소스들 또한 각 나라 별로 앱 내에 포함하고 있습니다.


지원하는 국가의 수가 점점 더 늘어날 수록 콴다의 리소스 또한 많아지게 되는데 각 국가에 따라 리소스를 제공하고 필요한 언어를 추가적으로 다운받을 수 있도록 할 수도 있습니다.



재료는 준비됐다.

이제 AAB로 요리를 해보자


천천히 콴다와 AAB를 조금씩 조금씩 섞어 봅시다. 문제집 서비스 부터 AAB를 적용하려면 시간이 많이 걸리니까 빠르게 언어 부분부터 적용해보도록 하겠습니다.


링크에서 콴다와 AAB를 섞는데 필요한 코드들을 볼 수 있습니다. 참 간단하죠??


BaseActivity 또는 MainActivity에 SplitInstallManager 선언과 splitInstallListener를 등록해주고 state에 따라 분기하여 동작할 작업을 등록해줍니다. (참조 링크)


이제 기본적인 세팅이 끝나면 본격적으로 splitInstallManager를 통해서 언어정보를 다운받습니다. 이와 같이 작업하면 필요에 따라서 언어 리소스를 적용할 수 있습니다.



다이어트 성공한 콴다

짝짝짝…! 무려 32MB에서 23MB로 용량을 약 30% 가량 줄였습니다.

이로써 콴다의 다이어트는 성공적으로 마무리 되었습니다. 문제집 서비스에도 AAB를 적용한다면 조금 더 다이어트를 할 수 있지 않을까요??

아직은 QA를 진행하고 있어서 AAB가 적용된 콴다는 아직 스토어에 출시 되지 않았지만, 콴다를 사랑해주시는 많은 사용자들이 조금 더 나은 경험을 할 수 있도록 빠른 시일 내에 다이어트한 콴다를 만나 볼 수 있도록 준비 하겠습니다!!



글을 마치며…

이 글을 읽어주신 모든 분께 감사드립니다. -Devy


먼저 부족한 글을 여기까지 읽어주신 모든 분들께 감사드립니다.

콴다의 안드로이드 팀에 가장 늦게 합류하게 되었고, 스스로도 많이 부족하고 아직 배울게 많다고 생각하는 제가 Product팀에서는 제일 먼저 글을 쓰게 되어서 ‘어떤 내용의 글을 쓸까? 어떻게 써야 잘 썼다고 할까?’ 고민을 많이 했던 것 같습니다. 그래서 평소에 콴다에 도입하고 싶었던 AAB에 대해 공부하고 적용해서 ‘콴다 AAB 적용기’를 쓰면 좋겠다 생각했습니다. 부족하지만 이 글을 보시는 모든 개발자, 비개발자 분들이 각자의 앱에 AAB의 적용을 도입하시는데 고민중이시라면 도입하시는데 작은 도움이 되었으면 좋겠습니다.


이상 Best Android Team을 꿈꾸는 Devy의 콴다 AAB 적용기 였습니다.

감사합니다!


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari