O Tinder é o app mais popular do mundo para conhecer novas pessoas. Conhecido por mudar a forma como as pessoas se conhecem e marcam encontros, ele permite que os usuários se conectem e conversem diretamente com outras pessoas. O Tinder gera mais de 26 milhões de matches por dia, totalizando mais de 20 bilhões desde o lançamento, em 2012.
A empresa precisava ampliar o app rapidamente com base na demanda dos usuários, mas a implementação do banco de dados foi deixada de lado desde o início, o que dificultava cada vez mais a expansão dele.
Além disso, a empresa tinha uma arquitetura de visualização pesada para reduzir as complexidades do ciclo de vida, mas
precisava saber quais eventos do ciclo de vida eram específicos de uma atividade. A equipe não tinha
um framework consistente para gerenciar tarefas, como ordenar os objetos
Cursor
como objetos de domínio, fazer
migrações do banco de dados ou realizar consultas de maneira consistente.
O que a equipe fez
O Tinder recorreu aos Componentes
da arquitetura do Android para buscar soluções para atualizar o
código. Foram usados Lifecycle
para
permitir que um View
observasse o ciclo de vida
da atividade do host, além de LifecycleObserver
para facilitar uma arquitetura de plug-in descentralizada e evitar a sobrecarga em
objetos
Presenter
,
Activity
e View
. A biblioteca de persistência Room
forneceu um método pronto para definir, gerenciar e consultar o banco de dados
local.
A equipe de desenvolvimento do Tinder conseguiu implementar o
LifecycleObserver
e
a arquitetura de plug-in em apenas duas semanas. Já a implementação da Room para o
SDK de anúncios internos levou apenas dois dias.
"Não precisamos mais investir tempo significativo gerenciando o ciclo de vida da atividade nos plug-ins ou visualizações", disse Andy Lawton, chefe de Android da Tinder. "O design do Room é bem pensado e facilita a implementação da nossa camada de persistência. Usar o Room para o SDK de anúncios internos provavelmente economizou uma semana no desenvolvimento inicial."
Resultados
O Tinder ficou tão satisfeito com os resultados do SDK de anúncios que está migrando toda a camada do banco de dados para o Room. O teste foi fácil e a proteção do Room contra o esquecimento de cancelar inscrições reduziu os vazamentos de memória. Os componentes de arquitetura do Android também estão ajudando a reduzir o espaço exigido da memória.
"Os componentes de arquitetura do Android forneceram uma solução para muitos dos pontos problemáticos que os desenvolvedores enfrentam em diferentes níveis", diz Lawton. "Com o uso de componentes que reconhecem o ciclo de vida, o Tinder conseguiu melhorar a produtividade, a capacidade de teste e a modularidade do desenvolvedor, ao mesmo tempo que propiciou uma arquitetura de visualização inicial. O Room elimina a necessidade de outras soluções para gerenciar o SQLite e transforma o gerenciamento do banco de dados e a consulta em um exercício na configuração."
Métrica
Mais de 500 linhas de código foram removidas da MainActivity
usando a
arquitetura de plug-in e o
LifecycleObserver
Primeiros passos
Os componentes de arquitetura do Android estão abertos para todos os desenvolvedores como parte do Android Jetpack. Comece a usar os Componentes da arquitetura do Android.