[go: up one dir, main page]

작성자: Seang Chau (VP of Engineering)

이 글의 원문은 여기서 확인하실 수 있으며 블로그 리뷰에는 노현석(GDE)님이 참여해주셨습니다.

오늘 Android 13 소스를 Android 오픈소스 프로젝트(AOSP)에 제공하고 Android 최신 버전을 공식 출시했습니다. 개발자 입장에서 Android 13은 개인정보 보호와 보안 등의 핵심 테마와 개발자 생산성에 중점을 두고 손쉽게 우수한 사용자 경험을 구축할 수 있도록 지원합니다. 또한 Android가 태블릿 및 대화면에 더욱 적합한 OS로써 개발자 여러분이 전 세계 2억 7천만대 기기를 대상으로 개발할 수 있도록 더 나은 도구를 제공하고자 노력하고 있습니다. 소비자 대상의 Android 13에 관한 내용은 키워드 블로그 게시물에서 자세히 살펴보실 수 있습니다.

Android 13은 Pixel를 시작으로 올해 내 Android 13을 Samsung Galaxy, Asus, HMD(Nokia phones), iQOO, Motorola, OnePlus, Oppo, Realme, Sharp, Sony, Tecno, vivo, Xiaomi 등 더 많은 주요 기기에도 출시할 예정입니다.

이번 버전과 앱이 호환되도록 언제나처럼 애써주시고 소중한 의견 보내주셔서 감사합니다. 개발자 여러분의 지원과 공헌 덕분에 Android를 모두를 위한 훌륭한 플랫폼으로 만들어 나갈 수 있습니다.


개발자용 Android 13의 기능

Android 13의 새로운 기능을 몇 가지 소개합니다. 더욱 자세한 내용은 Android 13 개발자 사이트를 참조하시기 바랍니다.


개발자 생산성과 도구

테마 앱 아이콘 - Android 13은 모든 앱 아이콘에 'Material You' 동적 색상을 확대 적용하여 사용자가 배경화면이나 기타 테마 기본 설정의 색조를 이어받은 아이콘을 선택할 수 있습니다. 앱에서는 단색 앱 아이콘과 적응형 아이콘 XML 조정만 제공하면 됩니다. 여기서 자세히 알아보세요.


테마 앱 아이콘은 배경화면 색상과 어두운 테마(왼쪽)에 맞춰 조정됩니다.

앱별 언어 기본 설정 - Android 13에서는 앱을 시스템 언어와 다른 언어로 사용하고자 하는 다국어 사용자를 더 간편하게 지원할 수 있습니다. 이제 Android는 선택된 앱에 표준형 '앱 언어' 설정 패널을 제공하므로, 런타임에 새 플랫폼 API를 호출해 사용자가 선호하는 언어를 가져오거나 설정할 수 있습니다. 이를 통해 상용구 코드를 줄이고 호환성을 개선할 수 있습니다. 여기서 자세히 살펴보세요.



설정에서 앱별 언어 제공

텍스트 지원 강화 - Android 13은 향상된 경험을 제공할 수 있도록 텍스트 및 언어 부분을 개선했습니다. 더 빠르게 하이픈 넣기로 하이픈 넣기 성능을 200%나 최적화했으므로, 이제는 렌더링 성능에 거의 영향을 주지 않고 TextView에서 이 기능을 사용할 수 있습니다. 텍스트 변환 API를 통해 일본어, 중국어 등의 언어로 음성 문자 변환 입력 기능을 사용할 때 검색과 자동 완성 속도를 높였습니다. Android 13은 또한 비라틴어 스크립트(타밀어, 버마어, 텔루구어, 티베트어 등)의 줄 높이가 개선되어 잘림 현상이 사라지고 읽기가 더 쉬워졌습니다. 여기서 자세히 알아보세요.


Android 13을 대상으로 하는 앱에서 비라틴어 스크립트의 줄 높이가 개선되었습니다(아래).

컬러 벡터 글꼴 - Android 13은 COLR 버전 1(사양, 소개 영상) 글꼴에 대한 렌더링 지원을 추가하고 시스템 그림 이모티콘을 COLRv1 형식으로 업데이트합니다. COLRv1은 어떤 크기에서든 빠르고 또렷하게 렌더링되는 새로운 초소형 글꼴 형식입니다. 대부분의 앱에서는 COLRv1이 곧바로 작동하며, 시스템이 모든 것을 처리합니다. 여기서 자세히 살펴보세요.

COLRv1 벡터 그림 이모티콘(왼쪽)과 비트맵 그림 이모티콘

Quick Settings Placement API - 사용자 지정 빠른 설정 타일을 제공하는 앱의 경우, Android 13은 사용자가 타일을 더 손쉽게 검색하고 추가할 수 있습니다. 새로운 타일 배치 API를 이용하면 사용자가 앱에서 한 단계 만에 사용자 지정 빠른 설정 타일을 바로 추가할 수 있습니다. 여기서 자세히 확인하세요.

프로그래밍 가능한 셰이더 - Android 13에는 AGSL(Android Graphics Shading Language)을 사용하여 동작과 함께 프로그래밍 가능한 RuntimeShader 객체가 도입되었습니다. 이러한 셰이더를 사용해 앱에서 물결, 흐리게, 늘리기를 비롯해 이와 비슷한 고급 효과를 연출할 수 있습니다. 여기서 자세히 살펴보세요.

PlaybackState 파생 미디어 컨트롤 - Android 13을 대상으로 하는 앱의 경우, 이제 시스템이 PlaybackState 작업에서 미디어 컨트롤이 파생됩니다. 이를 통해 전화와 태블릿 기기 전반에서 일관적이면서 Android Auto 및 Android TV 등 기타 Android 플랫폼과 호환되는 컨트롤 세트를 더 풍부하게 제공합니다. 여기서 자세히 알아보세요.


전화 및 태블릿에서 일관적인 Android 13 미디어 컨트롤

Bluetooth LE Audio - LE(저전력) Audio는 친구와 가족에게 오디오를 공유하고 브로드캐스트하거나 정보, 엔터테인먼트 또는 접근성을 목적으로 공개 브로드캐스트를 구독하는 등의 새로운 사용 사례를 지원하도록 구축된 차세대 무선 오디오입니다. 사용자가 배터리 수명의 단축 없이도 하이파이 오디오를 수신할 수 있도록 설계되었으며, 다양한 사용 사례 간에 원활한 전환이 가능합니다. Android 13은 LE Audio를 기본 지원하므로 개발자는 호환되는 기기에서 이러한 새 기능을 사용할 수 있습니다. 여기서 자세히 확인하세요.

MIDI 2.0 - Android 13은 USB를 통해 MIDI 2.0 하드웨어를 연결하는 기능을 포함해 새로운 MIDI 2.0 표준에 대한 지원을 추가합니다. 이 업데이트된 표준에서는 컨트롤러용으로 향상된 해상도, 비서구권 억양에 대한 지원 개선, 음별 컨트롤러를 사용한 더욱 표현력이 뛰어난 성능 등을 제공합니다. 여기서 자세히 알아보세요.

OpenJDK 11 업데이트 - 이제 Android 13 코어 라이브러리가 OpenJDK 11 LTS 버전과 호환되므로 라이브러리 업데이트는 물론 앱 및 플랫폼 개발자를 위한 Java 11 프로그래밍 언어 지원도 제공됩니다. Android 12 이상을 실행하는 기기에 대한 ART 모듈 업데이트의 일환으로, 이러한 코어 라이브러리 변경 사항을 Google Play 시스템 업데이트를 통해 더 많은 기기에 적용할 계획입니다. 여기서 자세히 살펴보세요.

예측형 뒤로 이동 동작 - Android 13에는 새로운 API가 도입되어 앱이 시스템에 뒤로 이동 이벤트를 미리 처리할 것이라고 알릴 수 있습니다. 이것을 'Ahead-Of-Time' 모델이라고 합니다. 이 새로운 방식은 예측형 뒤로 이동 동작을 지원하도록 앱을 준비하는 데 도움을 드리기 위한 다년간의 프로젝트의 일환으로, 이번 버전에서 개발자 옵션을 통해 테스트할 수 있습니다. 여기서 자세히 확인해보세요.

태블릿에 적합한 설계

Android 13은 올해 초에 출시한 12L 업데이트를 확장하여 태블릿에서 훨씬 더 나은 경험을 제공합니다. 그 예로 멀티태스킹 작업 표시줄이 개선되었고, 시스템 UI와 앱에 대화면 레이아웃과 최적화가 추가되었으며, 앱 호환성 모드가 향상되었습니다. 앞으로도 개발자 여러분이 Chromebook과 폴더블은 물론 태블릿에서도 훌륭한 경험을 만들 수 있도록 필요한 도구를 꾸준히 제공할 예정입니다. 대화면용 최적화 시작 방법에 대해 자세히 알아보고 대화면 개발자 리소스를 참조하시기 바랍니다. 

Android 13으로 태블릿에서 멀티태스킹.

개인정보 보호 및 보안

사진 선택기 및 API - 새로운 시스템 사진 선택기를 사용하면 사용자는 개인정보가 보호되는 표준 방법으로 로컬 및 클라우드 기반 사진을 공유할 수 있습니다. 사진 선택기는 Android의 유구한 문서 선택기 기능이 확장된 것으로, 사용자가 앱에 기기의 모든 미디어 파일을 조회할 권한을 부여하지 않고도 해당 앱에서 특정 사진과 동영상을 손쉽게 공유할 수 있도록 해줍니다. 사진 선택기는 사진 및 동영상 전용이며 앱이 공유된 미디어 파일에 액세스하는 데 필요한 API를 포함합니다. Android 11 이상 버전을 실행하는 기기(Go 기기 제외)에서 Google Play 시스템 업데이트를 받는 사용자들은 사진 선택기를 경험할 수 있습니다. 여기서 자세히 살펴보세요.

사진 선택기를 사용하면 사용자가 앱에서 특정 사진과 동영상을 공유할 수 있습니다.


알림 권한 -
사용자가 자신에게 가장 중요한 알림에 집중할 수 있도록 Android 13에는 알림 런타임 권한이 새롭게 도입되었습니다. 이제 앱은 사용자로부터 알림 권한을 요청한 후 알림을 게시해야 합니다. Android 12 이하를 대상으로 하는 앱의 경우 시스템에서 개발자를 대신해 업그레이드 흐름을 처리합니다. 여기서 자세히 알아보세요.

Android 13의 알림 권한 대화상자.

Wi-Fi 환경을 위한 근처 기기 권한 - Android 13은 Wi-Fi를 통한 근처 액세스 포인트로의 기기 접속을 관리하는 앱에 대해 NEARBY_WIFI_DEVICES 런타임 권한을 도입합니다. 일반적으로 사용되는 대다수의 Wi-Fi API에는 이 새로운 권한이 꼭 필요하며, 이 권한이 있으면 앱이 위치 권한을 얻지 않고도 Wi-Fi를 통해 근처 기기를 검색하고 접속할 수 있습니다. 여기서 자세히 확인해보세요.

미디어 파일 액세스 권한 세분화 - 사진 선택기는 사진과 동영상을 권한 없이 공유할 수 있는 사용자 친화적인 솔루션으로 권장되지만, 아직 사진 선택기로 이동하지 않은 앱이나 오디오 사용 사례의 경우, Android 13은 세분화된 새로운 미디어 권한을 추가합니다. 이와 같은 새 권한이 READ_EXTERNAL_STORAGE 권한을 대신하게 되며, 이미지, 동영상이나 오디오 등 특정 유형의 미디어 파일에 대한 액세스를 제공합니다. 가급적 앱을 사진 선택기로 이동하는 것이 가장 좋습니다. 이동하지 않을 경우에는 Android 13을 대상으로 할 때 세분화된 미디어 권한을 사용하십시오. 여기서 자세히 알아보세요.

개발자가 다운그레이드할 수 있는 권한 - Android 13부터 사용자가 이전에 부여한 권한을 더 이상 필요로 하지 않는 앱은 새 API를 사용하여 권한을 다운그레이드할 수 있습니다. 사용하지 않는 권한을 없애면 앱이 필요한 최소한의 권한만 사용하는 것을 보여줄 수 있으므로 사용자의 신뢰를 강화할 수 있습니다. 여기서 자세히 살펴보세요.

내보낸(Exported) Intent 필터 안전성 강화 - Android 13은 Android 13을 대상으로 하는 다른 앱에서 내보낸 Intent 필터로 명시적 인텐트를 전달할 때 전보다 더 엄격한 규칙을 적용합니다. 작업을 지정하는 Intent의 경우, 이제부터는 Intent가 수신기가 선언한 <intent-filter> 요소와 일치하는 경우에만 시스템이 Intent를 내보낸 구성 요소에 전달하게 됩니다. 여기서 자세히 알아보세요.


앱 성능

Android 13은 ART 런타임을 업데이트하여 모든 앱의 성능과 효율성을 개선합니다. Android 12 이상을 실행하는 기기에 대한 지속적인 ART 모듈 업데이트의 일환으로, 이러한 개선 사항을 Google Play 시스템 업데이트를 통해 더 많은 Android 사용자에게 제공할 계획입니다.

가비지 컬렉션 개선 - 다가오는 Google Play 시스템 업데이트에서 Android 13 기기 ART에 Linux 커널 기능 userfaultfd 기반의 새로운 가비지 수집기를 제공합니다. 새로운 가비지 수집기는 로드된 객체마다 읽기 장애물과 이에 해당하는 고정된 오버헤드를 없애 메모리 압박을 완화하고 컴파일된 코드 크기를 약 10% 줄일 수 있습니다. 압축이 진행될수록 여유 페이지가 확보되므로 GC 시간에서도 효율성이 개선됩니다. 전반적으로, 새 가비지 수집기는 배터리 절약에 유익하고 GC 작업 중 버벅거림이 없으며 메모리 부족으로 인한 앱 종료를 방지하는데 도움을 줍니다.

ART 전반에서 최적화 - Android 13에서는 ART 덕분에 네이티브 코드 전환이 훨씬 빨라져 JNI 호출이 전보다 최대 2.5배 빨라졌습니다. 런타임의 참조 처리도 재작업하여 대부분 비차단으로 설정하였으며, 덕분에 버벅거림이 한층 더 줄었습니다. 새롭게 내놓은 공개 API인 Reference.refersTo()는 참조 불가능한 객체를 더 빨리 회수하는 데 유용하며 클래스/메서드 조회를 최적화하여 인터프리터 속도도 높였습니다. 마지막으로, ART가 설치 시점에 더 많은 바이트-코드 확인 작업을 수행하여 런타임에 검증 비용이 발생하지 않고 앱 시작 시간을 짧게 유지할 수 있게 되었습니다. 여기서 자세히 살펴보세요.


앱 준비를 완료하세요!

이제 Android 13이 AOSP에 공개 되니, Android 개발자 여러분 모두 호환성 테스트를 완료하고 가능한 한 빨리 업데이트를 게시하여 사용자가 Android 13으로 원활히 전환할 수 있도록 지원하시기 바랍니다.

앱 호환성을 테스트하려면 Android 13을 실행하는 기기에 앱을 설치하고 앱 흐름을 따라 기능 문제나 UI 문제가 있는지 살펴보기만 하면 됩니다. Android 13에서 모든 앱의 동작 변경 사항부터 검토하여 현재 버전의 앱이 영향을 받을 수 있는 영역을 집중적으로 살펴보세요. 다음과 같은 주요 변경 사항을 테스트해야 합니다.

  • 알림 런타임 권한 - 이 새로운 권한이 앱 알림에서 어떻게 작동하는지 알아두고, 최대한 빨리 Android 13(API 33)을 대상으로 작업을 시작하여 사용자를 지원하는 것이 좋습니다. 여기서 자세히 살펴보세요.

  • 클립보드 미리보기 - 앱이 Android 13의 새로운 클립보드 미리보기에 비밀번호나 신용카드 정보와 같은 민감한 데이터를 숨기도록 하세요. 여기서 자세히 알아보세요.

  • JobScheduler 프리페치 - JobScheduler는 앱이 다음에 시작될 시점을 예측하여 그보다 앞서 관련된 프리페치 작업을 실행합니다. 프리페치 작업을 사용하는 경우 예상대로 작동하는지 테스트하세요. 여기서 자세히 확인해보세요.

앱에서 라이브러리와 SDK의 호환성을 테스트하는 것을 잊지 마세요. SDK 문제를 발견하면 최신 SDK 버전으로 업데이트하거나 개발자에게 연락하여 도움을 받으세요.

현재 앱의 호환 버전을 게시하면 앱의 targetSdkVersion을 업데이트하는 프로세스를 시작할 수 있습니다. 이를 위해 Android 13을 대상으로 하는 앱의 동작 변경 사항을 검토하고 문제를 빠르게 감지하는 데 도움이 되는 호환성 프레임워크를 사용합니다.

태블릿 및 대화면 지원

태블릿에서의 경험을 한층 더 향상시키는 Android 13을 통해 여러분의 앱이 가장 멋지게 보일 수 있도록 준비하시기 바랍니다. Android Studio에서 Android 에뮬레이터를 설정하여 대화면 기능을 테스트하거나 Android 13 베타 파트너의 대화면 기기를 사용하면 됩니다. 다음 부분들을 눈여겨 살펴보세요.

  • 작업 표시줄 상호 작용 - 대화면에서 새 작업 표시줄로 앱을 볼 때 앱이 어떻게 반응하는지 확인하세요. 앱의 UI가 잘리거나 작업 표시줄로 가려지지 않는지 확인하세요. 여기서 자세히 알아보세요.

  • 다중 창 모드 - 이제는 앱 구성에 관계없이 다중 창 모드가 모든 앱에 기본적으로 사용되므로, 앱이 분할 화면을 적절히 처리하는지 확인하세요. 앱을 화면 분할 모드로 드래그하고 창 크기를 조정하여 테스트할 수 있습니다. 여기서 자세히 확인해보세요.

  • 향상된 호환성 경험 - 앱의 방향이 고정되어 있거나 크기 조정을 할 수 없는 등 아직 태블릿에 최적화되어 있지 않다면 앱이 레터박스 설정과 같은 호환성 모드 조정에 어떻게 반응하는지 확인하세요. 여기서 자세히 살펴보세요.

  • 미디어 프로젝션 - 앱에서 미디어 프로젝션을 사용하는 경우 대화면에서 미디어를 재생, 스트리밍 또는 캐스팅하는 동안 앱이 어떻게 반응하는지 확인하세요. 폴더블 기기에서의 기기 상태 변화도 꼭 고려하세요. 여기서 자세히 알아보세요.

  • 카메라 미리보기 - 카메라 앱의 경우 앱이 다중 창 모드나 화면 분할 모드에서 화면의 일부로 제한될 때 카메라 미리보기 UI가 대화면에서 어떻게 반응하는지 확인하세요. 또한 폴더블 기기 상태를 변경할 때 앱이 어떻게 반응하는지도 살펴보세요. 자세한 사항은 여기서 알아보세요.

여기서 Android 13의 태블릿 기능과 테스트할 항목에 대한 자세한 내용을 읽어볼 수 있습니다.


다음 단계

Android 13은 픽셀 기기를 시작으로 출시됩니다.

현재 Android 베타 프로그램에 등록된 경우 Android 13 최종 버전을 받아볼 수 있으며, 등록 상태를 유지하면 올해 하반기부터 시작되는 Android 13 기능 출시 베타 버전 업데이트를 계속 받아볼 수 있습니다. 기기를 완전 삭제하지 않고 지속적인 베타 업데이트를 받지 않으시려면, Android 베타 사이트에서 선택 해제하면 됩니다. 단, Android 13 최종 버전을 받고 Android 기능 출시용 첫 베타를 받기 전에 선택 해제해야 합니다.

픽셀 기기의 시스템 이미지는 여기서 수동 다운로드와 플래시로 구할 수 있으며, 최신 Android Emulator 시스템 이미지는 Android Studio에서 SDK Manager를 통해 받으면 됩니다. Android 13 소스는 Android 13 branch의 Android 오픈소스 프로젝트 저장소 안에 있는 여기에서 확인 가능합니다.

초기 프리뷰와 베타 프로그램에 참여해 주셔서 다시 한번 감사드립니다. Android 13에서 여러분의 앱을 만날 수 있길 바랍니다!


Java와 OpenJDK는 Oracle 및/또는 그 계열사의 상표 또는 등록 상표입니다.


작성자: Mauricio Vergara (Product Marketing Manager), Thousand Ant. 기고문 포함

이 글의 원문은 여기서 확인하실 수 있습니다. 

Lyft 

Lyft는 무엇보다도 우수한 앱 성능을 중시합니다. 탑승자 수천만 명과 운전자 수십만 명이 이용하는 승차 공유 서비스로서 영향력이 광범위한 만큼, 앱 속도 저하, 프레임 정지, 비정상 종료가 발생하면 수천 명이 넘는 사용자가 시간을 낭비하게 됩니다. 이처럼 사소한 문제로도 수많은 탑승자와 운전자를 경쟁사에 빼앗길 수 있습니다. 하지만 다행히도 Lyft의 개발팀은 앱 성능을 주시하던 중, 운전자의 Android 앱 시작 시간이 늘어난 것을 발견했습니다.

개발팀은 문제의 원인을 신속히 파악해 해결 방법을 알아내고 이를 위한 투자가 필요하다는 점을 경영진에 설명해야 했습니다. 그러려면 다음과 같은 어려운 질문들에 대한 답이 필요했습니다. ‘앱 성능의 병목 현상은 어디에서 발생하고 사용자 환경에 어떤 영향을 줄까? 개발팀은 이 문제를 얼마나 위급하게 여기고 대처해야 할까?’ 다행히 이들에게는 적절한 툴이 있었습니다. Android 기기에서 앱 안정성과 성능을 개선하기 위해 Google Play가 마련한 Android vitals를 사용해 어디에서 문제가 발생하는지 확인하고, 이 문제를 시급히 해결해야 하는 이유를 경영진에 전달했으며, 적은 리소스로 문제를 해결할 수 있었습니다. 지금부터 그 과정을 소개하겠습니다.


새로운 우선순위 설정

Lyft의 개발팀이 가장 먼저 해야 했던 일은 이것이 과연 경영진을 설득해 리소스를 투입할 만큼 시급한 문제인지 알아내는 것이었습니다. 앱 품질 개선을 위한 제안을 할 때 으레 그렇듯, Lyft Driver 앱의 시작 시간 단축 또한 제품 신기능 소개, 아키텍처 및 데이터 과학의 개선 등 개발 리소스가 필요한 다른 사안과 우선순위를 저울질해야 했습니다. 앱 품질에 투자하도록 경영진을 설득할 때 부딪히는 난관 중 하나는 성능 개선과 비즈니스 메트릭의 상관관계를 밝히기 어렵다는 점입니다.

개발팀은 상황을 정확히 파악하기 위해 Android vitals를 활용했습니다. Android vitals를 이용하면 ANR 오류, 배터리 소모, 렌더링, 앱 시작 시간과 같은 앱 성능 관련 데이터에 액세스하고, 메트릭별로 현재까지의 성능을 실제 기기에서 추적하며 같은 카테고리에 속한 다른 앱의 성능과 비교할 수 있습니다. Lyft 개발팀은 이 강력한 툴을 이용해 Lyft Driver 앱 시작 시간이 동일 카테고리의 다른 앱 10종보다 15~20% 느리다는 것을 발견하고, 이를 시급한 문제로 판단했습니다.

다음으로, 개발팀은 속도 저하가 비즈니스 목표와 사용자 환경에 미치는 영향을 감안해 프로젝트 범위를 설정해야 했습니다. Android vitals를 통해 승차 공유 분야의 경쟁사와 데이터를 직접적으로 비교한 후, 개발자 한 명이 한 달간 이 문제에 집중하면 앱 시작 시간이 상당히 단축될 것이라는 결론을 내렸습니다.

개발팀은 이처럼 풍부한 데이터와 우수한 앱 성능을 내세워 경영진을 설득했습니다. 사용자 경험 개선을 강조하고, 합리적이고 달성 가능한 목표 및 범위를 설정했으며, 정확한 경쟁사 비교 데이터를 제시한 결과, 프로젝트가 승인되었습니다.


진행 방식

Lyft는 Time to interact('완전히 표시하는 데 걸린 시간'이라고도 함)를 기본 시작 메트릭으로 사용합니다. 여기에 영향을 미치는 요인을 파악하기 위해, 개발팀은 앱 시작 시의 각 단계를 프로파일링하여 지연이 발생하는 원인을 찾았습니다. Lyft Driver 앱은 네 단계로 시작합니다. 1) 먼저, 앱 프로세스를 시작합니다. 2) Activity가 UI 렌더링을 시작합니다. 3) Bootstrap이 홈 화면을 렌더링하는 데 필요한 데이터를 네트워크에 요청합니다. 4) 마지막으로, Display가 운전자 인터페이스를 엽니다. 정밀한 프로파일링을 통해 세 번째 단계인 Bootstrap에서 속도 저하가 발생하는 것을 발견했습니다. 병목 현상의 원인을 파악한 후, 개발팀은 여러 단계에 걸쳐 문제를 해결했습니다.


Lyft time to interact 


먼저, 시작 경로에서 불필요한 네트워크 호출을 줄였습니다. 백엔드 서비스를 분석한 후 시작 경로에서 몇 가지 네트워크 호출을 안전한 방식으로 제거하고,. 가능한 경우에는 네트워크 호출을 비동기로 처리했습니다. 앱 시작 시 필수적인 데이터가 아니라면 데이터 없이도 시작 프로세스를 진행할 수 있도록 호출을 논블로킹(non-blocking)으로 변경하고 블로킹 네트워크 호출은 안전하게 백그라운드로 옮겼습니다. 마지막으로, 세션 간에 캐시 데이터를 저장하기로 했습니다.


21% 더 빠른 시작으로 5% 더 많은 운전자 세션 


사소한 변화처럼 보일 수 있지만, 앱 시작 시간은 놀랍게도 21% 단축되었고, 이에 따라 Lyft Driver의 운전자 세션은 5% 증가했습니다. 개발팀은 이에 그치지 않고 경영진의 승인을 얻어 모바일 전용 성능 워크스트림을 만들고 엔지니어를 더 투입했습니다. 프로젝트의 성공이 기업 전체에 알려지자 몇몇 관리자가 앱 품질에 투자하는 방법을 문의해 오기도 했습니다.


시사점

Lyft의 성공 사례를 통해 다른 기업에도 적용 가능한 여러 교훈을 얻었습니다.

앱과 함께 기업 또한 성장하면서, 우수한 앱 성능이 그 어느 때보다 중요해졌습니다. 개발자들은 앱을 가까이서 살피는 만큼 성능 문제를 누구보다도 먼저 인지하지만, 기업 전체에 문제를 알리기는 어려울 수 있습니다. 이때 Android vitals를 사용하면 개발자가 관찰한 사항을 데이터로 간단히 나타내면서 성능 관련 메트릭과 비즈니스 사례의 연관성을 한눈에 보여 줄 수 있습니다.

우수한 앱 성능을 위한 자체 프로젝트를 시작하려면 먼저 작은 성과부터 거두고 나서 이를 확대해 나가는 것이 좋습니다. 실행 가능한 프로젝트를 신중히 선택해야 적은 양의 리소스로도 의미 있는 결과를 얻을 수 있습니다.

비개발 부서도 개발팀과 함께 협업하여 앱 품질을 향상하도록, 사전에 자주 소통해야 합니다. 목표, 계획, 결과를 지속적으로 공유함으로써 모든 팀의 참여를 유도할 수 있습니다.


추가 리소스

Android 생태계에는 Android vitals 외에도 앱 시작 시간과 전반적인 성능을 파악하고 개선하는 데 도움이 되는 툴이 많습니다. 또 다른 보완 툴인 Jetpack Macrobenchmark는 개발과 테스트 시 여러 메트릭에 대한 정보를 제공합니다. 실제 사용자 기기의 데이터를 제공하는 Android vitals와 달리, Macrobenchmark는 코드의 특정 영역을 로컬로 벤치마킹 및 테스트하며, 그 예시로 앱 시작 시간이 있습니다.

Jetpack 앱 시작 라이브러리는 앱 시작 시 구성 요소를 초기화하는 간단하고도 효과적인 방법을 제시합니다. 이 라이브러리를 사용하면 시작 시퀀스를 간소화하고 초기화 순서를 간단히 명시할 수 있습니다. 또한 도달범위 및 기기를 확인하면 사용자와 문제의 분포 상황을 파악하여 어떤 사양에 맞추어 앱을 설계할지, 어느 지역에 앱을 출시할지, 어떤 항목을 테스트할지 결정하기 쉬워집니다. 이 툴의 데이터를 통해 앱 품질 개선을 위한 우선순위를 정하고 무엇을 개선해야 사용자 대다수에게 큰 혜택이 돌아갈지 확인할 수 있습니다. 마지막으로 소개할 툴은 Perfetto로, 코드를 측정하고 시작 문제를 진단하는 데 사용하는 오픈소스 시스템 추적 툴입니다. 이런 여러 툴을 적절히 조합해 사용한다면 앱이 계속 원활히 실행되고, 사용자가 앱에 만족하며, 기업 전체가 앱 품질 개선의 중요성을 인지하게 될 것입니다.

여러분의 앱 성능을 개선하거나 Lyft에 합류하고자 하신다면, 여기에서 PO(Product Owner) 및 경영진을 위한 사례 연구 요약본을 확인해 보세요.

 

대한민국 게임 산업의 차세대 주역이 될 인디 게임 개발사와 인디 게임 유저를 위한 뜨거운 축제의 장, ‘Google Play 인디 게임 페스티벌 2022’의 결승전에 진출할 Top 10 게임이 선정되었습니다. 지난 8월 3일부터 24일까지 6인의 전문가 심사위원단과 300인의 유저 심사위원단은 혁신성, 재미, 디자인, 기술력 및 품질을 기준으로 Top 20 게임을 심사하였으며, 드디어 오늘 Top 10 게임이 발표되었습니다! 


Top 10 선정작 보러가기




선정된 Top 10 게임은 오는 9월 3일(토) 오전 10시부터 오후 5시까지 메타버스로 진행되는 온라인 결승전에서 대망의 Top 3을 향한 도전을 이어 나가게 됩니다. 

이번 온라인 결승전에서는 Top 20 게임 개발자 및 유저들과 만나 자유롭게 이야기 나눌 수 있는 온라인 행사장이 오전 10시부터 열리며, 오후 2시부터 Top 10 게임 개발자의 발표 및 심사위원단과의 질의응답이 실시간으로 생중계됩니다. 

인디 게임을 사랑하는 분이라면 누구나 온라인 결승전에 참석할 수 있으니, 지금 아래 링크를 통해 사전등록 하시고 9월 3일(토)에 진행될 결승전에 여러분의 많은 관심과 응원 부탁드립니다!


온라인 결승전 사전등록하기




선발된 Top 10 게임과 모든 Top 20 게임에 지속적으로 관심 가져주시고, 앞으로 발표될 Top 3에 대한 소식에도 계속해서 귀 기울여 주세요! 




Google Play 인디 게임 페스티벌 2022 Top 10 게임 (개발사 명) *게임명 가나다순

  • 냥타워: 네모로직 (스튜디오 박스캣): 네모로직 퍼즐을 풀어서 ‘냥타워’에 오게 된 고양이들의 따뜻하고 행복한 보금자리를 만드는 캐주얼 퍼즐 게임
  • 던전 로그 : 전설의 모험가 (Giant Dice): 전설의 모험가 (Giant Dice) : 4x4 타일로 구성된 전장에서 실시간으로 캐릭터를 움직이면서 몬스터의 패턴을 피하고 타일 위에 뿌려진 무기를 던져 몬스터를 처치하는 액션 게임
  • 로스트페이지 - 굴레의 시작 (지피크루): 달의 탄생을 배경으로 한 세계관과 스토리 안에서 다양한 마법진과 유물, 룬 등을 이용하여 무한한 시너지를 조합해 내는 유니크한 시스템을 가진 턴제 덱빌딩 게임
  • 소울 런처 - 슈팅 디펜스 (오블리크게임즈): 조용한 삶을 떠나 강력한 퇴마사가 되기 위한 임무를 완수하기 위해 던전을 탐험하는 아케이드 게임.
  • 슈퍼 배틀즈 (해피래빗쇼): 액션 아케이드 게임과 카드 덱빌딩 오토 배틀러 시스템이 결합한 게임으로 카드와 메달로 덱을 만드는 전략형 게임 
  • 유령호텔 타이쿤 (포스메이게임즈): 유령 손님으로부터 돈을 벌어서 호텔을 7성급으로 만드는 것이 목표인 캐주얼 시뮬레이션 게임
  • 카운팅스타 (그레이클로버): 달에 혼자 살고 있는 달토끼가 외로움에 사무쳐 별 수집을 하기 시작하는 스토리로 아름다운 별들을 감상하면서 별자리들을 수집해나가는 캐주얼 힐링 게임
  • Pa!nt (BeryIdiotBoys): 자신의 색을 바꾸어 목적지에 도달하라! 주인공 ‘무니’가 소원을 이루어주는 보물을 향해 모험을 떠난다는 스토리로 색을 바꾸는 능력을 사용하여 물감을 만들며 여행하는 캐주얼 게임
  • Shambles (EXLIX): 대전쟁에 휩싸여500년의 긴 시간동안 완전히 바뀌어버린, 엉망이 된 새로운 세상을 탐험하는 덱빌딩 텍스트 RPG 게임
  • The Greater (I M GAME): 등장하는 원의 집합체를 보며 큰 수를 찾아 빠르게 터트리는 두뇌 활동에 좋은 캐주얼 게임