You are on page 1of 12
8 - Entrega Continua PTT) ae saat) pela midia interativa, E-Book -Apostila Entrega Continua Aintegracao continua (Cl) ea entrega continua (CD), também conhecidas como CI/CD, incorporam uma cultura, prinefpios operacionais e um conjunto de praticas que as equipes de desenvolvimento de aplicativos usam para fornecer alteragdes de cédigo com mais frequéncia e confiabilidade. CI/CD & uma pratica recomendada para equipes de DevOps. Trata-se também de uma prética recomendada na metodologia gil. Ao automatizar a integracao e a entrega, o CI/CD permite que as 10s de negécios, equipes de desenvolvimento de software se concentrem em atender aos requi garantindo a qualidade do cédigo e a seguranca do software. EOI cry Nesta unidade, seré abordado o controle de versao, também conhecido como controle de revisdo ou controle de origem, que permite rastrear qualquer tipo de arquivo 20 longo do tempo. Ok, mas o que é isso e para qué fazer isso? Vocé, certamente, jé inventou o seu préprio sistema de controle de verso, sem mesmo ter percebido que ele possui este nome. Vou listar alguns nomes, veja se vocé jd fez algo parecido (ndo exatamente com estes nomes, mas algo parecido com estes): + Projeto.doc ProjetoArrumado.doc ProjetoAdicionadoConclusdo.doc programa_funcionando.java programa_funcionandoteste.java + logo.png. * logofinal.png + logofinal2.png E-Book -Apostila Todos estes arquivos esto, de um modo ou de outro, versionados. Cada um possui um detalhe que diferencia dos demais. Por exemplo, quando vocé tem em suas mos um cédigo fonte do sistema que esté funcionando corretamente, possivelmente vocé quer salvé-lo antes de adicionar novos recursos. Ento, vocé salva com um nome que faca algum sentido para vocé, A opcio “Salvar como” tem salvo nossos arquives e projetos ha anos e, certamente, tem colaborado com o nosso controle de versao caseiro. Alids, em muitas empresas até a um tempo atrés (e ndo a tanto tempo atrés assim), possuiam desenvolvedores criando seus versionamentos assim. Porém, coloque-se como membro de uma equipe de desenvolvedores recém-contratado. Quando vocé abrisse o ambiente de desenvolvimento e se deparasse com um arquivo chamado op-teste12-funcionando.html, o que vocé faria? Nao sei voc, mas algumas pessoas podem pensar: 0 que € isso? ‘até aqui deu para perceber que vocé, diretamente ou indiretamente, j fez seu proprio controle de versio. Agora, a proposta de hoje em diante é padronizar este controle, de modo que os nomes de arquivos e estruturas de diretérios sejam consistentes nao s6 para vvocé, mas para toda a equipe envolvida. Isso permitiré que vocé e sua equipe sejam mais produtivos, do inicio ao fim do projeto. E-Book -Apostila Ao final deste contetido, vocé sera capaz d '* Compreender os conceitos de entrega continua e integragao conti + Aplicar integragdo e entrega continua envolvendo praticas de Devo} Integragao Continua e Entrega Continua Tere} Alntegracao Continua é uma filosofia de codificaco e um conjunto de préticas que impulsionam as equipes de desenvolvimento a implementar com frequéncia pequenas alteracdes de codigo e fazer check-in em um repositério de controle de versio. ‘A maioria dos aplicativos modernos exige o desenvolvimento de cédigo usando uma variedade de plataformas e ferramentas, portanto, as equipes precisam de um mecanismo consistente para integrar e validar as alteracdes. A integracao continua estabelece uma maneira automatizada de construir, empacotar e testar seus aplicativos. Ter um processo de integragio consistente incentiva os desenvolvedores a realizar alteracdes de cédigo com mais frequéncia, o que leva a uma melhor colaboragdo € qualidade de cédigo, Aentrega continua comega onde a integracdo continua termina e automatiza a entrega de aplicativos para ambientes selecionados, incluindo ambientes de producao, desenvolvimento teste, Renn GCE con Coe en eet oe POs CI/CD permite que as organizagées enviem software de forma répida e eficiente, e facilita um processo eficaz para colocar produtos no mercado mais répido do que nunca, entregando cédigo continuamente em produgo e garantindo um fluxo continuo de novos recursos e correcdes de bugs por meio do método de entrega mais eficiente. Eck, Uebernickel e Brenner (2014) conduziram uma pesquisa na andlise das implicacées organizacionais de assimilaco de integragio em 43 estudos primérios. A revisio revelou que as organizagées exigem a implementacao de varias mudangas ao adotar 0 Cl. 0 estudo propds uma estrutura de 14 implicagées organizacionais (por exemplo, fornecendo 0 CI no inicio do projeto) de integragao continua. E-Book -Apostila Esse estudo observou, ainda, que os langamentos répidos so praticas industriais predominantes 's dominios e paradigmas de desenvolvimento de software (por exemplo, © Cédigo aberto). Concluiu-se que as evidéncias das vantagens e desvantagens alegadas da liberagao répida so escassas. Rodriguez et al. (2017) apresentam um mapeamento sobre a implantago continua para identificar 19s beneficios e os desafios relacionados ao CD (Continuous Deployment). Com base em 50 estudos primérios, foi observado que a mudanga para 0 CD exige uma significativa alteragao de processos de uma determinada organizagao, por exemplo, mentalidades de equipe, maneira de trabalhar da organizacdo a garantia de qualidade das atividades esto sujeitas a alteragdes. De acordo com Rodriguez et al. (20171, a principal contribuigao deste estudo foi justamente o mapeamento de alguns fatores que definem a prética de CD. Por exemplo, (a) liberacao répida e frequente; (b) testes continuos e garantia de qualidade; (c) Cl; (d) implantacao, entrega e processos de liberagio e configuragao de ambientes de implantagao. ‘ACD (Continuous Deployment) vai um passo além e implanta de forma automética e continua 0 aplicativo para os ambientes de produgio ou de cliente. E importante notar que a prética de CD implica na prética do CDE, mas o inverso nao é verdadeiro. Para compreender melhor a Entrega Continua, é essencial ler 0 capitulo indicado a seguir. Estudo Guiado Leia as paginas 39 a 42 do livro Engenharia de Software. Clique no link eleiao livre SOMMERVILLE, lan. Engenharia de Software. 9. ed. $0 Paulo: Pearson Prentice Hall, 2021. 4J8 0 CDE (Continuous DElivery) visa garantir que a aplicagao esté sempre pronta para 0 seu langamento, apés a realizagio de testes automatizados e verificagées de qualidade. E-Book Apostila © CDE emprega um conjunto de préticas, para entregar 0 software automaticamente para um ambiente de produgio. Essa pratica oferece vérios beneficios, como a diminuicdo do risco de implantacdo, reducdo dos custos e obten¢io de feedback do usuario com mais rapider. Enquanto a implantacdo final no CDE é uma etapa manual, nao deve haver etapas manuais no CD. A pratica de CDE é uma abordagem para o qual uma empresa decide o que e quando implantar; j8 0 CD é uma abordagem baseada em push. Em outras palavras, 0 escopo do CDE néo inclui o langamento automatizado, e o CD é consequentemente uma continuagéo do CDE, Embora a pratica de CDE possa ser aplicada a todos os tipos de sistemas e organizagées, a pratica de CD pode ser adequada apenas para certos tipos de organizagdes ou sistemas, Comparagao entre CI/CD A integracao continua (CI) é uma pratica que envolve desenvolvedores fazendo pequenas alteragdes e verificages em seu cédigo, Devido a escala de requisitos e ao niimero de etapas envolvidas, esse processo é automatizado para garantir que as equipes possam criar, testar e empacotar seus aplicativos de maneira confidvel e repetivel. A Cl ajuda a simplificar as alteracdes de cédigo, aumentando, assim, o tempo para que os desenvolvedores facam alteracdes e contribuam para methorar 0 software Aeentrega continua (CO) é 2 entrega automatizada de cédigo completo para ambientes como teste e desenvolvimento, 0 CD fornece uma maneira automatizada e consistente para que o cédigo seja entregue a esses ambientes. ‘Aimplantago continua é a préxima etapa da entrega continua. Cada mudanga que passa nos testes automatizados é colocada automaticamente em producdo, resultando em muitas implementacdes de producao. Aimplantagao continua deve ser 0 objetivo da maioria das empresas que nao so restringidas por requisitos regulatérios ou outros. Resumindo, Cl é um conjunto de praticas executadas enquanto os desenvolvedores esto escrevendo cédigo, e CD é um conjunto de praticas executadas apés a conclusio do cédigo. CI/CD e DevOps DevOps é um conjunto de praticas e ferramentas projetadas para aumentar a capacidade de uma organizagao de fornecer aplicativos e servigos mais rapidamente do que os processos tradicionais de desenvolvimento de software. ‘Amaior velocidade do DevOps ajuda uma organizacdo a atender seus clientes com mais sucesso ser mais competitiva no mercado. Em um ambiente DevOps, as organizacées bem-sucedidas “incorporam a seguranga” a todas as fases do ciclo de vida do desenvolvimento, uma prética chamada DevSecOps A principal prética do DevSecOps é integrar a seguranca em todos os fluxos de trabalho do DevOps. ‘Ao realizar atividades de seguranga com antecedéncia e de forma consistente ao longo do ciclo de vida de desenvolvimento de software (SOLC), as organizagdes podem garantir que detectem vulnerabilidades 0 mais cedo posstvel e sejam mais capazes de tomar decisdes informadas sobre riscos e mitigago. E-Book -Apostila Nas préticas de seguranga mais tradicionais, a seguranca ndo & abordada até o estagio de produc, que no é mais compativel com a abordagem DevOps mais répida e dgil. Hoje, as ferramentas de ‘seguranca devem se encaixar perfeitamente no fluxo de trabalho do desenvolvedor e no pipeline de CI/CD para acompanhar 0 DevOps e no diminuir a velocidade de desenvolvimento, 0 pipeline C1/C0 faz parte da estrutura DevOps/DevSecOps mais ampla. Para implementar e executar com sucesso um pipeline de Cl/CD, as organizacdes precisam de ferramentas para evitar pontos de atrito que retardam a integragao e a entrega. As equipes exigem uma cadeia de ferramentas integrada de tecnologias para facilitar os esforcos de desenvolvimento colaborativos € desimpedidos. Exemplo de pipeline CI/CD A figura a seguir ilustra um pipeline bésico de CI/CD. Cabe observar os diferentes estgios envolvidos na obtenco de uma ideia ou na mudanca para um ambiente de producao. FIGURA 1 - Exemplo pipeline CI/CD Ideia i ial Produgéo. Desenvolver }—+|Testar 0 seu pipeline (ou pipeline de sua empresa) pode parecer diferente, Nao existe um pipeline que se encaixe em todos os casos de uso. E comum ter vérios pipelines para diferentes equipes e servigos. Caracteristicas de um pipeline Cl/CD Existem vérias caracterfsticas de um pipeline de CI/CD que emprestam vérias métricas e insights de DevOps, que valem a pena capturar e utilizar para fazer melhorias e decisdes de entrega de software orientadas por dados. Essas caracteristicas estao relacionadas & velocidade, confiabilidade e preciso. Daf o foco em métricas como frequéncia de implantacdo, lead time para implantacéo, taxa de falha de alteragio e tempo médio para restauragéo. O pipeline Cl/CD € explicado com detathes no capitulo indicado a seguir. Trata-se de uma grande PES UT CMTE LL) E-Book Apostila Leia as paginas 49 a 54. Clique no link e lela otivro SOMMERVILLE, lan. Engenharia de Software. 9. ed. S30 Paulo: Pearson Prentice Hall, 2011. Para alcangar essas caracteristicas de pipeline, os elementos cos do pipeline de C1/CD incluirso ferramentas ou processos que envolvem: Cédigo de construcao. Ainfraestrutura Testando. Estratégias de langamento. E validacao. Fluxos de trabalho otimizados para criar pipelines de CI/CD oferecem muitos beneficios para organizagées e equipes de entrega de software multifuncionais. Entdo, quais so os beneficios do CI/CD? Aqui esto alguns encontrados por meio de relatérios de pesquisa e discussdes com usudrios da plataforma Cl/Cb: Maior produtividade do desenvolvedor. ‘Aumento de tempo e recursos para melhoria de cédigo e equipe. Recursos aprimorados para feedback, colaboracao e qualidade por contribuidores. Menos defeitos de software e bugs encontrados pelos testadores. Methorias drésticas nos testes envolvendo testes continuos e testes de integragao automatizados. Mudangas automatizadas de pipeline de CD para vrios ambientes de nuvem, Implementacao répida e fécil de pipelines Cl/CD com Kubernetes e arquiteturas sem servidor. Implantacées de cédigo mais frequentes com menos riscos e menos recursos, Novos cédigos e aplicativos podem ser integrados a um pipeline de Cl/CD em menos de um dia. Capacidade aprimorada de entregar 0 produto que os usudrios precisam. Ferramentas CI/CD E-Book Apostila {As ferramentas de CI/CD ajudam a armazenar os parmetros especificos do ambiente que devem ser empacotados com cada entrega. A automaco de CI/CD faz todas as chamadas de servico necessérias para servidores da Web, bancos de dados e outros servicos que precisam ser reiniciados. Também pode executar outros procedimentos apés a implantagio. Como o objetivo é fornecer cédigo e aplicativos de qualidade, 0 CI/CD também requer testes continuos. Em testes continuos, um conjunto de regressio automatizada, desempenho e outros testes so executados no pipeline de C/CD. Uma equipe de devops madura com um pipeline de CI/CD robusto também pode implementar a implantagdo continua, em que as alteracdes de aplicativos sao executadas pelo pipeline de Cl/CD e as compilacdes de passagem so implantadas diretamente no ambiente de produsao, ‘Algumas equipes que praticam a implantagao continua optam por implantar diariamente ou mesmo de hora em hora para producdo, embora a implantagao continua nao seja ideal para todos os aplicativos de negécios. Existem muitas solugdes relevantes para a implementago de recursos de CI/CD. Jenkins, Spinnaker, Argo CD, GitLab, GitHub Actions e Harness so algumas ferramentas e plataformas de CI/CD que podem ser Gteis para criar pipelines de Ci/CD para seus aplicativos e servigos de software. Controle de versao distribuido (GIT) Os sistemas de controle de versdo, j4 faz algum tempo, sdo parte integrante do processo de desenvolvimento, e é de suma importancia gerenciar os recursos a partir da utilizacao de uma ferramenta para que os desenvolvedores individuais e equipes possam gerir todos os artefatos que so produzidos e manipulados. FIGURA 2- GitHub ook - Apostila Hoje, provavelmente a grande maioria dos desenvolvedores ou empresas utiliza algum tipo de sistema de controle de verso diariamente. Na verdade, esses sistemas estdo aliviando os desenvolvedores do trabalho tedioso e sujeito a erros do gerenciamento de cédigo-fonte e das suas De acordo com Tepavac et. al. (2 15), um dos sistemas de controle de verso mais populares, inicialmente desenvolvido em 2005 para versdes do Linux kernel, é Git. Sua popularidade se deve 20 fato de ser gratuito, possuir sua versio distribuida de cédigo aberto, éligeiramente rapido e possui um sistema de controle altamente flexivel. Sua flexibilidade se reflete no fato que é usado por desenvolvedores individuais para pequenos projetos de escala e grandes empresas como 0 Google, Facebook, Microsoft, Twitter, Eclipse dentre outras empresas. No entanto, também significa que, para usar o Git, tanto individuos quanto equipes podem ter que investir um tempo significativo para dominar suas possibilidades e usar todo 0 seu potencial Aprendendo a sintaxe de poucos comandos, no serd possivel garantir que a equipe realize 0 controle de versio corretamente. Também hé uma infinidade de padrBes escritos e no escritos, anti-padrées, 0 que fazer e o que néo fazer, melhores praticas, fluxos de trabalho, recomendacées ete. O sistema de controle de versio Git permite facilmente gerenciar alteragées e versbes de arquivos diferentes. € possivel utilizar 0 Git como um banco de dados ou repositério especial contendo as verses de arquives armazenados em pontos diferentes no tempo. 10-12 ook - Apostila Se interessou pelo sistema de controle de versio Git? Entdo acesse a documentacio oficial, para visualizar maiores detalhes: https://git-scm.com/doc Para recapitular, a integrago continua empacota e testa o software, compila e alerta os desenvolvedores se suas alteragées falharem em qualquer teste de unidade. A entrega continua é a automacdo que entrega aplicativos, servigos e outras implantagdes de tecnologia para a infraestrutura de tempo de execugdo, e pode executar testes adicionais. Desenvolver um pipeline de Cl/CD é uma pratica padrao para empresas que, frequentemente, aprimoram aplicativos e exigem um processo de entrega confidvel. Uma vez implantado, o pipeline de CI/CD permite que a equipe se concentre mais no aprimoramento de aplicativos e menos nos detalhes de sua entrega a varios ambientes. introduce ao C\/CD exige que as equipes de devops colaborem em tecnologias, préticas e prioridades. As equipes precisam desenvolver um consenso sobre a abordagem certa para seus negécios e tecnologias. Recurso Externo Cee ee eer rc) ue E-Book Apostila Referéncias Bibliograficas ECK, A; UEBERNICKEL, F.; BRENNER, W. Fit for Continuous Integration: how organizations assimilate an agile practice, 2014. RODRIGUEZ, P. et al. Continuous deployment of software intensive products and services: A systematic mapping study. | Journal of Systems and Software, v. 123, 2017. SOMMERVILLE, lan. Engenharia de Software. 9, ed. So Paulo: Pearson Prentice Hall, 2011, ‘TEPAVAG, |. et al. Version Control Systems, Tools and Best Practices: Case Git. 2015. Disponivel em: https://www.researchgate.net/publication/282867849_Version_Control_Systems_Tools_and_B est_Practices_Case_Git. Acesso em: 11 jul 2022. 22

You might also like