Zomato는 인도의 다국적 레스토랑 애그리게이터 겸 음식 배달 업체로 인도 내 500개 도시의 고객에게 서비스를 제공합니다. 활성 고객이 4, 300만 명이 넘고 하루 평균 주문량이 150만 건 이상인 인도네시아는 미국에서 가장 인기 있는 음식 주문 및 배달 서비스 중 하나입니다. 이는 고객이 다양한 기기를 사용하고 네트워크 가용성도 다르다는 것을 의미합니다. 이렇게 하려면 빠른 전송 외에도 앱에서 원활하고 원활한 환경을 제공해야 합니다.
사용자는 빠른 앱을 여는 시간과 반응성을 기대합니다. 이 측정항목을 개선하면 앱 바이탈에 직접적인 영향을 미칠 뿐만 아니라 더 많은 주문 완료를 보장하고 신규 시장으로 확장하고 저성능 및 중급 기기에서 더 나은 경험을 제공하는 Zomato 전략도 지원할 수 있습니다.이를 통해 궁극적으로는 10억 명의 신규 사용자를 확보할 수 있습니다. 또한 앱 실행 시간은 사용자가 판매 유입경로의 후반부로 이동함에 따라 유입경로 크기가 증가하는 예측 변수 역할을 합니다.
Zomato는 앱 바이탈에 집중하면서 놀라운 성과를 거두었습니다. 예를 들어 앱 로드 시간을 30% 개선하자 1일 차 고객 유지율이 약 90% 향상되었습니다.
도전 과제
고객에게 큰 도움이 되긴 하지만 Zomato는 빠른 개발 속도와 기능 추가에 주력한 결과, 코드베이스와 UX를 최적화해야 했습니다. Zomato는 새로운 기능을 추가하려고 노력하면서 기존과 동일한 실적을 거두고자 했습니다. 항상 필요하지는 않은 리소스를 소비하는 SDK가 여러 개 있기 때문에 코드베이스를 간소화하고 합리화할 필요가 있었습니다.
이 모든 것은 Zomato가 인도의 2등급 및 3등급 도시로 확장한 데 힘입어 이러한 기기를 포함함에 따라 팀은 상위 등급 기기와 동일한 세계적 수준의 사용자 환경을 보장해야 했습니다.
무슨 일을 했나요?
Zomato는 간단한 기준표를 사용해 간접경비를 분석했습니다. 어떤 솔루션이 개발팀의 노력 대비 최고의 투자수익을 가져다줄 수 있을까요? 팀은 이 기준표를 사용하여 4개월의 최적화 및 개선 여정을 시작했습니다.
첫 번째 단계는 시스템 트레이스를 조사하여 문제, 시간 기반 분석을 찾고 그에 따라 우선순위를 정하는 것이었습니다. Perfetto는 Android 프로세스를 분석, 프로파일링 및 추적하는 데 완벽한 도구입니다. Zomato는 이 도구를 활용해 앱 시작 중에 초기화되는 모든 SDK를 추적하고 삭제 또는 지연 로드가 가능한 SDK를 지적했습니다.
노력이 적게 들고 수익이 많이 발생하는 작업이었기 때문에 기존 SDK와 사용하지 않는 서드 파티 라이브러리를 삭제하는 것이 가장 중요했습니다. 이 접근 방식 덕분에 Zomato는 앱 시작 시간을 20% 나 절감할 수 있었습니다.
많은 서드 파티 라이브러리는 앱 시작 시 콘텐츠 제공자를 사용하여 초기화하며, 이는 앱 시작 시간에 영향을 미칩니다. Zomato는 로그인에 Facebook SDK를 사용하지만 사용자에게 다른 로그인 옵션도 있으므로 시작 시 SDK를 초기화하는 것이 비효율적입니다. 앱 스타트업 라이브러리를 도입하면서 Zomato는 사용자가 Facebook 로그인 옵션을 선택할 때만 SDK를 로드합니다. 그 결과 시작 시간을 최대 6% 단축할 수 있었습니다.
그 다음 단계는 뷰의 확장 시간을 개선하는 것이었습니다. Zomato와 같은 복잡한 UI 구조에서는 뷰 자체의 렌더링과 확장이 상당한 시간이 걸릴 수 있기 때문입니다. View스텁을 사용하면 뷰를 만들 수 있지만 필요하지 않은 이상 뷰 계층 구조에 추가할 수 없으므로 효율성을 높이는 데 도움이 됩니다. 뷰 스텁이 뷰를 사용하는 것보다 더 효율적입니다. 뷰가 GONE 상태에 있더라도 확장되어 메모리와 CPU 사용량을 소모합니다. Zomato는 로그인 활동에서 view스텁과 함께 뷰 계층 구조와 병합된 레이아웃을 평평하게 했습니다. 이러한 변화로 인플레이션 시간이 7% 크게 개선되었습니다.
Android 프로파일러는 CPU 활동, 메모리 및 네트워크를 실시간으로 추적할 수 있으므로 메모리 사용량을 최적화하는 데 도움이 되었습니다. 프로파일러를 통해 잠금 상황과 메모리 오버헤드의 근본적인 문제를 식별하고 적절히 수정할 수 있었습니다. 또한 Zomato는 캐싱 메커니즘을 개발하여 메모리 부족 문제를 60% 크게 줄였습니다.
작업 | 이전 (초) | 이후 (초) | 개선사항 |
---|---|---|---|
기존 SDK, 사용하지 않는 서드 파티 라이브러리 삭제됨 | 4,873건 | 3,813만 | 21.74% |
라이브러리 지연 로드 | 3,814만 | 3,577건 | 6.2% |
레이아웃 개선, view스텁 | 2.529만 | 2.348만 | 7.15% |
앱 시작 시간 = 앱 초기화 + 라이브러리 로드 시간 + 뷰 확장 시간
결과
Zomato의 향상된 성능 덕분에 훨씬 더 원활한 경험을 할 수 있었습니다. 추가 UI 개선 및 캐싱으로 버벅거림도 줄었습니다.
![](https://developer.android.com/static/images/distribute/stories/zomato.png?authuser=9&hl=ko)
홈페이지부터의 앱 (앱 아이콘을 클릭하여 완전히 로드되어 사용 가능한 홈페이지로 이동)은 Zomato가 내부적으로 추적한 핵심 비즈니스 측정항목입니다. 개선사항을 적용한 후 이 측정항목이 의미 있게 증가했습니다. 이 기간 동안 완전히 로드된 페이지를 방문한 고객은 약 20% 증가했습니다.
그 결과 1일 차 고객 유지율이 약 90% 향상되었습니다. 이러한 개선은 전월 유입경로에도 영향을 미쳤습니다.전반적인 주문 완료율(홈 -> 메뉴 -> 장바구니 -> 주문)이 약 1.5% 포인트(예: 전월 대비 약 60만 건) 개선되었습니다.
Firebase 성능의 콜드 스타트 측정항목에 따르면 평균 25% 개선되었으며 저사양/중급형 기기의 경우 콜드 앱 시작 시간 개선이 최대 30%까지 향상되었습니다.
앱 시작 시간 성능은 사용자 인식에 영향을 미치는 중요한 측정항목입니다. 성능을 최적화하기 위한 노력은 비즈니스에도 큰 영향을 미칠 수 있습니다.
“Zomato는 항상 우수한 고객 경험을 제공하고 개선하는 것을 이념의 핵심으로 삼고 있습니다. 성능이 핵심 요소 중 하나라고 생각합니다. 이에 따라 Google팀은 Google의 개발자 도구를 사용해 앱 로드 시간을 개선하기 위해 엔지니어링 우수성을 달성하기 위해 노력했으며, 실시간으로 상당한 성과를 거두었습니다. 이를 통해 인도의 온라인 주문 요구사항을 엄청나게 빠른 속도로 제공할 수 있고, 향후 발전을 위한 기준이 될 수 있기를 바랍니다."
— 사잘 굽타, Zomato 엔지니어링 관리자