Patrícia Muniz - Software Analist na ThoughtWorks, fala sobre Entrega Contínua para Mobile no Android Dev Conference 2017.
https://eventos.imasters.com.br/android-devconference/
Android Dev Conference 2017 - Entrega Contínua para Mobile
1. Entrega Contínua para Mobile
O que considerar na entrega para mobile
Patrícia Muniz
Recife
2.
3. "Um dos ensinamentos do movimento lean de desenvolvimento
de software é a importância de otimizar o todo.
...
Somente quando você tem controle sobre o progresso de cada
mudança desde sua introdução até sua implantação em
produção é que pode começar a otimizar a qualidade e a
velocidade de sua entrega."
Entrega Contínua, Jez Humble & David Farley
4. Incorporar as práticas de DevOps* em projetos para mobile é
uma necessidade para sua sobrevivência, por conta da matriz
de variação e do modelo de distribuição dinâmico.
* DevOps como a filosofia que integra desenvolvimento,
qualidade e infraestrutura
5. características do negócio (por região, por perfil de usuário, ...)
dispositivos (fabricantes, versão de OS, resoluções, densidade, ...)
propósitos de uso (dev, testes, beta, staging, produção)
10101010101010
010101010101010
010101010101010
1010101010101010
6. Entrega contínua
deploy
para teste
Para cada grupo de dispositivos
Integração contínua
Código VCS
commit +
push
App
build test Unit Test
Results
App Results
App Results
App Results
testes de
integração
testes de
UI
testes de
compatibilidade
App
(UAT/Beta)
deploy para
staging
Um Pipeline Simplificado para Mobile
Implantação
contínua
App
deploy para
produção
Monitoramento
packaging e
submissão
7. Entrega contínua
deploy
para teste
Para cada grupo de dispositivos
Integração contínua
Código VCS
commit +
push
App
build test Unit Test
Results
App Results
App Results
App Results
testes de
integração
testes de
UI
testes de
compatibilidade
App
(UAT/Beta)
deploy para
staging
Um Pipeline (um pouco menos) Simplificado para Mobile
Implantação
contínua
App
deploy para
produção
Monitoramento
packaging e
submissão
App' +
Server'
App'' +
Server''
App''' +
Server'''
App'''' +
Server''''
App +
Server
(UAT/Beta)
App +
Server Monitoramento
8. características do negócio (por região, por perfil de usuário, ...)
dispositivos (fabricantes, versão de OS, resoluções, densidade, ...)
propósitos de uso (dev, testes, beta, staging, produção)
10101010101010
010101010101010
010101010101010
1010101010101010
9. características do negócio (por região, por perfil de usuário, ...)
dispositivos (fabricantes, versão de OS, resoluções, densidade, ...)
propósitos de uso (dev, testes, beta, staging, produção)
10101010101010
010101010101010
010101010101010
1010101010101010
10. "Entrega Contínua é a automatização do ciclo de
compilação, testes, empacotamento e deploy com
relatórios de cada fase."
Marco Valtas no Agile Vale 2011
11. ENTREGA CONTÍNUA
- Automatizar a Análise Estática e o Controle de Licenças
- Android: PMD, Lint, FindBugs
- iOS: PMD, Dry, Dtrace
- Black Duck Protex
- Regras específicas do cliente
- Cuidado: Variações de uma mesma app podem
gerar relatórios diferentes!
12. ENTREGA CONTÍNUA
- Automatizar a Build e o Deploy
- Scripts (ant, gradle, maven) que automatizam as variações
- Dos manifest e properties
- Dos assets e resources
- Das assinaturas
- Atenção: Gerenciar arquivos e dependências desnecessários
em variações da mesma App
13. ENTREGA CONTÍNUA
- Automatizar a Build e o Deploy
- Não se limita à geração dos arquivos .apk ou .aar
- E os servers?
- E as bases de dados e arquivos compartilhados na nuvem?
- E o upgrade de versões anteriores?
- Depois disso, e a recuperação a falhas?
- rollback de versão, conflito de dados
14. ENTREGA CONTÍNUA
- Automatizar a Build e o Deploy
- Trunk Based Development vs Feature Branch
- Feature Toggle
- Quem vai mudar o toggle no cliente?
- Seu "feature toggle" é mais feature do que toggle?
15. - Automatizar os Testes
- Versões do mesmo aplicativo, para propósitos/targets
diferentes, precisam de infraestruturas distintas?
- Servidores devem responder de forma diferente
para cada versão do aplicativo?
- A execução automatizada dos testes produz os relatórios
adequados?
ENTREGA CONTÍNUA
16. - Automatizar os Testes
- Testes Manuais
- Afinal, o que não dá pra automatizar?
- Não consigo automatizar (ainda), mas posso monitorar e
gerar relatórios?
- Se o ADB e o AAPT podem no Android, por que não eu?
- Talvez possa, mas devo?
ENTREGA CONTÍNUA
17. ENTREGA CONTÍNUA
- Automatizar os Testes
- Testes Automatizados
- Essencial para muitas variações de app e para sprints curtas
- Testes unitários nem sempre precisam ser testados em
dispositivos
- Os demais testes (integração, UI, compatibilidade, …) quase
sempre precisam do dispositivo
- Automação não apenas em emuladores
- Amazon Device Farm
- Google Cloud Test Lab
- Xamarin Test Cloud
18. - Automatizar a Entrega
- Para quem?
- Testers, beta testers, cliente (staging), usuários finais
(produção)
- Track de publicação, que pode ser alpha, beta, staged rollout
ou production
- Beta (testers selecionados) != Staged rollout (público reduzido)
ENTREGA CONTÍNUA
19. - Automatizar a Entrega
- Como?
- Ação do usuário
- Notificações (cloud messages)
- Auto update
- Cuidado: Feature toggles, router (verde-azul) e canary fazem
sentido na solução integrada com um servidor?
ENTREGA CONTÍNUA
20. - Automatizar a Entrega
- Onde?
- Nas lojas (Play Store, Amazon App Market, ...)
- Em um Repository/Dependency Manager
- Artifactory
- Bintray
ENTREGA CONTÍNUA
21. - Automatizar a Entrega
- Onde?
- No servidor proprietário
- Controle local de versões
- Adaptar servidor para o processo de continuous deployment
- Alguns aplicativos para celular são eles próprios gerenciadores
de outras aplicações
ENTREGA CONTÍNUA
22. E A IMPLANTAÇÃO CONTÍNUA?
- Packaging e Submissão também precisam ser automatizados e
cobrirem a matriz de variação
- Preferencialmente, o Monitoramento faz parte do mesmo pipeline
- A aplicação dá suporte ao monitoramento?
- Caso não, volte 20 casas
23. E A IMPLANTAÇÃO CONTÍNUA?
- "Entrega" pode ser apenas para o cliente, e não diretamente na loja
- Quem vai cuidar da implantação de fato?
- Regras Internas de Governança
- Relatórios
- Manuais
- Checklists
- Screenshots
- Procedimentos
24. Ferramentas mais Populares
- Maior valor para projetos simples. Permite automatizar todo o
processo, mas não de uma forma direta para projetos complexos
Jenkins
Go.CD
- Maior valor para projetos complexos, pois foi construído para isso
Travis CI
- Maior valor para projetos simples. Possui algumas restrições para
execução de testes automatizados