Apresentação efetuada na #reactconfbr2020
Em 2019 nos deparamos com o desafio de refatorar o App da Creditas de modo que ele fosse escalável, robusto e permitisse dar autonomia de desenvolvimento para múltiplos times. Isso nos levou a criar uma plataforma Mobile, composta por um módulo principal chamado de Mobile Core e ferramentas que habilitam cada time integrar seu próprio módulo (ou mini-app). Em um curto período de tempo chegamos a mais de 30 contribuidores no App em mais de 6 times (incluindo diferentes países) escrevendo código que é integrado em um único aplicativo. Temos a capacidade de fazer deploys diários em ambiente beta e releases para App Store e Google Play toda semana. Nesta palestra será explicada como é essa arquitetura, os desafios que tivemos nessa construção e como garantimos uma experiência unificada e com qualidade usando Design System, testes e deploys contínuos.
13. Estratégia de Tecnologia
Codebase único para múltiplas plataformas
Conhecimento do time em Javascript / Typescript
Reuso com React WEB
Facilidade em colocar lógica em um BFF Node.js
Ferramentas como Code Push, Hot Reload
Custo de desenvolvimento $$
Por que
React Native?
15. Time Design
Time Mini Apps (aprox. 6)
Time Mobile Core
Modularização
Feature
Design System
Core
Feature
Feature
Feature
Feature
Feature
Shared Shared
16. Responsabilidades
Release do Mini
App (Módulo)
Usar e evoluir
Core APIs
Garantir
experiência
consistente com
o Design System
Usar boas
práticas e
padrões de
arquitetura no
módulo
Tornar mini app
"monitorável" e
com métricas
Garantir
qualidade do
módulo
Time Mini Apps
Release do
Aplicativo
Implementar
e manter Core
APIs
Garantir uma
experiência única
e consistente
em todo APP
Definir
arquitetura, boas
práticas
e padrões
Ferramentas de
monitoração e
analytics
Garantir
qualidade na
integração dos
módulos
Time Mobile Core
17. Modularização
Integração de todos os módulos
Implementação da navegação central (Main Navigation)
Sessão da cliente, Login, SignUP, Perfil, Customer Support
Channels
APIs comuns: Push Notifications, Internationalization, Camera access,
Biometrics, Permissions, Logging etc.
Módulo
Core
27. Arquitetura
Core API Mock
import { coreAPIMock, Login } from
'mobile-core-api-mock';
const navigation = /* ... */
const App = () => (
<Login
coreApi={coreAPIMock.v1}
navigation={navigation}
initialRouteName="Home"
/>
);
Expõe um componente React que
facilita os mini apps a simularem a
tela de Login do Core