Guia DevOps para iniciantes

Qual a importância do DevOps, o que significa para os profissionais de TI, uma descrição de métodos, frameworks e ferramentas.

Guia DevOps para iniciantes

Muita coisa aconteceu desde que o termo DevOps se consolidou no mundo da TI. Com grande parte do ecossistema open source, é importante reconsiderar por que começou e o que significa para uma carreira em TI.

O que é DevOps

Embora não exista uma definição única, acredito que DevOps é uma estrutura tecnológica que permite a colaboração entre equipes de desenvolvimento e operações para implantar código mais rapidamente em ambientes de produção com a capacidade de iterar e automatizar. Passaremos o resto deste artigo desvendando essa afirmação.

A palavra “DevOps” é uma combinação das palavras “desenvolvimento” e “operações”. DevOps ajuda a aumentar a velocidade de entrega de aplicativos e serviços. Isso permite que as organizações atendam efetivamente seus clientes e se tornem mais competitivas no mercado. Simplificando, DevOps é o alinhamento entre desenvolvimento e operações de TI com comunicação e colaboração mais eficazes.

DevOps envolve uma cultura onde a colaboração entre equipes de desenvolvimento, operações e negócios é considerada crítica. Não se trata apenas de ferramentas, pois o DevOps em uma organização também beneficia continuamente os clientes. As ferramentas são um dos seus pilares, junto com as pessoas e os processos. O DevOps aumenta a capacidade das organizações de fornecer soluções de alta qualidade no menor tempo possível. O DevOps também automatiza todos os processos, desde a construção até a implantação, aplicação ou produto.

A discussão sobre DevOps concentra-se no relacionamento entre os desenvolvedores, as pessoas que ganham a vida escrevendo software e os operadores responsáveis ​​pela manutenção desse software.

Desafios para a equipe de desenvolvimento

Os desenvolvedores tendem a ser entusiasmados e ansiosos para implementar novas abordagens e tecnologias para resolver problemas organizacionais. No entanto, eles também enfrentam alguns problemas:

  • O mercado competitivo cria muita pressão para entregar o produto no prazo.
  • Eles devem cuidar do gerenciamento do código pronto para produção e da introdução de novos recursos.
  • O ciclo de lançamento pode ser longo, portanto a equipe de desenvolvimento precisa fazer diversas suposições antes de implementar os aplicativos. Nesse cenário, é necessário mais tempo para resolver problemas que surgem durante a implantação em um ambiente de produção ou de teste.

Desafios enfrentados pela equipe de operações

As equipes de operações sempre se concentraram na estabilidade e na confiabilidade dos serviços de TI. É por isso que as equipes de operações buscam estabilidade por meio de mudanças em recursos, tecnologias ou abordagens. Suas tarefas incluem:

  • Gerencie a alocação de recursos conforme a demanda aumenta.
  • Lidar com alterações de design ou personalização necessárias para uso em um ambiente de produção.
  • Diagnosticar e resolver problemas de produção após a autoimplantação de aplicativos.

Como o DevOps resolve problemas de desenvolvimento e operações

Em vez de lançar um grande número de recursos de aplicativos de uma só vez, as empresas estão tentando ver se conseguem lançar um pequeno número de recursos para seus clientes por meio de uma série de iterações de lançamento. Essa abordagem tem uma série de vantagens, como melhor qualidade de software, feedback mais rápido do cliente, etc. Isso, por sua vez, garante alta satisfação do cliente. Para atingir esses objetivos, as empresas são obrigadas a:

  • Reduza a taxa de falhas ao lançar novos lançamentos
  • Aumente a frequência de implantação
  • Obtenha um tempo médio de recuperação mais rápido no caso de um novo lançamento de aplicativo.
  • Reduza o tempo para correções

O DevOps executa todas essas tarefas e ajuda a garantir uma entrega ininterrupta. As organizações estão usando DevOps para atingir níveis de produtividade inimagináveis ​​há apenas alguns anos. Eles realizam dezenas, centenas e até milhares de implantações por dia, ao mesmo tempo em que oferecem confiabilidade, estabilidade e segurança de classe mundial. (Saiba mais sobre tamanhos de lote e seu impacto na entrega de software).

O DevOps tenta resolver vários problemas resultantes de metodologias anteriores, incluindo:

  • Isolamento do trabalho entre equipes de desenvolvimento e operações
  • O teste e a implantação são fases separadas que ocorrem após o projeto e a construção e exigem mais tempo do que os ciclos de construção.
  • Tempo excessivo gasto em testes, implantação e design, em vez de focar na construção de serviços comerciais essenciais
  • Implantação manual de código levando a erros na produção
  • Diferenças nos cronogramas das equipes de desenvolvimento e operações causando atrasos adicionais

Guia DevOps para iniciantes

Confronto entre DevOps, Agile e TI tradicional

O DevOps é frequentemente discutido em relação a outras práticas de TI, particularmente Agile e Waterfall IT.

Ágil é um conjunto de princípios, valores e práticas para produção de software. Então, por exemplo, se você tem uma ideia que deseja transformar em software, você pode usar os princípios e valores do Agile. Mas este software só pode ser executado em um ambiente de desenvolvimento ou teste. Você precisa de uma maneira simples e segura de colocar seu software em produção de forma rápida e repetitiva, e a maneira é por meio de ferramentas e técnicas de DevOps. O desenvolvimento ágil de software concentra-se nos processos de desenvolvimento e o DevOps é responsável pelo desenvolvimento e implantação da maneira mais segura e confiável.

Comparar o modelo tradicional em cascata com o DevOps é uma boa maneira de entender os benefícios que o DevOps traz. O exemplo a seguir pressupõe que o aplicativo estará ativo em quatro semanas, o desenvolvimento está 85% concluído, o aplicativo estará ativo e o processo de compra de servidores para enviar o código apenas começou.

Processos tradicionais
Processos em DevOps

Depois de fazer um pedido de novos servidores, a equipe de desenvolvimento trabalha nos testes. A força-tarefa trabalha na extensa documentação exigida pelas empresas para implantar a infraestrutura.
Depois que um pedido de novos servidores é feito, as equipes de desenvolvimento e operações trabalham juntas nos processos e na documentação para instalar os novos servidores. Isso permite que você entenda melhor seus requisitos de infraestrutura.

As informações sobre failover, redundância, locais de data center e requisitos de armazenamento são deturpadas porque não há contribuição de uma equipe de desenvolvimento que tenha profundo conhecimento do domínio.
Detalhes sobre failover, redundância, recuperação de desastres, locais de data center e requisitos de armazenamento são conhecidos e corretos devido às informações da equipe de desenvolvimento.

A equipe de operações não tem ideia do progresso da equipe de desenvolvimento. Ela também desenvolve um plano de monitoramento baseado em suas próprias ideias.

A equipe de operações está plenamente consciente do progresso feito pela equipe de desenvolvimento. Ela também interage com a equipe de desenvolvimento e eles trabalham juntos para desenvolver um plano de monitoramento que atenda às necessidades de TI e de negócios. Eles também usam ferramentas de monitoramento de desempenho de aplicativos (APM).

Um teste de carga realizado antes de um aplicativo ser iniciado faz com que ele trave, atrasando sua inicialização.
Um teste de carga realizado antes de executar um aplicativo resulta em desempenho insatisfatório. A equipe de desenvolvimento resolve rapidamente os gargalos e o aplicativo é iniciado no prazo.

Ciclo de vida do DevOps

DevOps envolve a adoção de certas práticas geralmente aceitas.

Planejamento contínuo

O planejamento contínuo depende de princípios Lean para começar aos poucos, identificando os recursos e resultados necessários para testar o valor do negócio ou da visão, adaptar-se continuamente, medir o progresso, aprender com as necessidades do cliente, mudar a direção conforme necessário para acomodar a agilidade e reinventar o plano de negócios.

Desenvolvimento conjunto

O processo de desenvolvimento colaborativo permite que empresas, equipes de desenvolvimento e equipes de teste espalhadas por diferentes fusos horários forneçam continuamente software de qualidade. Isso inclui desenvolvimento multiplataforma, suporte à programação em vários idiomas, criação de histórias de usuários, desenvolvimento de ideias e gerenciamento do ciclo de vida. O desenvolvimento colaborativo inclui o processo e a prática de integração contínua, que promove integração frequente de código e construções automatizadas. Ao implantar código frequentemente em um aplicativo, os problemas de integração são identificados no início do ciclo de vida (quando são mais fáceis de corrigir) e o esforço geral de integração é reduzido por meio de feedback contínuo à medida que o projeto mostra um progresso contínuo e visível.

Testes contínuos

Os testes contínuos reduzem o custo dos testes, ajudando as equipes de desenvolvimento a equilibrar velocidade e qualidade. Ele também elimina gargalos de teste por meio da virtualização de serviços e facilita a criação de ambientes de teste virtualizados que podem ser facilmente compartilhados, implantados e atualizados à medida que os sistemas mudam. Esses recursos reduzem o custo de provisionamento e manutenção de ambientes de teste e encurtam os tempos de ciclo de teste, permitindo que os testes de integração ocorram mais cedo no ciclo de vida.

Liberação e implantação contínuas

Essas técnicas trazem consigo uma prática central: liberação e implantação contínuas. Isto é garantido por um pipeline contínuo que automatiza os principais processos. Ele reduz as etapas manuais, os tempos de espera de recursos e o retrabalho, permitindo a implantação com o apertar de um botão, resultando em mais liberações, menos erros e total transparência.

A automação desempenha um papel fundamental para garantir o lançamento de software estável e confiável. Um dos maiores desafios é pegar processos manuais como construção, regressão, implantação e criação de infraestrutura e automatizá-los. Isso requer controle de versão do código-fonte; cenários de teste e implantação; dados de configuração de infraestrutura e aplicativos; e as bibliotecas e pacotes dos quais o aplicativo depende. Outro fator importante é a capacidade de consultar o estado de todos os ambientes.

Monitoramento contínuo

O monitoramento contínuo fornece relatórios de nível empresarial que ajudam as equipes de desenvolvimento a compreender a disponibilidade e o desempenho dos aplicativos em ambientes de produção antes de serem implantados na produção. O feedback antecipado fornecido pelo monitoramento contínuo é fundamental para reduzir o custo dos erros e orientar os projetos na direção certa. Essa prática geralmente inclui ferramentas de monitoramento que normalmente revelam métricas relacionadas ao desempenho do aplicativo.

Feedback e otimização constantes

O feedback e a otimização contínuos fornecem uma representação visual do fluxo do cliente e identificam áreas problemáticas. O feedback pode ser incluído nas fases pré e pós-venda para maximizar o valor e garantir que ainda mais transações sejam concluídas com sucesso. Tudo isso fornece visualização imediata da causa raiz dos problemas dos clientes que influenciam seu comportamento e impacto nos negócios.

Guia DevOps para iniciantes

Benefícios do DevOps

O DevOps pode ajudar a criar um ambiente onde os desenvolvedores e as operações trabalham em equipe para atingir objetivos comuns. Um marco importante neste processo é a implementação de integração contínua e entrega contínua (CI/CD). Essas técnicas permitirão que as equipes coloquem o software no mercado mais rapidamente e com menos bugs.

Os benefícios importantes do DevOps são:

  • Previsibilidade: DevOps oferece uma taxa de falhas significativamente menor para novos lançamentos.
  • Capacidade de manutenção: o DevOps permite uma recuperação fácil caso uma nova versão falhe ou um aplicativo fique inativo.
  • Reprodutibilidade: o controle de versão de uma compilação ou código permite restaurar versões anteriores conforme necessário.
  • Maior qualidade: A resolução de problemas de infraestrutura melhora a qualidade do desenvolvimento de aplicações.
  • Tempo de lançamento no mercado: otimizar a entrega de software reduz o tempo de lançamento no mercado em 50%.
  • Redução de riscos: a implementação de segurança no ciclo de vida do software reduz o número de defeitos ao longo do ciclo de vida.
  • Eficiência de custos: A busca pela eficiência de custos no desenvolvimento de software atrai a alta administração.
  • Estabilidade: O sistema de software é mais estável, seguro e as alterações podem ser auditadas.
  • Dividir uma base de código maior em partes gerenciáveis: DevOps é baseado em métodos de desenvolvimento ágeis, que permitem dividir uma base de código grande em partes menores e gerenciáveis.

Princípios de DevOps

A adoção do DevOps deu origem a vários princípios que evoluíram (e continuam a evoluir). A maioria dos provedores de soluções desenvolveu suas próprias modificações de diversas técnicas. Todos esses princípios são baseados em uma abordagem holística de DevOps, e organizações de qualquer tamanho podem utilizá-los.

Desenvolva e teste em um ambiente semelhante ao de produção

A ideia é permitir que as equipes de desenvolvimento e garantia de qualidade (QA) desenvolvam e testem sistemas que se comportem como sistemas de produção, para que possam ver como o aplicativo se comporta e funciona muito antes de estar pronto para implantação.

A aplicação deve ser ligada aos sistemas de produção o mais cedo possível no seu ciclo de vida para resolver três grandes problemas potenciais. Em primeiro lugar, permite testar a aplicação num ambiente próximo do ambiente real. Em segundo lugar, permite testar e validar antecipadamente os processos de entrega de aplicativos. Terceiro, permite que a equipe de operações teste no início do ciclo de vida como seu ambiente se comportará quando os aplicativos forem implantados, permitindo-lhes assim criar um ambiente altamente personalizado e centrado em aplicativos.

Implante com processos repetíveis e confiáveis

Este princípio permite que as equipes de desenvolvimento e operações apoiem processos ágeis de desenvolvimento de software durante todo o ciclo de vida do software. A automação é fundamental para a criação de processos iterativos, confiáveis ​​e repetíveis. Portanto, a organização deve criar um pipeline de entrega que permita implantação e testes contínuos e automatizados. A implantação frequente também permite que as equipes testem os processos de implantação, reduzindo assim o risco de falhas na implantação durante os lançamentos ativos.

Acompanhamento e verificação da qualidade do trabalho

As organizações são boas no monitoramento de aplicações em produção porque possuem ferramentas que capturam métricas e indicadores-chave de desempenho (KPIs) em tempo real. Este princípio move o monitoramento no início do ciclo de vida, garantindo que os testes automatizados monitorem os atributos funcionais e não funcionais de um aplicativo no início do processo. Sempre que um aplicativo é testado e implantado, as métricas de qualidade devem ser examinadas e analisadas. As ferramentas de monitoramento fornecem alertas antecipados sobre problemas operacionais e de qualidade que podem surgir durante a produção. Estes indicadores devem ser recolhidos num formato acessível e compreensível para todas as partes interessadas.

Melhorando os ciclos de feedback

Um dos objetivos dos processos DevOps é permitir que as organizações respondam e façam mudanças com mais rapidez. Na entrega de software, esse objetivo exige que a organização receba feedback antecipadamente e depois aprenda rapidamente com cada ação realizada. Este princípio exige que as organizações criem canais de comunicação que permitam que as partes interessadas acessem e interajam de forma retroalimentada. O desenvolvimento pode ser feito ajustando os planos ou prioridades do projeto. A manufatura pode atuar melhorando o ambiente de produção.

Dev

  • Planejamento: Kanboard, Wekan e outras alternativas do Trello; GitLab, Tuleap, Redmine e outras alternativas JIRA; Mattermost, Roit.im, IRC e outras alternativas do Slack.
  • Escrevendo código: Git, Gerrit, Bugzilla; Jenkins e outras ferramentas de código aberto para CI/CD
  • Montagem: Apache Maven, Gradle, Apache Ant, Packer
  • Ensaios: JUnit, Pepino, Selênio, Apache JMeter

Ops

  • Liberação, implantação, operações: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • Monitoramento: Grafana, Prometheus, Nagios, InfluxDB, Fluentd e outros abordados neste guia

(*As ferramentas de operações foram numeradas em ordem de uso pelas equipes de operações, mas suas ferramentas se sobrepõem aos estágios do ciclo de vida das ferramentas de lançamento e implantação. Para facilitar a leitura, a numeração foi removida.)

Em conclusão

DevOps é uma metodologia cada vez mais popular que visa reunir desenvolvedores e operações como uma unidade. É único, diferente das operações tradicionais de TI e complementa o Agile (mas não é tão flexível).

Guia DevOps para iniciantes

Descubra detalhes sobre como conseguir uma profissão procurada do zero ou subir de nível em termos de habilidades e salário fazendo cursos online pagos da SkillFactory:

mais cursos

útil

Fonte: habr.com

Adicionar um comentário