Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto
Criando a primeira cadeia DevOps em cinco passos para iniciantes.

DevOps se tornou a panaceia para processos de desenvolvimento excessivamente lentos, fragmentados e problemáticos. Mas é necessário ter conhecimentos mínimos em DevOps. Aqui, conceitos como cadeia DevOps e como criá-la em cinco passos serão abordados. Este não é um guia completo, mas apenas um 'esqueleto' que pode ser expandido. Vamos começar com a história.

Meu encontro com DevOps

Uma vez, trabalhei com nuvens na Citi Group e desenvolvi um aplicativo IaaS para gerenciar a infraestrutura de nuvem da Citi, mas sempre estive interessado em como otimizar a cadeia de desenvolvimento e melhorar a cultura entre os desenvolvedores. Greg Lavender, nosso diretor técnico de arquitetura e infraestrutura em nuvem, me recomendou um livro Projeto 'Fênix'. Ele explica maravilhosamente os princípios do DevOps, e lê-se como um romance.

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

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

Como Amazon, Google e Netflix conseguem lançar tanto? É simples: eles entenderam como criar uma cadeia DevOps praticamente perfeita.

Na Citi, tudo era completamente diferente até que migramos para DevOps. Naquela época, minha equipe tinha diferentes ambientes, mas a entrega no servidor de desenvolvimento era feita manualmente. Todos os desenvolvedores tinham acesso apenas a um servidor de desenvolvimento baseado no IBM WebSphere Application Server Community Edition. Quando tentávamos realizar entregas simultaneamente, o servidor 'caía', e tínhamos que 'negociar dolorosamente' a cada vez. Além disso, tínhamos uma cobertura de código de testes insuficiente, um processo manual de entrega trabalhoso e nenhuma possibilidade de rastrear a entrega de código com base em alguma tarefa ou demanda do cliente.

Foi claro que precisávamos agir rapidamente, e encontrei um colega que pensava como eu. Decidimos juntos criar a primeira cadeia DevOps — ele configurou a máquina virtual e o servidor de aplicativos Tomcat, enquanto eu trabalhei no Jenkins, na integração com o Atlassian Jira e BitBucket, além da cobertura de código de testes. O projeto foi um sucesso: automatizamos completamente a cadeia de desenvolvimento, alcançamos quase 100% de uptime no servidor de desenvolvimento, conseguimos rastrear e melhorar a cobertura de código de testes, e o branch do Git poderia ser vinculado à entrega e à tarefa no Jira. E quase todas as ferramentas que usamos para construir a cadeia DevOps eram de código aberto.

Na verdade, a cadeia foi simplificada, pois não utilizamos configurações avançadas com Jenkins ou Ansible. Mas conseguimos. Talvez isso seja um reflexo do princípio Pareto (também conhecido como a regra 80/20).

Descrição breve da cadeia DevOps e CI/CD

Existem várias definições para DevOps. Assim como Agile, DevOps abrange diferentes disciplinas. Contudo, a maioria concordaria com a seguinte definição: DevOps é um método, ou ciclo de vida, de desenvolvimento de software, cujo princípio principal é criar uma cultura onde desenvolvedores e outros funcionários estão “na mesma sintonia”, o trabalho manual é automatizado, cada um se dedica ao que faz melhor, a frequência das entregas aumenta, a produtividade do trabalho cresce e a flexibilidade melhora.

E embora apenas as ferramentas não sejam suficientes para criar um ambiente DevOps, elas são indispensáveis. A mais importante delas é a integração contínua e a entrega contínua (CI/CD). Na cadeia, cada ambiente tem diferentes etapas (por exemplo, DEV (desenvolvimento), INT (integração), TST (testes), QA (controle de qualidade), UAT (testes de aceitação do usuário), STG (preparação), PROD (produção)), as tarefas manuais são automatizadas, os desenvolvedores podem produzir código de qualidade, entregá-lo e podem facilmente se reestruturar.

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

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

Vamos ao que interessa.

Passo 1: Plataforma CI/CD

Primeiramente, você precisa de uma ferramenta CI/CD. Jenkins é uma ferramenta de CI/CD de código aberto escrita em Java, licenciada sob MIT, que iniciou a popularização do movimento DevOps e que se tornou de fato o padrão para CICD.

E o que é Jenkins? Imagine ter um controle remoto mágico para diversos serviços e ferramentas. A ferramenta CI/CD, como o Jenkins, é inútil sozinha, mas com as diferentes ferramentas e serviços, ela se torna onipotente.

Além do Jenkins, há muitas outras ferramentas abertas, sinta-se à vontade para escolher qualquer uma.

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

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

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

Você tem uma ferramenta CI/CD no localhost, mas ainda não tem muito que fazer. Vamos para o próximo passo.

Passo 2: controle de versões

A melhor (e provavelmente a maneira mais simples) de verificar a mágica da ferramenta CI/CD é integrá-la com uma ferramenta de controle de versão (source control management, SCM). Por que precisamos de controle de versão? Suponha que você esteja desenvolvendo um aplicativo. Você o escreve em Java, Python, C++, Go, Ruby, JavaScript ou em qualquer outra linguagem, de que há muitas opções. O que você escreve é chamado de código-fonte. No início, especialmente se você estiver trabalhando sozinho, pode armazenar 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 no código, evitando conflitos ao mesclar mudanças. E também precisa de um jeito de restaurar versões anteriores sem usar backups e sem recorrer ao método de copiar e colar arquivos de código.

E aqui, sem SCM, não dá para ir muito longe. O SCM armazena o código em repositórios, gerencia suas versões e coordena-o entre os desenvolvedores.

Existem muitas ferramentas de SCM, mas o padrão de fato se tornou, com justiça, o Git. Eu recomendo usar esse, mas há outras opções disponíveis.

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

Veja como fica o pipeline DevOps após a adição do SCM.

Guia para iniciantes: criando cadeias 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 em equipe. Não é mal? Mas como fazer disso um aplicativo funcional, amado por bilhões de usuários?

Passo 3: ferramenta de automação de build

Tudo está indo conforme o planejado. Você pode fazer upload do código e registrar as alterações no sistema de controle de versão, além de convidar amigos para trabalhar com você. Mas, por enquanto, você não tem um aplicativo. Para que isso se torne um aplicativo web, ele precisa ser compilado e colocado em um pacote de distribuição ou executado como um arquivo executável. (Linguagens de programação interpretadas, como JavaScript ou PHP, não precisam ser compiladas.)

Utilize uma ferramenta de automação de build. Qualquer que seja a ferramenta escolhida, ela irá compilar o código no formato necessário e automatizar a limpeza, compilação, teste e entrega. Existem diferentes ferramentas de build dependendo da linguagem, mas as seguintes opções de código aberto são frequentemente utilizadas.

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

Ótimo! Agora, vamos inserir os arquivos de configuração da ferramenta de automação de build no sistema de controle de versão para que a ferramenta CI/CD os colete.

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

Parece tudo certo. Mas para onde vamos agora com tudo isso?

Passo 4: servidor de aplicações web

Então, você tem um arquivo empacotado que pode ser executável ou distribuído. Para que o aplicativo realmente traga benefícios, ele deve ter algum serviço ou interface, mas você precisa de um lugar para hospedá-los.

Um aplicativo da web pode ser hospedado em um servidor de aplicativos. O servidor de aplicativos fornece um ambiente onde você pode executar a lógica de programação do pacote, renderizar a interface e abrir serviços da web através de socket. Você precisa de um servidor HTTP e de alguns outros ambientes (como uma máquina virtual, por exemplo) para instalar o servidor de aplicativos. Por enquanto, vamos imaginar que você está lidando com tudo isso no processo (embora eu fale sobre contêineres abaixo).

Existem vários servidores de aplicativos de código aberto.

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

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

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

No princípio, você pode parar aqui, e depois você se vira, mas vale a pena falar sobre a qualidade do código.

Passo 5: Cobertura de Testes

Testar consome muito tempo e esforço, mas é melhor encontrar os erros imediatamente e melhorar o código para agradar os usuários finais. Para isso, existem muitas ferramentas abertas que não apenas testam o código, mas também sugerem como melhorá-lo. A maioria das ferramentas de CI/CD pode se integrar a essas ferramentas e automatizar o processo.

Os testes são divididos em duas partes: frameworks de testes para escrever e executar testes, e ferramentas com dicas para melhorar a qualidade do código.

Frameworks de Teste

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

Ferramentas com Dicas de Qualidade

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

A maioria dessas ferramentas e frameworks é escrita para Java, Python e JavaScript, porque C++ e C# são proprietários (embora o GCC tenha código-fonte aberto).

As ferramentas de cobertura de testes que aplicamos agora devem fazer o pipeline de DevOps parecer como na imagem no início do guia.

Passos Adicionais

Contêineres

Como já mencionei, o servidor de aplicativos pode ser hospedado em uma máquina virtual ou servidor, mas contêineres são mais populares.

O que são Contêineres? Вкратце, в виртуальной машине операционная система чаще всего занимает больше места, чем приложение, а контейнеру обычно достаточно нескольких библиотек и конфигурации. В некоторых случаях без виртуальных машин не обойтись, но контейнер вмещает приложение вместе с сервером без лишних затрат.

Para contêineres, geralmente se usa Docker e Kubernetes, embora existam outras opções.

Guia para iniciantes: criando cadeias 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 é voltada para a construção e entrega colaborativa de aplicações, mas com ferramentas DevOps é possível fazer outras coisas interessantes. Por exemplo, usar ferramentas de "infraestrutura como código" (IaC), que também são conhecidas como ferramentas de automação de middleware. Estas ferramentas ajudam a automatizar a instalação, o gerenciamento e outras tarefas para o middleware. Por exemplo, uma ferramenta de automação pode pegar aplicações (servidor de aplicações da web, banco de dados, ferramentas de monitoramento) com as configurações corretas e implantá-las no servidor de aplicações.

Aqui estão algumas opções de ferramentas de automação de middleware de código aberto:

Guia para iniciantes: criando cadeias DevOps com ferramentas de código aberto

Detalhes nos artigos em Opensource.com:

E agora?

Isto é apenas a ponta do iceberg. A cadeia DevOps pode fazer muito mais. Comece com uma ferramenta CI/CD e descubra o que mais pode ser automatizado para facilitar seu trabalho. Não se esqueça das ferramentas de comunicação abertas para uma colaboração eficaz.

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

E também é possível integrar DevOps com ferramentas abertas para Agile:

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster