App Bundle을 활용하여 앱 크기를 3분의 1만큼 줄인 Twitter
Twitter에서 Android App Bundle을 사용해 앱 크기를 줄인 방식을 알아보세요.
배경
Twitter의 팀에게는 앱을 가볍고 설치하기 쉽게 유지하는 것이 중요했습니다. 특히 데이터 연결 상태가 양호하지 않아 대용량 앱을 사용하기 어려워하는 신흥 시장의 사용자는 작은 앱 용량을 선호합니다. Twitter의 수석 소프트웨어 엔지니어인 세사르 푸에르타는 “저희는 모든 사용자가 장소에 구애받지 않고 Twitter를 사용할 수 있기를 바랐습니다. 특히 신흥 시장의 사용자도요. 그러면서 앱 사용자를 많이 확보하려면 APK 크기가 관건임을 알게 되었죠. App Bundle은 복잡한 과정 없이도 배포 크기를 크게 줄일 수 있는 직관적인 해결 수단이 되었습니다.”라고 말합니다.
진행한 작업
App Bundle을 도입하기 전에 Twitter에서는 앱을 직접 4개의 ABI로 분할했고, 이는 앱 크기를 어느 정도 줄이는 데 도움이 되었습니다. 하지만 이보다 App Bundle이 훨씬 더 간단하고 효과적인 방법이었으므로 Twitter에서는 적극적으로 App Bundle을 도입했습니다.
Twitter는 App Bundle을 도입하기 전, App Bundle의 요구사항 중 하나인 Play 앱 서명이 Twitter의 보안 표준을 충족하는지 확인하기 위해 충분한 시간을 들여 검토했습니다. “미리 시간을 많이 들여서라도 검토하는 것이 좋다고 판단했죠. 대신 App Bundle의 최종 버전을 사용할 수 있었을 때는 도입이 매우 간단했고, 동작 지연도 발생하지 않았습니다."라고 세사르가 말했습니다.
Twitter에서는 앱을 개발할 때 번들 도구를 사용해 APK를 추출하여 QA팀에 배포했습니다. 또한 앱을 프로덕션 트랙에 출시하기 전에 많은 사용자를 대상으로 App Bundle을 폭넓게 테스트했습니다. 이 과정은 매우 효과적이었으며, Twitter에서는 나중에 더 많은 테스트 참가자 확보 및 더 빠른 문제 발견을 위해 이 내부 테스트용 'dogfood' 앱을 Play 스토어로 전환했습니다.
결과
전환이 완료되었을 때 Twitter팀에서는 아무런 문제 없이 1,360만 명의 사용자에게 새로운 모듈형 버전의 앱을 배포했습니다. Twitter의 앱 출시 과정은 이미 자동화되어 있었으므로 새로운 출시 절차는 이전 출시와 매우 유사하게 진행되었습니다. 그러나 예상치 못한 장점도 있었습니다. 세사르는 "버전을 출시할 때 버전 ID를 4개(ABI 분할용)나 관리하는 대신 1개만 관리할 수 있어서 측정항목을 통합하는 데 도움이 되었습니다."라고 말합니다.
더욱 중요한 점은 Twitter에서 ABI 분할을 통해 앱 크기를 줄인 후에도 App Bundle을 통해 추가로 줄이는 데 성공하여 앱 크기가 전반적으로 30~40% 감소했다는 것입니다. 이 효과를 위해 활용한 방법 중 하나는 기능 모듈을 사용해 ABI 1개당 3MB의 대용량 네이티브 라이브러리를 배포하는 방식이었습니다. 이러한 대용량 네이티브 라이브러리는 소수의 기기에만 필요한 항목이었습니다.
Twitter는 이제 Twitter의 실시간 동영상 공유 앱인 Periscope도 App Bundle로 이전하기 위해 계획 중입니다. 세사르의 팀은 Twitter 앱을 모듈화하는 작업도 진행하고 있습니다. 세사르는 "완전히 분리된 기능 모듈로의 전환을 마무리하고 나면 여러 가지 기능의 동적 배포를 고려할 예정입니다."라고 말했습니다. 하지만 이는 6~12개월 후에야 실제로 진행될 것으로 예상된다고 덧붙였습니다. 그는 또한 모듈화 작업을 통해 개발자들이 Twitter와 Periscope에 모듈을 재사용함으로써 시간을 크게 절약하고 불필요한 중복 절차를 줄일 것으로 기대하고 있습니다.
시작하기
모든 앱 및 게임 개발자는 Android App Bundle을 사용할 수 있습니다. 지금 바로 시작하기