Android Dev Conference 2017 - Entrega Contínua para Mobile

25
Entrega Contínua para Mobile O que considerar na entrega para mobile Patrícia Muniz Recife

Transcript of Android Dev Conference 2017 - Entrega Contínua para Mobile

Page 1: Android Dev Conference 2017 - Entrega Contínua para Mobile

Entrega Contínua para MobileO que considerar na entrega para mobile

Patrícia Muniz

Recife

Page 2: Android Dev Conference 2017 - Entrega Contínua para Mobile
Page 3: Android Dev Conference 2017 - Entrega Contínua para Mobile

"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

Page 4: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 5: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 6: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 7: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 8: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 9: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 10: Android Dev Conference 2017 - Entrega Contínua para Mobile

"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

Page 11: Android Dev Conference 2017 - Entrega Contínua para Mobile

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!

Page 12: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 13: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 14: Android Dev Conference 2017 - Entrega Contínua para Mobile

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?

Page 15: Android Dev Conference 2017 - Entrega Contínua para Mobile

- 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

Page 16: Android Dev Conference 2017 - Entrega Contínua para Mobile

- 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

Page 17: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 18: Android Dev Conference 2017 - Entrega Contínua para Mobile

- 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

Page 19: Android Dev Conference 2017 - Entrega Contínua para Mobile

- 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

Page 20: Android Dev Conference 2017 - Entrega Contínua para Mobile

- Automatizar a Entrega- Onde?- Nas lojas (Play Store, Amazon App Market, ...)

- Em um Repository/Dependency Manager- Artifactory- Bintray

ENTREGA CONTÍNUA

Page 21: Android Dev Conference 2017 - Entrega Contínua para Mobile

- 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

Page 22: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 23: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 24: Android Dev Conference 2017 - Entrega Contínua para Mobile

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

Page 25: Android Dev Conference 2017 - Entrega Contínua para Mobile

[email protected]@gmail.com