Guia Dummy: Criando cadeias de DevOps usando ferramentas de código aberto


Crie a primeira cadeia de DevOps em cinco etapas para iniciantes.


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


Meu conhecimento com DevOps


Eu trabalhava com as nuvens no Citi Group e desenvolvi o aplicativo Web IaaS para gerenciar a infraestrutura de nuvem do Citi, mas sempre me interessei em 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 aconselhou no livro do Projeto Phoenix . Ela explica perfeitamente os princípios do DevOps, enquanto lê como um romance.


A tabela na parte de trás mostra com que frequência as empresas lançam novas versões:



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


No Citi, tudo estava completamente errado até mudarmos para o DevOps. Em seguida, minha equipe teve ambientes diferentes, mas fizemos a entrega no 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 "travou" e cada vez que tivemos que "dolorosamente" concordar um com o outro. Também tivemos uma cobertura de código insuficiente com testes, um processo trabalhoso de entrega manual e nenhuma maneira de rastrear a entrega do código de acordo com alguma tarefa ou exigência do cliente.


Ficou claro que algo precisava ser feito com urgência, e eu encontrei um colega com a mesma opinião. Decidimos criar a primeira cadeia de DevOps juntos - ele configurou a máquina virtual e o servidor de aplicativos Tomcat, e eu assumi o Jenkins, integração com Atlassian Jira e BitBucket, além de cobrir o código com testes. O projeto foi bem-sucedido: automatizamos completamente a cadeia de desenvolvimento, alcançamos quase 100% de tempo de atividade do servidor de desenvolvimento, conseguimos rastrear e melhorar a cobertura de código com testes, e o ramo Git pode ser vinculado à entrega e tarefa do Jira. E quase todas as ferramentas que construímos na cadeia DevOps eram de código aberto.


De fato, a cadeia foi simplificada, porque nem usamos configurações avançadas usando Jenkins ou Ansible. Mas nós conseguimos. Talvez isso seja uma consequência do princípio de Pareto (também conhecido como regra 80/20).


Uma breve descrição das cadeias de DevOps e CI / CD


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


E embora as ferramentas por si só não sejam suficientes para criar um ambiente de DevOps, você não pode ficar sem elas. 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 (controle de qualidade), UAT (teste de aceitação pelos usuários), STG (preparação), PROD (uso)), Como as tarefas manuais são automatizadas, os desenvolvedores podem criar código de alta qualidade, entregá-lo e podem ser facilmente reconstruídos.


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



Vamos ao que interessa.


Etapa 1: plataforma CI / CD


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


O que é Jenkins? Imagine que você tem um painel de controle mágico para uma ampla variedade de serviços e ferramentas. Uma ferramenta de CI / CD em si, como Jenkins, é inútil, mas com diferentes ferramentas e serviços, ela se torna onipotente.


Além do Jenkins, existem muitas outras ferramentas abertas, escolha qualquer.



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



Você tem uma ferramenta de CI / CD no host local, mas não há muito o que fazer. Vamos para o próximo passo.


Etapa 2: controle de versão


A melhor (e talvez a mais fácil) maneira de testar a mágica da ferramenta CI / CD é integrá-la à ferramenta de gerenciamento de controle de origem (SCM). Por que você precisa de controle de versão? Digamos que você faça uma inscrição. Você o escreve em Java, Python, C ++, Go, Ruby, JavaScript ou em qualquer outro idioma, dos quais uma carruagem e um carrinho pequeno. O que você escreve é ​​chamado de código fonte. No início, especialmente se você trabalha sozinho, você pode salvar tudo em um diretório local. Mas quando o projeto cresce e mais pessoas se juntam a ele, você precisa de uma maneira de compartilhar alterações no código, mas ao mesmo tempo evitar conflitos ao mesclar 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 com código.


E aqui sem SCM em qualquer lugar. 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 Git se tornou merecidamente o padrão de fato. Eu aconselho você a usá-lo, mas existem outras opções.



É assim que o pipeline do DevOps se parece depois de adicionar o SCM.



A ferramenta CI / CD pode automatizar o carregamento e descarregamento do código fonte e do trabalho em equipe. Nada mal? Mas como agora fazer disso um aplicativo funcional, amado por bilhões de usuários?


Etapa 3: criar ferramenta de automação


Tudo está indo como deveria. Você pode fazer o upload do código e registrar as alterações no sistema de controle de versão, bem como convidar amigos para trabalhar com você. Mas você ainda não tem um aplicativo. Para que este seja um aplicativo da Web, ele deve ser compilado e colocado em um pacote para entrega ou executado como um arquivo executável. (Uma linguagem de programação interpretada como JavaScript ou PHP não precisa ser compilada.)


Use uma ferramenta de automação de montagem. Qualquer que seja a ferramenta que você escolher, ela coletará o código no formato certo e automatizará a limpeza, compilação, teste e entrega. As ferramentas de construção são diferentes, dependendo do idioma, mas as seguintes opções de código aberto são geralmente usadas.



Ótimo! Agora, inseriremos os arquivos de configuração da ferramenta de automação de montagem no sistema de controle de versão para que a ferramenta CI / CD os monte.



Parece que está tudo bem. Mas onde lançar tudo agora?


Etapa 4: servidor de aplicativos da web


Portanto, você tem um arquivo compactado que pode ser executado ou implementado. Para que o aplicativo seja realmente útil, ele deve ter algum tipo de serviço ou interface, mas você precisa colocar tudo em algum lugar.


O aplicativo da web pode ser hospedado no servidor de aplicativos da web. O servidor de aplicativos fornece um ambiente onde você pode executar a lógica do programa a partir de um pacote, executar a renderização da interface e abrir serviços da Web por meio de um soquete. Você precisa de um servidor HTTP e de vários outros ambientes (máquina virtual, por exemplo) para instalar o servidor de aplicativos. Por enquanto, vamos imaginar que você lide com tudo isso no processo (embora eu falarei sobre os contêineres abaixo).


Existem vários servidores de aplicativos da web abertos.



Já alcançamos quase a cadeia de trabalho do DevOps. Bom trabalho!



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


Etapa 5: cobertura de teste


O teste leva muito tempo e esforço, mas é melhor encontrar erros imediatamente e melhorar o código para agradar aos usuários finais. Para esse fim, existem muitas ferramentas abertas que não apenas testam o código, mas também aconselham como melhorá-lo. A maioria das ferramentas de CI / CD pode se conectar 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



Ferramentas de dicas de qualidade



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


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


Etapas adicionais


Contentores


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


O que são contêineres ? Em resumo, em uma máquina virtual, o sistema operacional geralmente ocupa mais espaço que o aplicativo, e algumas bibliotecas e configurações geralmente são suficientes para um contêiner. Em alguns casos, as máquinas virtuais não podem ser dispensadas, mas o contêiner mantém o aplicativo junto com o servidor, sem nenhum custo extra.


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



Leia artigos sobre Docker e Kubernetes em Opensource.com :



Ferramentas de automação de middleware


Nossa cadeia de DevOps está focada em criar e entregar o aplicativo, mas outras coisas interessantes podem ser feitas com as ferramentas de DevOps. Por exemplo, use a infraestrutura como ferramentas de código (IaC), também chamadas de ferramentas de automação de middleware. Essas ferramentas ajudam a automatizar a instalação, o gerenciamento e outras tarefas do 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 rolar para o servidor de aplicativos.


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



Detalhes em artigos sobre Opensource.com :



E agora o que?


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


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



Você também pode integrar o DevOps com ferramentas abertas para agile:


Source: https://habr.com/ru/post/pt451508/


All Articles