Tinder는 Android 아키텍처 구성요소를 사용해 데이트 앱의 문제를 해결했습니다

Tinder는 새로운 사람들을 만나기 위한 앱 중 세계에서 가장 인기 있는 앱입니다. Tinder는 사람들 간의 만남과 데이트 방식을 변화시킨 것으로 잘 알려져 있으며 오른쪽으로 스와이프하면 다른 사람과 연결되어 채팅할 수 있습니다. Tinder는 하루에 2,600만 건이 넘는 매칭을 성사시키며 2012년 출시 이래 200억 건이 넘는 매칭을 달성했습니다.

Tinder에서는 사용자의 요구에 따라 을 신속하게 확장했지만 앱에서 사용하는 데이터베이스는 처음에 사용했던 상태 그대로 유지되어 이를 기반으로 확장하기가 점점 더 어려워졌습니다. 또한 Tinder는 수명 주기의 복잡성을 줄이기 위해 뷰가 많은 아키텍처를 사용했지만 어떤 수명 주기 이벤트가 어떤 활동에 관련되는지 파악해야 했습니다. 또한 Cursor 객체를 도메인 객체에 마샬링하거나, 데이터베이스를 이전하거나, 지속적으로 쿼리하는 등의 작업을 처리하기 위한 일관된 프레임워크가 없었습니다.

진행한 작업

프로필 이미지

그림 1: Tinder에 표시된 사진작가의 사진

Tinder는 코드를 업그레이드하기 위한 해결책으로 Android 아키텍처 구성요소를 사용했습니다. Lifecycle를 사용하여 View가 호스트 활동의 수명 주기를 관찰하도록 했으며 LifecycleObserver를 사용하여 분산된 플러그인 아키텍처를 용이하게 하고 Presenter, Activity, View 객체의 팽창을 방지했습니다. Room 지속성 라이브러리는 로컬 데이터베이스를 정의하고, 관리하고, 쿼리하기 위한 턴키 방식을 제공했습니다.

Tinder 개발팀은 LifecycleObserver 및 플러그인 아키텍처를 2주 만에 구현할 수 있었으며, 고작 이틀 만에 내부 Ads SDK용으로 Room을 구현해냈습니다.

Tinder의 Android 부서 수장인 앤디 로튼은 "우리는 더 이상 플러그인이나 뷰 내부의 활동 수명 주기를 관리하는 데 많은 시간을 투자하지 않아도 됩니다. 잘 설계된 Room을 사용하면 지속성 레이어를 간편하게 구현할 수 있습니다. 내부 Ads SDK용으로 Room을 사용한 덕분에 초기 개발 단계에서 1주일 정도 절약했습니다."

결과

Ads SDK 관련 성과에 크게 만족한 Tinder는 전체 데이터베이스 레이어를 Room으로 이전하고 있습니다. 테스트도 간편했으며, Room은 특정 항목을 등록 취소하는 일을 잊지 않게 해 주므로 메모리 누수도 줄었습니다. Android 아키텍처 구성요소는 메모리 사용량을 줄이는 데도 도움이 되고 있습니다.

"Android 아키텍처 구성요소는 개발자들이 직면하는 크고 작은 여러 가지 문제를 해결할 수 있는 방법을 제공했습니다."라고 로튼은 말합니다. "Tinder는 수명 주기를 인식하는 구성요소를 사용하여 개발자의 생산성, 테스트 가능성, 모듈성을 개선하는 한편 뷰 우선 아키텍처를 지원할 수 있습니다. Room을 사용하면 SQLite를 관리하기 위한 다른 솔루션을 사용할 필요가 없으며, 데이터베이스 관리 및 쿼리를 간단한 구성 작업으로 바꿔줍니다."

측정항목

LifecycleObserver / 플러그인 아키텍처를 통해 MainActivity에서 500개 이상의 코드 행을 삭제했습니다.

시작하기

Android 아키텍처 구성요소는 Android Jetpack의 일부이며 모든 개발자에게 공개되어 있습니다. Android 아키텍처 구성요소를 사용해 보세요.