Um guia para iniciantes sobre DevOps

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



imagem



Muita coisa aconteceu desde que o termo DevOps se enraizou no mundo da TI. Como a maior parte do ecossistema é de código aberto, é importante revisar por que ele começou e o que isso significa para uma carreira em TI.



O que é DevOps



Embora não exista uma definição única, acredito que o DevOps seja uma estrutura tecnológica que ofereça interação entre equipes de desenvolvimento e equipes operacionais para uma implementação mais rápida do código em ambientes de produção, com a possibilidade de repetição de ações e automação. Passaremos o restante do artigo descompactando esta declaração.



A palavra "DevOps" é uma concatenação das palavras "desenvolvimento" e "operações". O 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, o DevOps trata da consistência entre operações de desenvolvimento e TI com comunicação e colaboração mais eficazes.



O DevOps prevê uma cultura em que a colaboração entre equipes de desenvolvimento, operadores e equipes de negócios é considerada crítica. Não se trata apenas de ferramentas, porque o DevOps em uma organização também beneficia continuamente os clientes. As ferramentas são um de seus pilares, juntamente com pessoas e processos. O DevOps capacita as organizações a oferecer soluções de alta qualidade no menor tempo possível. O DevOps também automatiza todos os processos, da criação à implantação, aplicativo ou produto.



A discussão do DevOps se concentra no relacionamento entre desenvolvedores, as pessoas que escrevem software para a vida toda e os operadores responsáveis ​​pelo suporte a esse software.



Desafios para a equipe de desenvolvimento



Os desenvolvedores tendem a estar entusiasmados e dispostos a introduzir novas abordagens e tecnologias para resolver problemas organizacionais. No entanto, eles também enfrentam certos desafios:



  • O mercado competitivo cria muita pressão para a entrega pontual do produto.
  • Eles devem cuidar do gerenciamento de 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 várias suposições antes de implantar aplicativos. Nesse cenário, é necessário mais tempo para resolver problemas que surgem durante a implantação em um ambiente de produção ou teste.


Desafios enfrentados pela equipe de operações



As equipes de operações historicamente se concentraram na estabilidade e confiabilidade dos serviços de TI. É por isso que as equipes operacionais buscam estabilidade através de alterações em recursos, tecnologias ou abordagens. Suas tarefas incluem:



  • Gerencie a alocação de recursos conforme a demanda cresce.
  • Manipule as alterações de design ou customização necessárias para serem aplicadas em um ambiente de produção.
  • Diagnostique e solucione problemas relacionados à produção após a implantação automática 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 ao mesmo tempo, as empresas estão tentando descobrir se podem implementar um pequeno número de recursos para seus clientes através de uma série de iterações de release. Essa abordagem tem várias vantagens, como melhor qualidade de software, feedback mais rápido do cliente etc. Isso, por sua vez, garante um alto grau de satisfação do cliente. Para atingir esses objetivos, as empresas são obrigadas a:



  • Reduza a taxa de rejeição de novos lançamentos
  • Aumentar a frequência de implantação
  • Obtenha um tempo médio de recuperação mais rápido no caso de uma nova versão do aplicativo.
  • Reduza o tempo de correção


O DevOps realiza todas essas tarefas e ajuda a garantir o fornecimento ininterrupto. As organizações usam o DevOps para atingir níveis de desempenho impensáveis ​​alguns anos atrás. Eles realizam dezenas, centenas e até milhares de implantações por dia, garantindo confiabilidade, estabilidade e segurança de classe mundial. (Saiba mais sobre tamanhos de lote e seu impacto na entrega do software).



O DevOps tenta resolver vários problemas decorrentes da aplicação de metodologias do passado, incluindo:



  • Isolamento de equipes e operadores de desenvolvimento
  • Teste e implantação em fases separadas, executadas após o design e a construção, e demoram mais que os ciclos de construção.
  • , -
  • ,
  • ,


imagem



DevOps, Agile IT



O DevOps é frequentemente discutido em conexão com outras práticas de TI, em particular, uma infraestrutura de TI flexível e em cascata.



Agile é um conjunto de princípios, valores e métodos de produção de software. Portanto, por exemplo, se você tem uma ideia que deseja transformar em software, pode usar os princípios e valores do Agile. Mas este software pode funcionar apenas em um ambiente de desenvolvimento ou teste. Você precisa de uma maneira fácil e segura de mover rápida e repetidamente o software para a produção, e o caminho é através das ferramentas e técnicas do DevOps. Uma metodologia flexível de desenvolvimento de software é focada em processos de desenvolvimento, e o DevOps é responsável pelo desenvolvimento e implantação da maneira mais segura e confiável.



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



Processos tradicionais Processos no DevOps
Depois de fazer um pedido de novos servidores, a equipe de desenvolvimento trabalha nos testes. O Focus Group está trabalhando na extensa documentação exigida pelas empresas para implantar a infraestrutura. Após fazer o pedido de novos servidores, as equipes de desenvolvimento e operador trabalham juntas nos processos e no fluxo de trabalho para instalar os novos servidores. Isso permite uma melhor compreensão dos requisitos de infraestrutura.

, , , , . , , , .
. .

A equipe operacional está totalmente ciente do progresso feito pela equipe de desenvolvimento. Ela também interage com a equipe de desenvolvimento e eles desenvolvem em conjunto um plano de monitoramento que atende às necessidades de TI e de negócios. Eles também usam as ferramentas Application Performance Monitoring (APM).

O teste de carga realizado antes de iniciar o aplicativo leva à falha do aplicativo, que atrasa seu lançamento. O teste de carga realizado antes da execução do aplicativo leva a um desempenho reduzido. A equipe de desenvolvimento remove rapidamente os gargalos e o aplicativo é iniciado a tempo.




Ciclo de vida do DevOps



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



Planejamento contínuo



O planejamento contínuo é baseado nos princípios da frugalidade, a fim de começar pequeno, identificando os recursos e resultados necessários para verificar o valor de um negócio ou visão, adaptação constante, mensurando o progresso, examinando as necessidades do cliente, mudando de direção conforme necessário, levando em consideração a manobrabilidade e a atualização plano de negócios.



Desenvolvimento conjunto



O processo de desenvolvimento colaborativo permite que empresas, equipes de desenvolvimento e equipes de teste em vários fusos horários forneçam software de qualidade continuamente. Isso inclui desenvolvimento de várias plataformas, suporte a programação multilíngue, narração de usuários, desenvolvimento de idéias e gerenciamento do ciclo de vida. O co-desenvolvimento inclui um processo e prática de integração contínua que facilita a integração frequente de código e compilações automatizadas. Com a injeção frequente de código, os problemas de integração são identificados no início do ciclo de vida (quando são mais fáceis de corrigir) e os esforços gerais de integração são reduzidos por meio de feedback contínuo, pois o projeto mostra progresso contínuo e visível.



Teste contínuo



O teste contínuo reduz o custo do teste, ajudando as equipes de desenvolvimento a equilibrar velocidade e qualidade. Ele também remove gargalos de teste por meio da virtualização de serviço e facilita a criação de ambientes de teste virtualizados que podem ser facilmente compartilhados, implementados e atualizados à medida que os sistemas mudam. Esses recursos reduzem o custo de inicializar e manter ambientes de teste e também reduzem os tempos de ciclo de teste, permitindo testes de integração no início do ciclo de vida.



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



Essas técnicas trazem consigo uma das principais práticas: liberação e implantação contínuas. Isso fornece um transportador contínuo que automatiza os principais processos. Reduz o número de operações manuais, a latência de recursos e a quantidade de retrabalho, permitindo implantar com o clique de um botão, o que fornece mais liberações, menos erros e total transparência.



A automação desempenha um papel fundamental para garantir a entrega de software estável e confiável. Um dos maiores desafios é adotar e automatizar processos manuais, como construção, regressão, implantação e infraestrutura. Isso requer controle de versão do código fonte; scripts de teste e implantação; dados de infraestrutura e configuração de aplicativos; bem como as bibliotecas e pacotes dos quais o aplicativo depende. Outro fator importante é a capacidade de consultar o status de todos os ambientes.



Monitoramento contínuo



O monitoramento contínuo fornece relatórios de nível corporativo que ajudam as equipes de desenvolvimento a entender a disponibilidade e o desempenho dos aplicativos em um ambiente de produção antes de serem implantados na produção. O feedback inicial fornecido pelo monitoramento contínuo é fundamental para reduzir o custo de erros e gerenciar 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 identificação precisa das áreas problemáticas. O feedback pode ser incluído nos estágios de pré-venda e pós-produção para maximizar o valor e garantir a conclusão bem-sucedida de ainda mais transações. Tudo isso fornece visualização imediata da causa raiz dos problemas do cliente que afetam seu comportamento e impacto nos negócios.



imagem



Benefícios do DevOps



O DevOps pode ajudar a criar um ambiente no qual desenvolvedores e operadores trabalham em equipe para atingir objetivos comuns. Um marco importante nesse processo é a introdução da integração e entrega contínuas (CI / CD). Essas técnicas permitirão às equipes levar o software ao mercado mais rapidamente, com menos bugs.



Os benefícios importantes do DevOps são:



  • Previsibilidade: o DevOps oferece uma taxa de rejeição significativamente menor ao lançar novos lançamentos.
  • Manutenção: O DevOps fornece recuperação fácil no caso de uma nova falha de versão ou interrupção do aplicativo.
  • Reprodutibilidade: um sistema de controle de revisão de montagem ou código permite restaurar versões anteriores, conforme necessário.
  • Maior qualidade: a solução de problemas de infraestrutura melhora o desenvolvimento de aplicativos.
  • : 50%.
  • : .
  • : .
  • : , , .
  • : DevOps , .


DevOps



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



Desenvolver e testar em um ambiente semelhante à produção



O ponto principal é permitir que as equipes de desenvolvimento e controle de qualidade desenvolvam e testem sistemas que se comportam como sistemas de produção, para que possam ver como o aplicativo se comporta e funciona muito antes de estar pronto para ser implantado. ...



O aplicativo deve ser conectado aos sistemas de produção o mais cedo possível durante o ciclo de vida para resolver três grandes problemas em potencial. Primeiro, ele permite testar seu aplicativo em um ambiente semelhante ao ambiente real. Segundo, permite testar e validar seus processos de entrega de aplicativos com antecedência. Em terceiro lugar, isso permite que a equipe operacional verifique, em um estágio inicial do ciclo de vida, como seu ambiente se comportará quando os aplicativos forem implantados, permitindo, assim, a criação de um ambiente orientado a aplicativos bem ajustado.



Implantação com processos confiáveis ​​e repetíveis



Esse princípio permite que as equipes de desenvolvimento e operador mantenham processos ágeis de desenvolvimento de software durante todo o ciclo de vida. A automação é fundamental para criar processos iterativos, confiáveis ​​e reproduzíveis. Portanto, a organização deve criar um pipeline de entrega que permita implantação e teste automatizados contínuos. As implantações frequentes também permitem que as equipes testem os processos de implantação, reduzindo assim o risco de falhas na implantação durante lançamentos reais.



Monitoramento e controle de qualidade do trabalho



As organizações são boas em monitorar aplicativos em produção porque possuem ferramentas que capturam métricas e principais indicadores de desempenho (KPIs) em tempo real. Esse princípio traz o monitoramento no início do ciclo de vida, garantindo que o teste automatizado rastreie 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 aviso prévio de problemas operacionais e de qualidade que podem surgir durante a produção. Esses indicadores devem ser coletados em um formato acessível e compreensível para todas as partes interessadas.



Melhorando loops de feedback



Um dos objetivos dos processos do DevOps é permitir que as organizações respondam mais rapidamente e façam alterações mais rapidamente. Na entrega de software, esse objetivo exige que a organização receba feedback antecipado e aprenda rapidamente com todas as ações tomadas. Esse princípio exige que as organizações criem canais de comunicação que permitam às partes interessadas acessar e interagir com base no feedback. O desenvolvimento pode ser realizado ajustando seus planos ou prioridades do projeto. A manufatura pode atuar melhorando o ambiente de trabalho.



Dev



  • Programação: Kanboard, Wekan e outras alternativas do Trello GitLab, Tuleap, Redmine e outras alternativas do JIRA; Mattermost, Roit.im, IRC e outras alternativas do Slack.
  • : Git, Gerrit, Bugzilla; Jenkins CI/CD
  • : Apache Maven, Gradle, Apache Ant, Packer
  • : JUnit, Cucumber, Selenium, Apache JMeter




Ops



  • , , : Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • : Grafana, Prometheus, Nagios, InfluxDB, Fluentd, ,


(* , . .)





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



imagem



Descubra os detalhes de como obter uma profissão de alto nível do zero ou subir de nível em habilidades e salário fazendo os cursos on-line pagos do SkillFactory:





mais cursos


Útil






All Articles