LFCA Aprenda os conceitos básicos de DevOps - Parte 21
- 710
- 95
- Randal Kuhlman
DevOps Tem sido um tópico de tendência há um bom tempo e conseguiu chamar a atenção de profissionais de tecnologia e empresas. Como iniciante, pode ser um desafio envolvendo sua cabeça em torno do conceito de DevOps, E neste tópico, iremos desenvolver os conceitos básicos deste chavão da Internet.
Para começar, DevOps é um portmanteau de duas palavras: Desenvolvimento e Operações. É um conjunto de práticas e ferramentas que promovem a colaboração entre as equipes de desenvolvimento (Devs) e operações (Ops). O objetivo de DevOps é otimizar o ciclo de vida do desenvolvimento de software, minimizar as taxas de falha, ampliar a frequência das implantações e obter software de alta qualidade.
Para entender melhor DevOps No ambiente moderno de TI de hoje, vamos dar uma olhada em como o modelo de implantação era antes do advento do DevOps.
Práticas tradicionais de TI
Antes DevOps, Equipes de desenvolvimento e engenheiros de controle de qualidade usaram o modelo clássico em cascata. O cenário de trabalho foi amplamente isolado e testes e implantação de aplicativos ocorreram em total isolamento. Isso resultou em sobreposições, lacunas, atrasos no feedback e outras ineficiências que exigiram tempo adicional para concluir o projeto. Feedback limitado e tardio significava que a qualidade do software não foi completamente auditada até a última fase de desenvolvimento.
Além disso, a implantação manual de código foi ocasionada por erros humanos e, portanto, exigiu mais tempo em aplicativos de depuração. Além disso, diferentes equipes tinham várias linhas do tempo para concluir suas tarefas e não era incomum que as linhas do tempo caíssem da sincronização, levando a atrasos adicionais na realização do produto final.
Digite DevOps
O conceito de DevOps Foi concebido em algum momento entre 2007 e 2010 por dois desenvolvedores: Andrew Shafer e Patrick Debois. Desde a sua criação, promoveu a colaboração suave entre as equipes de operação e desenvolvimento em todas as etapas do ciclo de vida do desenvolvimento de software. Isso anunciava novos conceitos, como Integração contínua ( CI ) & Entrega contínua ( CD ) e muitos outros que contribuem para a entrega rápida de software.
Modelo e práticas de DevOps
DevOps não é apenas sobre colaboração e ter a mentalidade certa para alcançar um objetivo. Ele abrange as melhores práticas que visam ajudar a oferecer software pronto e pronto para o mercado no menor tempo possível. Vamos dar uma olhada em algumas dessas melhores práticas que o ajudarão a aumentar a eficiência e a entrega rápida do código.
Integração contínua (IC)
Integração contínua é uma prática de desenvolvimento de software em que os desenvolvedores mesclam mudanças de código em um repositório central. Depois disso, testes e construções automatizados são executados no código. O objetivo da integração contínua é acelerar a depuração de aplicativos, reduzir o tempo necessário para liberar novas atualizações de software e melhorar a qualidade do software.
Entrega contínua (CD)
Entrega contínua (CD) é mais uma prática em que as mudanças no código são construídas automaticamente e implantadas para testes vigorosos. Posterior, testes automatizados são executados contra o código implantado para permitir que os desenvolvedores identifiquem e corrigem os bugs. Geralmente, o código é progressivamente submetido a vários ambientes de teste onde, através de um procedimento automatizado padrão, o código alcança a marca mais alta de qualidade.
As ferramentas populares de CI/CD incluem Jenkins, Travis CI, Circle CI, Azure DevOps e AWS Code Build.
Teste contínuo
O objetivo dos testes contínuos é identificar bugs e riscos potenciais nos estágios iniciais do ciclo de vida do desenvolvimento de software, a fim de minimizar erros que se manifestariam no produto final. Quando o código falha nos testes vigorosos, geralmente é enviado de volta ao desenvolvedor para revisão antes de ser repassado ao departamento de garantia da qualidade para avaliações e testes funcionais. Ferramentas de teste contínuas amplamente utilizadas incluem Travis e Selenium.
Monitoramento contínuo e loggin
Como seria de esperar, os aplicativos e a infraestrutura subjacente exigem monitoramento contínuo para verificar sua identidade de desempenho quaisquer erros ou defeitos e garantir a conformidade com vários padrões do setor. Uma grande variedade de métricas é monitorada, incluindo:
- Utilização de memória e CPU
- Uso do espaço em disco
- Utilização da largura de banda
- Interação com o cliente
Ao monitorar e analisar dados e logs gerados por aplicativos, os desenvolvedores podem facilmente obter informações sobre como os recursos ou configurações afetam os usuários. Além disso, a configuração de alertas ajudará na identificação de erros ou mudanças indesejadas a cada passo do caminho. Por fim, o monitoramento contínuo garante a alta disponibilidade de aplicativos e inspira confiança de que as coisas estão funcionando como esperado.
As ferramentas de monitoramento populares incluem Prometheus, Grafana, Nagios, Zabbix e NetData para mencionar alguns.
Infraestrutura como código
Abreviado como IAC, Infraestrutura como código é descrito como a implantação e o gerenciamento de recursos, como servidores virtuais e balanceadores de carga usando arquivos de configuração legíveis por máquina, em oposição às ferramentas de configuração interativa. Isso é particularmente essencial em ambientes em nuvem, como a AWS, onde você pode facilmente aumentar instâncias de computação, definindo os detalhes da instância em um arquivo de configuração e alavancando ferramentas como o Terraform para implantar os recursos.
Por exemplo, Amazon AWS Fornece APIs que permitem que os usuários interajam programaticamente com a plataforma em nuvem da linha de comando. Isso facilita a rápida implantação de recursos, eliminando processos manuais e folga. Simplificando, o IAC recebe mais trabalho em pouco tempo.
Microsserviços
A arquitetura de microsserviços é onde um único aplicativo é uma integração ou uma amálgama de vários serviços menores acoplados. Cada serviço é executado de forma independente e se comunica com o restante dos aplicativos usando APIs baseadas em HTTP. Os microsserviços podem ser implantados como um grupo de serviços ou um único serviço
A arquitetura de microsserviços é muito diferente da arquitetura monolítica tradicional. Na arquitetura tradicional, os aplicativos são de camada única e todos os componentes, incluindo o código e a interface do usuário, são agrupados em um único programa.
Os microsserviços facilitam a implantação e o gerenciamento independentes de recursos. Eles também garantem alta disponibilidade, impedindo um único ponto de falha. Quando um único aplicativo trava, o restante continuará correndo.
Benefícios do modelo DevOps
Tendo olhado DevOps Melhores práticas, vamos agora focar nos benefícios de adotar o modelo DevOps.
Eficiência e produtividade aprimoradas entre as equipes
A colaboração entre equipes de desenvolvimento e operação se traduz em responsabilidade conjunta, o que, em última análise, aumenta a produtividade e promove o envolvimento da equipe.
Chances reduzidas de falha do produto
A colaboração também permite que as equipes depurem facilmente o código em todas as etapas antes de chegar à fase final. Isso produz software de alta qualidade e pronto para o mercado.
Entrega rápida de software
A implantação de aplicativos é mais simplificada e muito mais rápida, graças às ferramentas de automação que o DevOps fornece (como Ansible, Chef e Puppet) e integração contínua avançada (IC).
Mais transparência do produto
Como o conhecimento do produto está espalhado por vários departamentos, há um objetivo e uma visão claros sobre o produto, traduzindo -se para uma melhor tomada de decisão em todas as etapas do desenvolvimento
Resumo
A crença arraigada de que as equipes de desenvolvimento e operação devem para sempre trabalhar separadamente é desatualizado e falhas. A filosofia silenciosa ainda pode estar viva em algumas indústrias, mas isso resultou em ineficiências flagrantes ao longo do caminho.
O DevOps procura integrar equipes de desenvolvimento e operação e promover uma mudança cultural da maneira antiga de trabalhar em silos para trabalhar em conjunto para reduzir erros no código, melhorar a qualidade do software, acelerar os tempos de entrega e aumentar a produtividade geral. Por fim, o usuário final acaba com um produto de alta qualidade em tempo hábil.
Torne -se um Associado de TI certificado pela Fundação Linux (LFCA)- « Como limitar o uso da largura de banda de rede no Linux usando o Trickle
- Como fazer a auditoria de segurança do sistema Linux usando a ferramenta Lynis »