Entrega Contínua Na Visão De Um Desenvolvedor Android

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes! Você receberá um email de confirmação. Somente depois de confirma-lo é que eu poderei lhe enviar os conteúdos semanais exclusivos. Os artigos em PDF são entregues somente para os inscritos na lista.

Email inválido.
Blog /Android /Entrega Contínua Na Visão De Um Desenvolvedor Android

Entrega Contínua Na Visão De Um Desenvolvedor Android

Vinícius Thiengo
(1748)
Go-ahead
"O método consciente de tentativa e erro é mais bem-sucedido que o planejamento de um gênio isolado."
Peter Skillman
Prototipagem Android
Capa do curso Prototipagem Profissional de Aplicativos
TítuloAndroid: Prototipagem Profissional de Aplicativos
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
Acessar Curso
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Lendo
TítuloManual de DevOps: como obter agilidade, confiabilidade e segurança em organizações tecnológicas
CategoriaEngenharia de Software
Autor(es)Gene Kim, Jez Humble, John Willis, Patrick Debois
EditoraAlta Books
Edição1ª
Ano2018
Páginas464
Conteúdo Exclusivo
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba gratuitamente conteúdos Android sem precedentes!
Email inválido

Tudo bem?

Acredite, eu pensei em iniciar este artigo já lhe informando que se você está apenas iniciando no desenvolvimento de aplicativos, então o artigo provavelmente não seria para você, obviamente que com base em seu atual momento.

Mas refletindo aqui… o pensamento predominante foi:

Que seria muito injusto de minha parte não colocar ao menos um mínimo desconforto na sua mente de desenvolvedor(a) sobre a importância de também se dedicar no assunto “entrega contínua”.

Sendo assim, como desenvolvedor de aplicativos. Independente de seu nível atual. Apenas siga com a leitura. Certamente vai valer a pena.

Logo…

deixa eu lhe fazer uma pergunta: você já se sentiu em um cenário onde teve que aprender algo nada divertido, mas de grande importância?

Provavelmente esta é uma pergunta com resposta óbvia, certo?

É possível que todo mundo já tenha passado por isso. Em ambiente profissional ou em ambiente escolar, por exemplo.

E sim, este é o feeling que primeiro eu quero compartilhar neste artigo:

Aprender a trabalhar com entrega contínua tende a não ser uma tarefa difícil. Mas também não é um playground.

De qualquer forma, para profissionais e projetos que prezam pela consistência e qualidade… sem sombra de dúvidas que é algo essencial.

E diferente do que eu comentei sobre testes automatizados de software, a entrega contínua não é algo tão crítico que você tenha, por obrigação, que conhecer nos mínimos detalhes.

Repetindo, para ficar claro: não é algo que você tenha obrigação de conhecer NOS MÍNIMOS DETALHES.

Principalmente porque hoje em dia quando o assunto é entrega contínua, ao menos no mundo de desenvolvimento mobile, existem ferramentas bem práticas e intuitivas que nos permitem, em poucos minutos, já estar rodando um pipeline completo para a entrega do app na Google Play Store.

Ok. Vou ser sincero. Para a entrega do aplicativo na Google Play Store em modo “production” pode levar “uma horinha” principalmente devido às chaves que terão de ser geradas. Mas somente na primeira vez levará todo esse tempo.

Agora eu preciso falar um mínimo necessário sobre alguns termos, antes que você se sinta perdido:

  • Entrega contínua;
  • Deploy contínuo;
  • Build contínuo;
  • Integração contínua;
  • Continuous integration;

São termos aos quais você vai se familiarizar quando for estudar um pouco mais a teoria da entrega contínua.

Alguns dos termos apresentados são sinônimos (traduções para o inglês) outros são realmente diferentes em conceito.

Veja abaixo duas definições que eu obtive de dois comuns termos da entrega contínua:

  • “Deploy contínuo” - quando todo o pipeline de entrega de software é automatizado. Ou seja, incluindo a publicação do app na Google Play Store;

  • “Entrega contínua” - quando somente não tem automatizado a publicação do software. Ou seja, a publicação do app na Google Play Store depende de ação humana (clique em um botão, por exemplo).

Eu confesso que vejo as definições acima como algo um pouco imprudente.

Ok, Thiengo. Então normalmente você deveria mostrar a definição do termo "entrega contínua”. Definição que você acredita ser a correta. Certo?

Correto! Vamos lá:

Entrega contínua é uma prática. Ou seja, independente de quantos passos você deu na entrega automatizada do software, ainda sim são passos da entrega contínua.

E então, dependendo de até que ponto você foi, temos outros rótulos (integração contínua, build contínuo, …) que permitem facilmente identificar até que ponto o seu pipeline de entrega contínua está efetivo.

Provavelmente com um exemplo fica simples de entender. Veja:

Se você me informar que o seu pipeline de entrega contínua está com apenas a integração contínua implementada.

Então o que eu vou entender é o seguinte… que somente até o momento do merge na main line (master branch) é que a sua entrega contínua está funcionando.

A entrega na Google Play Store, por exemplo, não está funcional no pipeline de sua entrega contínua.

Espero que eu não tenha sido polêmico quando disse "… algo um pouco imprudente” sobre as definições que eu apresentei anteriormente em forma de bullet points.

Principalmente porque eu obtive essas definições de um bom livro BR sobre entrega contínua. Aliás, logo logo falo mais sobre ele ainda neste artigo.

De qualquer forma… é preciso informar que a partir deste ponto eu utilizarei majoritariamente o termo “entrega contínua”.

Voltando…

se você ainda não teve a oportunidade de trabalhar diretamente com algum software de entrega contínua.

E sabendo que já neste ponto do artigo você não precisa mais se preocupar com os inúmeros termos que estão dentro da prática de entrega contínua.

Com tudo isso já entendido… então aqui vai um resumo sincero do que realmente é uma entrega contínua no ambiente de desenvolvimento de software:

É uma maneira de automatizar, na correta ordem de execução, os diferentes tipos de testes de software. Testes unitários, testes de integração, smoke test, testes de aceitação de usuário, e so on.

Pipeline básico de uma entrega contínua de software

Basicamente é isso que a entrega contínua faz.

Assim, a cada atualização enviada ao controle de versão, toda a bateria de testes roda sobre a nova versão do projeto para então certificar que nada foi quebrado.

Caso algo dê errado, pare tudo e corrija.

Há alguns cenários (não tão comuns) que certos erros ou informes (warnings) são aceitáveis, ou seja, podem ser corrigidos mais tarde. Mas isso depende das regras de negócio presentes no projeto.

E caso você ainda não utilize testes automatizados em seus projetos de aplicativos (algo que é mais comum do que você possa imaginar), então possivelmente você enxergou zero importância no que eu falei até o momento, certo?

Caso sim, acredite, somente se você é desenvolvedor solo em seus próprios projetos é que testes automatizados e entrega contínua não devem ter tanta importância assim.

Digo, importância a ponto de investir algumas semanas (ou até meses) na leitura de livros e testes em ferramentas bem aceitas pela comunidade Android.

Antes de continuar, e você já deve ter percebido isso, neste artigo eu vou tentar lhe convencer de que é, sem sombra de dúvidas, uma escolha inteligente investir parte de seu tempo na leitura do livro “Entrega Contínua - Como entregar software de forma rápida e confiável”.

Capa do livro Entrega Contínua

Livro de Jez Humble e David Farley. Com o prefácio de Martin Fowler, persona “pouco badalada” no cenário da engenharia de software e um dos 17 que estavam, em 2001, na reunião de construção do manifesto Agile em Snowbird, Utah.

Agora, uma curiosidade: sabe aquele livro que você compra e fica “décadas” na estante somente esperando o momento certo dele?

Então, a minha história com o livro “Entrega Contínua” é exatamente essa.

Igualmente como aconteceu com as minhas skills em testes automatizados de aplicativos. Para as habilidades de entrega contínua eu também cansei de me contentar somente com o conhecimento que obtive “na rua” e assim fui atrás de conteúdos mais exploratórios.

E boom! Junto com essa vontade veio também uma série de problemas na ferramenta de CI / CD do projeto Android mais recente que eu estou trabalhando.

E sim, CI / CD é outro nome para entrega contínua, digo, para ferramentas de entrega contínua.

Enfim… depois de muita labuta o time descobriu que na verdade o problema era na versão mais recente disponível de máquina virtual da ferramenta de CI / CD.

Basicamente a ferramenta ainda não tinha em produção uma versão de máquina virtual com a versão mais recente do plugin Gradle Android. Sendo assim todo o pipeline de entrega contínua falhava.

Quando descobrimos o problema foi um pouco constrangedor. Pois isso deveria ser algo simples de detectar.

E como estamos falando de um plugin de automação de compilação. Não houve “drama” para a solução adotada: no projeto, aplicar downgrade no plugin Gradle Android.

Confesso que logo que a origem do problema foi detectada, a minha cabeça explodiu: “Que coincidência, quando pensei em estudar CI / CD a casa começou a cair no projeto!”

Voltei a olhar para a estante e estava lá. Foi uma cena mitológica.

Essa parte final é mentira, estou dramatizando. Mas de qualquer forma, comecei pelo livro que acredito ser o ideal.

“Entrega Contínua” é um título bem robusto e completo que vai exigir zero em prática do leitor.

Poxa, Thiengo. “… zero em prática" é algo ruim para nós desenvolvedores, não?

Depende. Quando o foco é primeiro no aprofundamento teórico. Então não é algo ruim. Um livro somente teórico é o ideal.

No título “Entrega Contínua” basicamente o que temos é só teoria do assunto alvo, incluindo inúmeros cases do mundo real.

Apesar do livro ser de 2011, a entrega contínua é um tipo de conteúdo atemporal. Digo, atemporal quando o livro não aborda alguma ferramenta de CI / CD em específico.

Por exemplo, você desenvolvedor Android, caso ainda não saiba, tem um livro de entrega contínua somente para desenvolvedores Android.

O livro se chama Entrega contínua em Android - Como automatizar a distribuição de apps (de Roger Silva).

É um bom livro. Porém é um livro que aborda diretamente o trabalho com algumas populares ferramentas de entrega contínua. Digo, populares na época em que o livro foi escrito.

E essa abordagem ferramental faz com que boa parte do livro fique depreciada. Principalmente porque o Bitrise, principal ferramental de CI / CD mobile (até o momento da construção desta resenha), não foi abordado.

De qualquer forma, ainda sim é um bom livro.

Aliás, você lembra do livro que eu mencionei anteriormente neste artigo sobre sendo o livro fonte das definições que eu coloquei aqui sobre “Entrega contínua” e “Deploy contínuo”. Então, o livro é exatamente este de Roger Silva.

E independente do que você esteja pensando agora sobre o livro do Roger. Eu seguramente recomendo que você primeiro leia o livro “Entrega Contínua” antes de seguir para o livro “Entrega contínua em Android”.

Isso porque o livro “Entrega contínua em Android” é com foco na prática, consequentemente ele não é tão rico na parte teórica.

Agora… já que eu mencionei o Bitrise. Então não perca tempo. Pode ser até com um simples Hello World! em seu projeto Android.

Já inicie seus trabalhos com essa ferramenta de CI / CD que felizmente tem uma versão gratuita.

Veja essa lista tutorial do canal YouTube da ferramenta: Bitrise Tutorials.

Obviamente que eu estou assumindo que você sabe minimamente trabalhar com alguma ferramenta de controle de versão aceita pelo Bitrise. O Git (GitHub), por exemplo.

Isso porque ferramentas de CI / CD e ferramentas de controle de versão andam de mãos dadas.

Aliás, o livro “Entrega Contínua” tem inúmeros trechos onde é abordado somente o conteúdo “controle de versão”.

Os destaques ficam para o capítulo 7, “O Estágio de Commit”, e o capítulo 14, “Controle de Versão Avançado”.

Acredite, com este livro em mãos você também vai aprender muita coisa útil sobre controle de versão.

Eu particularmente fiquei impressionado em saber que feature branch é um anti-padrão em entrega contínua. Que aumenta consideravelmente o número de conflitos em projeto.

Eu trabalho com feature branch e conheço alguns evangelistas desta prática.

Aliás, não muito tempo atrás, eu ouvi a seguinte frase: “É com feature branch que você começa a entender o verdadeiro poder de uma ferramenta de controle de versão.”

Confesso que será bem difícil criar o comportamento de enviar os commits direto para a master branch. Um dia eu tentarei!

Um detalhe, como o livro é de 2011, então ainda tem como parte do conteúdo dele a antiga (e eu não tenho medo de falar isso) narrativa de que tudo deve ser feito pelo prompt de comando.

Sério? Ouvir isso em 2011 está ok (eu acho). Mas em 2021?!

Eu particularmente prefiro fazer o máximo possível pelo IDE ou dashboard da ferramenta de CI / CD que estou utilizando.

O Android Studio, por exemplo, dispensa completamente o uso de qualquer outra ferramenta de controle de versões do aplicativo. Incluindo o uso do prompt (no pior cenário, utilize o terminal do próprio IDE).

E se você é desenvolvedor Android e discorda (vou ser um pouco soberbo) então você ainda não é tão bom ao menos com o Android Studio.

Mas enfim, quem é old scholl vai sempre ter os seus argumentos sobre como o uso do Unix shell é melhor do que qualquer interface gráfica.

De qualquer forma, apesar desse ponto, o livro é FE-NO-ME-NAL. É sério. E estamos falando de um livro de TI com centenas de páginas.

Mas como falei anteriormente, são páginas de somente leitura. Zero exigência de prática imediata em alguma ferramenta específica de CI / CD.

E acredite:

Conhecer bem o assunto “entrega contínua” certamente vai lhe colocar passos à frente de muitos outros developers que são seus concorrentes diretos no mercado de trabalho e não sabem absolutamente nada sobre CI / CD.

Bom, acho que é isso.

Eu não quero criar uma resenha maior do que o próprio livro. Somente queria lhe mostrar que este é mais um daqueles títulos que eu recomendo com total segurança.

Logo logo estarei liberando aqui a resenha do livro “Entrega contínua em Android” e várias outras.

Mas me diga:

Você já leu algum livro sobre entrega contínua? Se sim, não deixe de recomendar logo abaixo nos comentários.

Aliás, qualquer recomendação de leitura é bem vinda.

Na verdade, vou ser sincero, eu não sou nada fã de livros de ficção. Mas eu sei que isso é um problema da minha pessoa.

E, por fim, não esqueça de se inscrever na lista de e-mails do Blog 📩 . Lista também conhecida como: A poderosa lista de desenvolvedores Android (nativo).

Abraço.

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes!
Email inválido

Relacionado

A Arte de Escrever Programas Legíveis Na Visão de Um Dev AndroidA Arte de Escrever Programas Legíveis Na Visão de Um Dev AndroidAndroid
As Leis Fundamentais Do Projeto De Software Na Visão De Um Desenvolvedor AndroidAs Leis Fundamentais Do Projeto De Software Na Visão De Um Desenvolvedor AndroidAndroid
5 Coisas Que Eu Aprendi Com Desenvolvedores Autores Estrangeiros5 Coisas Que Eu Aprendi Com Desenvolvedores Autores EstrangeirosAndroid
Testes Automatizados de Software Na Visão De Um Desenvolvedor AndroidTestes Automatizados de Software Na Visão De Um Desenvolvedor AndroidAndroid

Compartilhar

Comentários Facebook

Comentários Blog

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...