Android Dev Conference 2017 - Entrega Contínua para Mobile
-
Upload
imasters -
Category
Technology
-
view
54 -
download
1
Transcript of Android Dev Conference 2017 - Entrega Contínua para Mobile
Entrega Contínua para MobileO que considerar na entrega para mobile
Patrícia Muniz
Recife
"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
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
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
Entrega contínua
deploypara teste
Para cada grupo de dispositivos
Integração contínua
Código VCScommit + 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çãocontínua
App
deploy para produção
Monitoramentopackaging e
submissão
Entrega contínua
deploypara teste
Para cada grupo de dispositivos
Integração contínua
Código VCScommit + 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çãocontínua
App
deploy para produção
Monitoramentopackaging e
submissão
App' + Server'
App'' + Server''
App''' + Server'''
App'''' + Server''''
App + Server
(UAT/Beta)
App + Server Monitoramento
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
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
"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
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!
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
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
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?
- 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
- 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
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
- 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
- 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
- Automatizar a Entrega- Onde?- Nas lojas (Play Store, Amazon App Market, ...)
- Em um Repository/Dependency Manager- Artifactory- Bintray
ENTREGA CONTÍNUA
- 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
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
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
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
[email protected]@gmail.com