Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o...

42

Transcript of Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o...

Page 1: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times
Page 2: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Mobile Developers @

Page 3: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

thoughtworks.com/pt/careers/access

TÓTI O QUE?

Page 4: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

UM POUCO SOBRE NOSSA APP

Android + iOS

~ 3 anosem evolução

VIPERdesde o início

~1,5 milhõesusuários ativos / mês

~50 pessoasde diferentes times

20+ países

Page 5: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times
Page 6: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

VIPER é uma forma de aplicar os princípios de

Clean Architectureem aplicações móveis.

O QUE?

Page 7: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

CLEAN ARCHITECTURE

Page 8: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Regras de negócio do tipo

enterprise

ENTIDADES

Page 9: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Regras de negócio do tipo

aplicação

CASOS DE USO

Page 10: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Conversores de dados para formatos mais

convenientespara interação com agentes externos

ADAPTADORES

Page 11: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Chamada para frameworks, drivers, UI, bases de dados

sem lógica de negócio

INTERAÇÃO EXTERNA

Page 12: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Os círculos são um esquema

Em alguns casos é necessário criar mais camadas. Porém, existe uma única regra que nunca deve ser quebrada:

A regra de dependência.

SÓ 4 CAMADAS?

Page 13: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Você consegue

todos os níveisda sua arquitetura

u n i t a r i a m e n t ede forma isolada?

CLEAN GAME

Page 14: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Seu controller usa seu model…mas

seu model usaseu controller?

CLEAN GAME

Page 15: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Dá pra usar seu

bffem apps

Android e iOS?

CLEAN GAME

Page 16: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Sua camada maise x t e r n a

tem

lógica de negócio?

CLEAN GAME

Page 17: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Você consegue

alguma dependência(tipo uma base de dados)

mudanças drásticasno código?

CLEAN GAME

Page 18: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times
Page 19: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

View - é quem lida de fato com os componentes na tela

Interactor - busca dados das fontes externas

Presenter - coordena as requisições ao interactor e manda exibir os ______________________-resultados na view

Entidade - são os modelos

Roteador - coordena a passagem de um módulo viper a outro

VIPER

Page 20: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Imagem adaptada de https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52

VIPER EM iOS

Page 21: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Basicamente: as chamadas

ViewControllers

massivas

O QUE VIPER VEIO RESOLVER?

Page 22: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times
Page 23: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Se você pesquisar por aí, vai ouvir gente falando de:

● MVC (Model — View — Controller)

● MVP (Model — View — Presenter)

● MVVM (Model — View — ViewModel)

● Clean Architecture

ARQUITETURAS EM ANDROID

Page 24: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

App que consome frases aleatórias de uma API e as

retorna em outra tela

Android Sample

https://github.com/marcellalcs/ViperSampleTDC

Page 25: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Não faça isso

Page 26: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Nessa app, uma frase é consumida de

uma API e passada da tela principal

para a segunda tela da aplicação.

Entity

Page 27: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Entity

Page 28: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Quando um usuário clica no botão "gerar

frase", espera que uma frase aleatória

seja mostrada na tela da app.

Interactor

Page 29: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Interactor

Page 30: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Quando um usuário clica no botão "gerar

frase", na tela inicial uma nova frase é trazida

da API e transmitida para a segunda tela…

Presenter

Page 31: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Presenter

Page 32: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

View

Page 33: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Router

Quando usuário clica no botão "Gerar Frase"

da primeira tela, navega para a segunda tela,

levando a primeira frase captada da API

Page 34: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Router

Page 35: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times
Page 36: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Pontos Fracos

● Às vezes é difícil entender o papel do Interactor

● Mais camadas, que pode tornar o debugging mais

difícil*

Page 37: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Pontos Fracos

● Às vezes adiciona uma "burocracia" no

desenvolvimento… por exemplo, criação de camadas

só para seguir o padrão, mas com pouca

funcionalidade

● Menos suporte para tratar coisas do Android (ciclo de

vida)

Page 38: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Pontos Fortes

● Permite trabalhar em uma camada sem ter que se

preocupar muito com a outra

● Desacopla o conhecimento que uma view tem da

outra, podemos navegar com certa tranquilidade

usando os navigators

Page 39: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

Pontos Fortes

● A view fica bem mais testável

● O time passa a ter um "dialeto" comum: quando um

par de desenvolvedoras faz algo, todas já entendem o

que foi criado, modificado etc.

● Pessoas que não vem do mundo Android aprendem

mais rápido, por exemplo, MVVM exige mais

especialização no Android

Page 40: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times
Page 41: Mobile Developers... UM POUCO SOBRE NOSSA APP Android + iOS ~ 3 anos em evolução VIPER desde o início ~1,5 milhões usuários ativos / mês ~50 pessoas de diferentes times

LARISSA [email protected]

MARCELLA [email protected]