App Bundle을 사용해 앱 크기를 1/3로 줄임으로써 가볍게 유지한 트위터

트위터는 무엇이든지 간단하게 만드는 데 도사입니다. 그래서 Google에서 Android App Bundle을 발표했을 때 트위터는 App Bundle이 앱 크기를 줄이는 데 어떤 도움이 될지 확인하기 위해 사전 체험판 프로그램에 참여했습니다.

트위터팀에 있어서 앱을 가볍고 설치하기 쉽게 유지하는 것은 중요했습니다. 특히 데이터 연결 상태가 양호하지 않아 대용량 앱을 사용하기 어려워하는 신흥 시장의 사용자는 작은 앱 용량을 선호합니다. 트위터의 수석 소프트웨어 엔지니어인 세사르 푸에르타는 “저희는 모든 사용자가 장소에 구애받지 않고 트위터를 사용할 수 있기를 바랐습니다. 특히 신흥 시장의 사용자도요. 그러면서 앱 사용자를 많이 확보하려면 APK 크기가 관건임을 알게 되었죠. App Bundle은 복잡한 과정 없이도 배포 크기를 크게 줄일 수 있는 직관적인 해결 수단이 되었습니다.”라고 말합니다.

진행한 작업

App Bundle을 도입하기 전에 트위터에서는 앱을 직접 4개의 ABI로 분할했고, 이는 앱 크기를 어느 정도 줄이는 데 도움이 되었습니다. 하지만 이보다 App Bundle이 훨씬 더 간단하고 효과적인 방법이었으므로 트위터에서는 적극적으로 App Bundle을 도입했습니다.

트위터는 App Bundle을 도입하기 전, App Bundle의 요구사항 중 하나인 Play 앱 서명이 트위터의 보안 표준을 충족하는지 확인하기 위해 충분한 시간을 들여 검토했습니다. “미리 시간을 많이 들여서라도 검토하는 것이 좋다고 판단했죠. 대신 App Bundle의 최종 버전을 사용할 수 있었을 때는 도입이 매우 간단했고, 동작 지연도 발생하지 않았습니다."라고 세사르는 말했습니다.

트위터에서는 앱을 개발할 때 번들 도구를 사용해 APK를 추출하여 QA팀에 배포했습니다. 또한 앱을 프로덕션 트랙에 출시하기 전에 많은 사용자를 대상으로 App Bundle을 폭넓게 테스트했습니다. 이 과정은 매우 효과적이었으며, 트위터에서는 나중에 더 많은 테스트 참가자 확보 및 더 빠른 문제 발견을 위해 이 내부 테스트용 'dogfood' 앱을 Play 스토어로 전환했습니다.

결과

전환이 완료되었을 때 트위터팀에서는 아무런 문제 없이 1,360만 명의 사용자에게 새로운 모듈형 버전의 앱을 배포했습니다. 트위터의 앱 출시 과정은 이미 자동화되어 있었으므로 새로운 출시 절차는 이전 출시와 매우 유사하게 진행되었습니다. 그러나 예상치 못한 장점도 있었습니다. 세사르는 "버전을 출시할 때 버전 ID를 4개(ABI 분할용)나 관리하는 대신 1개만 관리할 수 있어서 측정항목을 통합하는 데 도움이 되었습니다."라고 말합니다.

더욱 중요한 점은 트위터에서 ABI 분할을 통해 앱 크기를 줄인 후에도 App Bundle을 통해 추가로 줄이는 데 성공하여 앱 크기가 전반적으로 30~40% 감소했다는 것입니다. 이 효과를 위해 활용한 방법 중 하나는 기능 모듈을 사용해 ABI 1개당 3MB의 대용량 네이티브 라이브러리를 배포하는 방식이었습니다. 이러한 대용량 네이티브 라이브러리는 소수의 기기에만 필요한 항목이었습니다.

트위터는 이제 트위터의 실시간 동영상 공유 앱인 Periscope도 App Bundle로 이전하기 위해 계획 중입니다. 세사르의 팀은 트위터 앱을 모듈화하는 작업도 진행하고 있습니다. 세사르는 "완전히 분리된 기능 모듈로의 전환을 마무리하고 나면 여러 가지 기능의 동적 배포를 고려할 예정입니다."라고 말했습니다. 하지만 이는 6~12개월 후에야 실제로 진행될 것으로 예상된다고 덧붙였습니다. 그는 또한 모듈화 작업을 통해 개발자들이 트위터와 Periscope에 모듈을 재사용함으로써 시간을 크게 절약하고 불필요한 중복 절차를 줄일 것으로 기대하고 있습니다.

시작하기

앱 및 게임 개발자라면 누구나 Android App Bundle을 사용할 수 있습니다. 지금 시작하기