Tinder résout les problèmes des applications de rencontres avec les composants d'architecture Android

Tinder est l'application la plus populaire au monde pour rencontrer de nouvelles personnes. Connu pour avoir changé la façon dont les gens se rencontrent et sortent ensemble, il permet aux utilisateurs de balayer vers la droite pour se connecter et discuter avec d'autres personnes. Tinder génère plus de 26 millions de matchs par jour, et plus de 20 milliards de matchs ont été créés depuis son lancement en 2012.

L'entreprise devait faire évoluer rapidement son application en fonction de la demande des utilisateurs, mais l'implémentation de sa base de données datait de ses débuts, ce qui rendait son expansion de plus en plus compliquée. Ils avaient également une architecture axée sur les vues pour réduire la complexité du cycle de vie, mais ils devaient savoir quels événements du cycle de vie étaient spécifiques à une activité. Ils manquaient d'un framework cohérent pour gérer des tâches telles que le marshalling des objets Cursor dans des objets de domaine, la migration de bases de données ou l'exécution cohérente de requêtes.

Ce qu'ils ont fait

Image d'un profil

Figure 1 : Photo d'un photographe sur Tinder

Tinder s'est tourné vers les composants d'architecture Android pour trouver des solutions permettant de mettre à niveau son code. Ils ont utilisé Lifecycle pour permettre à un View d'observer le cycle de vie de son activité hôte, et LifecycleObserver pour faciliter une architecture de plug-in décentralisée et éviter le gonflement des objets Presenter, Activity et View. La bibliothèque de persistance Room fournissait une méthode clé en main pour définir, gérer et interroger leur base de données locale.

L'équipe de développement de Tinder a pu implémenter l'architecture de plug-ins LifecycleObserver en seulement deux semaines, tandis que l'implémentation de Room pour son SDK Ads interne n'a pris que deux jours.

"Nous n'avons plus eu à consacrer beaucoup de temps à la gestion du cycle de vie des activités dans les plug-ins ou les vues", explique Andy Lawton, responsable Android chez Tinder. "La conception de Room est bien pensée et facilite l'implémentation de notre couche de persistance. L'utilisation de Room pour le SDK Ads interne nous a probablement fait gagner une semaine de développement initial."

Résultats

Tinder a été tellement satisfait des résultats obtenus avec le SDK Ads qu'il migre l'intégralité de sa couche de base de données vers Room. Les tests étaient faciles et la protection de Room contre l'oubli de désenregistrement d'un élément a réduit les fuites de mémoire. Les composants d'architecture Android contribuent également à réduire l'empreinte mémoire.

"Les composants de l'architecture Android ont fourni une solution à de nombreux problèmes rencontrés par les développeurs à différentes échelles", explique Lawton. "Grâce à l'utilisation de composants compatibles avec le cycle de vie, Tinder a réussi à améliorer la productivité des développeurs, la testabilité et la modularité, tout en favorisant une architecture axée sur les vues. Room élimine le besoin d'autres solutions pour gérer SQLite, et transforme la gestion et l'interrogation de bases de données en un exercice de configuration."

Métrique

Plus de 500 lignes de code supprimées de MainActivity via LifecycleObserver / architecture de plug-in

Premiers pas

Les composants d'architecture Android sont ouverts à tous les développeurs dans le cadre d'Android Jetpack. Premiers pas avec les composants d'architecture Android