Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto
Construindo sua primeira cadeia de DevOps em cinco etapas para iniciantes.

O DevOps tornou-se uma panacéia para processos de desenvolvimento muito lentos, desconectados e problemáticos. Mas você precisa de conhecimento mínimo em DevOps. Ele abordará conceitos como a cadeia DevOps e como criar uma em cinco etapas. Este não é um guia completo, mas apenas um "peixe" que pode ser expandido. Vamos começar com a história.

Minha introdução ao DevOps

Eu trabalhava com nuvens no Citi Group e desenvolvia uma aplicação web IaaS para gerenciar a infraestrutura de nuvem do Citi, mas sempre me interessei em como otimizar a cadeia de desenvolvimento e melhorar a cultura entre os desenvolvedores. Greg Lavender, nosso CTO de Cloud Architecture and Infrastructure, me recomendou este livro. Projeto "Fênix". Ele explica os princípios do DevOps lindamente e parece um romance.

A tabela no verso mostra com que frequência as empresas lançam novas versões:

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Como Amazon, Google e Netflix conseguem lançar tanto? E é simples: eles descobriram como criar uma cadeia de DevOps quase perfeita.

As coisas eram muito diferentes para nós no Citi até mudarmos para o DevOps. Então minha equipe tinha ambientes diferentes, mas fazíamos a entrega para o servidor de desenvolvimento manualmente. Todos os desenvolvedores tiveram acesso a apenas um servidor de desenvolvimento baseado no IBM WebSphere Application Server Community Edition. Com uma tentativa simultânea de entrega, o servidor “caiu”, e todas as vezes tivemos que negociar “dolorosamente” entre nós. Também tínhamos cobertura de código insuficiente com testes, um processo de entrega manual demorado e nenhuma maneira de rastrear a entrega do código com a ajuda de alguma tarefa ou requisito do cliente.

Ficou claro que algo precisava ser feito com urgência e encontrei um colega com a mesma opinião. Decidimos criar a primeira cadeia de DevOps juntos - ele montou uma máquina virtual e um servidor de aplicativos Tomcat, e eu cuidei do Jenkins, integração com Atlassian Jira e BitBucket, além da cobertura de código com testes. O projeto foi bem-sucedido: automatizamos totalmente a cadeia de desenvolvimento, alcançamos quase 100% de uptime no servidor de desenvolvimento, conseguimos monitorar e melhorar a cobertura de código com testes e uma ramificação do Git pode ser vinculada a uma entrega e emissão do Jira. E quase todas as ferramentas que usamos para construir a cadeia DevOps eram de código aberto.

Na verdade, a cadeia foi simplificada, porque nem mesmo aplicamos configurações avançadas usando Jenkins ou Ansible. Mas conseguimos. Talvez isso seja uma consequência do princípio Pareto (também conhecida como regra 80/20).

Uma breve descrição do DevOps e da cadeia de CI/CD

DevOps tem definições diferentes. DevOps, como Agile, inclui diferentes disciplinas. Mas a maioria concorda com a seguinte definição: DevOps é um método, ou ciclo de vida, de desenvolvimento de software, cujo princípio principal é criar uma cultura em que desenvolvedores e outros funcionários estejam “no mesmo comprimento de onda”, o trabalho manual seja automatizado, cada um faz o que faz de melhor, a frequência das entregas aumenta, a produtividade do trabalho aumenta, a flexibilidade aumenta.

Embora as ferramentas sozinhas não sejam suficientes para criar um ambiente DevOps, elas são indispensáveis. O mais importante deles é a integração contínua e a entrega contínua (CI/CD). Existem diferentes estágios na cadeia para cada ambiente (por exemplo, DEV (desenvolvimento), INT (integração), TST (teste), QA (garantia de qualidade), UAT (teste de aceitação do usuário), STG (preparação), PROD (uso)) , as tarefas manuais são automatizadas, os desenvolvedores podem criar código de qualidade, entregá-lo e reconstruí-lo facilmente.

Esta nota descreve como criar uma cadeia DevOps em cinco etapas, conforme mostrado na figura abaixo, usando ferramentas de código aberto.

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Vamos ao que interessa.

Passo 1: Plataforma CI/CD

Em primeiro lugar, você precisa de uma ferramenta de CI/CD. Jenkins é uma ferramenta CI/CD de código aberto licenciada pelo MIT e escrita em Java que popularizou o movimento DevOps e se tornou o padrão de fato para o CICD.

O que é Jenkins? Imagine que você tenha um painel de controle mágico para uma variedade de serviços e ferramentas. Por si só, uma ferramenta de CI/CD como Jenkins é inútil, mas com diferentes ferramentas e serviços, ela se torna todo-poderosa.

Além do Jenkins, existem muitas outras ferramentas de código aberto, escolha qualquer uma.

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Veja como é um processo DevOps com uma ferramenta CI/CD

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Você tem uma ferramenta de CI/CD no localhost, mas não há muito o que fazer ainda. Vamos para a próxima etapa.

Etapa 2: controle de versão

A melhor (e provavelmente mais fácil) maneira de testar a mágica de uma ferramenta de CI/CD é integrá-la a uma ferramenta de gerenciamento de controle de origem (SCM). Por que você precisa de controle de versão? Digamos que você esteja fazendo um aplicativo. Você escreve em Java, Python, C++, Go, Ruby, JavaScript ou qualquer outra linguagem que seja um vagão e um carrinho. O que você escreve é ​​chamado de código-fonte. A princípio, especialmente se estiver trabalhando sozinho, você pode salvar tudo em um diretório local. Mas à medida que o projeto cresce e mais pessoas se juntam, você precisa de uma maneira de compartilhar as alterações de código, mas evitar conflitos ao mesclar as alterações. E você também precisa restaurar de alguma forma as versões anteriores sem usar backups e usar o método copiar e colar para arquivos de código.

E aqui sem SCM em qualquer lugar. O SCM armazena o código em repositórios, gerencia suas versões e o coordena entre os desenvolvedores.

Existem muitas ferramentas SCM, mas o Git merecidamente se tornou o padrão de fato. Eu aconselho você a usá-lo, mas existem outras opções.

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Aqui está a aparência do pipeline DevOps depois de adicionar o SCM.

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

A ferramenta CI/CD pode automatizar o upload e download do código-fonte e a colaboração da equipe. Nada mal? Mas agora, como fazer disso um aplicativo funcional, amado por bilhões de usuários?

Etapa 3: ferramenta de automação de criação

Tudo está indo como deveria. Você pode fazer upload de código e fazer alterações no controle de origem e convidar amigos para trabalhar com você. Mas você ainda não tem um aplicativo. Para ser um aplicativo da Web, ele deve ser compilado e empacotado para distribuição ou executado como um executável. (Uma linguagem de programação interpretada como JavaScript ou PHP não precisa ser compilada.)

Use uma ferramenta de automação de compilação. Seja qual for a ferramenta que você escolher, ela montará o código no formato certo e automatizará a limpeza, compilação, teste e entrega. As ferramentas de compilação variam de acordo com o idioma, mas as seguintes opções de software livre são comumente usadas.

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Perfeito! Agora vamos inserir os arquivos de configuração da ferramenta de automação de compilação no controle de origem para que a ferramenta de CI/CD os construa.

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Isso é bom. Mas onde está tudo isso para lançar agora?

Etapa 4: servidor de aplicativos da Web

Então, você tem um arquivo empacotado que pode ser executado ou distribuído. Para que um aplicativo seja realmente útil, ele deve ter algum tipo de serviço ou interface, mas você precisa colocar tudo em algum lugar.

Um aplicativo da web pode ser hospedado em um servidor de aplicativos da web. O servidor de aplicativos fornece um ambiente no qual você pode executar a lógica empacotada, renderizar interfaces e expor serviços da Web por meio de um soquete. Você precisa de um servidor HTTP e alguns outros ambientes (uma máquina virtual, por exemplo) para instalar o servidor de aplicativos. Por enquanto, vamos fingir que você está lidando com tudo isso à medida que avança (embora falarei sobre contêineres abaixo).

Existem vários servidores de aplicativos da web abertos.

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Já temos uma cadeia de DevOps quase funcionando. Bom trabalho!

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Em princípio, você pode parar por aqui, depois cuidar disso sozinho, mas vale a pena falar sobre a qualidade do código.

Etapa 5: testar a cobertura

O teste leva muito tempo e esforço, mas é melhor encontrar os bugs imediatamente e melhorar o código para agradar os usuários finais. Para isso, existem muitas ferramentas abertas que não apenas testarão o código, mas também aconselharão como melhorá-lo. A maioria das ferramentas de CI/CD pode ser conectada a essas ferramentas e automatizar o processo.

O teste é dividido em duas partes: estruturas de teste para escrever e executar testes e ferramentas com dicas para melhorar a qualidade do código.

Estruturas de teste

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Ferramentas com dicas de qualidade

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

A maioria dessas ferramentas e estruturas são escritas para Java, Python e JavaScript porque C++ e C# são proprietários (embora o GCC seja de código aberto).

Aplicamos as ferramentas de cobertura de teste e agora o pipeline de DevOps deve se parecer com a imagem no início do tutorial.

Etapas adicionais

Containers

Como eu disse antes, um servidor de aplicativos pode ser hospedado em uma máquina virtual ou em um servidor, mas os contêineres são mais populares.

O que são contêineres? Resumindo, em uma máquina virtual, muitas vezes o sistema operacional ocupa mais espaço que o aplicativo, e um container costuma bastar com algumas bibliotecas e configurações. Em alguns casos, as máquinas virtuais são indispensáveis, mas o container pode acomodar a aplicação junto com o servidor sem nenhum custo extra.

Para contêineres, Docker e Kubernetes geralmente são usados, embora existam outras opções.

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Leia artigos sobre Docker e Kubernetes em Opensource.com:

Ferramentas de automação de middleware

Nossa cadeia DevOps é focada na construção e entrega colaborativa de um aplicativo, mas há outras coisas interessantes que você pode fazer com as ferramentas DevOps. Por exemplo, use ferramentas de infraestrutura como código (IaC), também conhecidas como ferramentas de automação de middleware. Essas ferramentas ajudam a automatizar a instalação, o gerenciamento e outras tarefas de middleware. Por exemplo, uma ferramenta de automação pode pegar aplicativos (servidor de aplicativos da web, banco de dados, ferramentas de monitoramento) com as configurações corretas e enviá-los para o servidor de aplicativos.

Aqui estão algumas opções para ferramentas de automação de middleware aberto:

Guia para Leigos: Construindo Cadeias de DevOps com Ferramentas de Código Aberto

Detalhes nos artigos Opensource.com:

E agora o que?

Esta é apenas a ponta do iceberg. A cadeia DevOps pode fazer muito mais. Comece com uma ferramenta de CI/CD e veja o que mais você pode automatizar para facilitar seu trabalho. Não se esqueça ferramentas de comunicação aberta para uma colaboração eficaz.

Aqui estão mais alguns bons artigos de DevOps para iniciantes:

Você também pode integrar DevOps com ferramentas ágeis abertas:

Fonte: habr.com

Adicionar um comentário