DevOps: a força motriz para acelerar sua transformação digital
Publicados: 2018-12-11"Praticamente todo mundo faz integração contínua. A implantação contínua é como o Santo Graal" - Theo Kim, chefe de engenharia de DevOps, GoPro
A competição no mercado de software obrigou as organizações a alocarem seus melhores recursos para desenvolver e entregar software de alta qualidade em um ritmo acelerado. A chave para esse nível de agilidade é estabelecer um relacionamento altamente colaborativo e comunicativo entre o Desenvolvimento e as Operações de TI.
A Mudança Moderna
O termo “DevOps” surgiu pela primeira vez em 2008 com o objetivo de permitir que Desenvolvedores de Software e Profissionais de Operações de TI trabalhem juntos para criar aplicativos de forma rápida e eficiente. Dez anos depois, o DevOps tem sido fundamental para o sucesso de muitas organizações, incluindo grandes empresas como Amazon, Netflix e Fidelity Worldwide Investments - organizações com enormes bases de clientes que exigem serviços e acessibilidade superiores.
Superficialmente, o DevOps dificilmente parece ser uma tecnologia inovadora: permitir que as equipes trabalhem juntas para entregar melhor e mais rápido parece um objetivo óbvio.

O processo de desenvolvimento Agile reduz os tempos de desenvolvimento, aumentando a comunicação entre a equipe de desenvolvimento e as partes interessadas do negócio. Mas os projetos de software não são concluídos quando a última linha de código é escrita e o último caso de teste é aprovado. Os aplicativos devem ser empacotados para lançamento, implantados na produção, monitorados para possíveis problemas e aprimorados com novos recursos e correções de bugs necessárias.
Cada uma dessas tarefas pós-desenvolvimento leva tempo, atrasando assim a entrega de novos recursos e funcionalidades de negócios aos usuários. O DevOps traz o foco ágil na comunicação e colaboração entre os desenvolvedores e a equipe de operações, dando ao processo após o desenvolvimento uma capacidade de resposta igual.
Hoje, DevOps é considerado o método mais eficiente para desenvolvimento de software. Usando DevOps, as organizações de software podem reduzir a complexidade do desenvolvimento, detectar e resolver problemas com mais rapidez e fornecer continuamente software inovador de alta qualidade. Integração contínua (CI), entrega contínua (CDE) e implantação contínua (CD) são algumas das práticas que ajudam as organizações a serem rápidas sem comprometer a qualidade.
Integração contínua
A Integração Contínua (CI) é uma prática de desenvolvimento amplamente estabelecida na indústria de desenvolvimento de software que visa integrar os produtos de trabalho de desenvolvedores individuais em um repositório central com antecedência e com frequência. Os membros da equipe integram e mesclam seu trabalho de desenvolvimento com frequência. A CI garante a detecção precoce de bugs de integração, resultando em uma melhor colaboração entre as equipes, levando a um produto de melhor qualidade.
A CI torna o processo de integração simples, facilmente repetível e permite que as organizações desfrutem de ciclos de lançamento mais curtos e frequentes, melhorem a qualidade do software e aumentem a produtividade geral.

Existem compensações que devem ser levadas em consideração, no entanto. O processo de CI não oferece nenhuma garantia de qualidade adicional. Muitas organizações acham que essa integração é cara e, portanto, preferem procedimentos manuais para garantir que o novo código não introduza novos bugs, mesmo que isso signifique comprometer o tempo. Para reduzir o atrito durante as tarefas de integração, a CI depende de suítes de teste e execução de teste automatizada. É importante, no entanto, perceber que o teste automatizado é muito diferente do teste contínuo.

Entrega Contínua
A Entrega Contínua (CDE) é uma extensão natural da Integração Contínua, continuando de onde o CI parou. A entrega contínua visa garantir que um aplicativo esteja sempre pronto para a produção depois de passar por testes automatizados e verificações de qualidade. O CDE garante que o software esteja livre de bugs, empregando um conjunto de práticas para, por exemplo, CI e automação de implantação, entregando assim o software automaticamente para um ambiente semelhante ao de produção.
A entrega contínua depende de um pipeline de implantação que é usado pela equipe para automatizar os processos de teste e implantação. O pipeline em si é um sistema automatizado que executa um conjunto progressivo de suítes de teste em relação ao build. Em cada segmento do pipeline, o build pode falhar em um teste crítico, alertando assim a equipe. Caso contrário, ele continua para o próximo conjunto de testes e sucessivas aprovações no teste resultarão em uma promoção automática para o próximo segmento no pipeline. O último segmento no pipeline implantará a construção em um ambiente equivalente à produção.

Um dos melhores exemplos de um pipeline moderno de CI / CDE está disponível na AWS. A Amazon oferece um ambiente de pipeline de CI / CDE impressionante e fornece um procedimento passo a passo no qual você pode escolher entre muitos recursos de desenvolvimento e vinculá-los em um pipeline que é prontamente configurável e facilmente monitorado.
Implantação Contínua
Embora muitos confundam Implantação Contínua (CD) com o mesmo que Entrega Contínua, esse processo se diferencia por ir um pouco além, implantando de forma automática e contínua o aplicativo para produção. Com o objetivo de implantar de forma automática e constante todas as mudanças no ambiente de produção, a prática de Implantação Contínua implica na prática de Entrega Contínua, mas o contrário não é verdade.
Embora a implantação final na Entrega contínua seja uma etapa manual, é importante observar que não há etapas manuais na implantação contínua. Assim que os desenvolvedores confirmam uma mudança, a mudança é implantada na produção por meio de um pipeline de implantação. Além disso, a prática de Entrega Contínua pode ser aplicada a todos os tipos de organizações, enquanto a prática de Implantação Contínua pode ser adequada apenas para certos tipos de organização.

As organizações que empregam uma metodologia de CD se beneficiarão com o feedback rápido do usuário sobre suas novas implantações. Os recursos são entregues aos usuários rapidamente e quaisquer erros ou defeitos que se tornem evidentes podem ser tratados imediatamente.
Com o enorme crescimento na adoção de DevOps, também houve um aumento significativo nas ferramentas de automação que ajudam na implementação de pipelines de CI / CD. Essas ferramentas se integram com várias ferramentas de desenvolvedor, incluindo sistemas de repositório de código como Github e sistemas de rastreamento de bugs como Jira. Além disso, como o SaaS se tornou um modelo de entrega popular, a maioria dessas ferramentas está sendo executada na nuvem. Algumas das ferramentas mais populares são GitLab CI, TeamCity, Bamboo, GoCD, Jenkins e Circle CI.

