O que é?
É um movimento cultural que veio pra "atacar" o conflito entre equipe de desenvolvimento e de operação, através de colaboração e uso de uma série de ferramentas para fornecer aos clientes produtos melhores e mais confiáveis.
Essas equipes usam práticas para automatizar processos que historicamente sempre foram manuais e lentos. As ferramentas ajudam, também, os engenheiros à realizar tarefas independentemente (por exemplo, implantação de código ou provisionamento de infraestrutura) que normalmente exigiriam a ajuda de outras equipes, e isso aumenta ainda mais a velocidade da equipe.
Benefícios?
Velocidade:
Operar com velocidade para que possa trazer inovações mais rapidamente, adaptar-se melhor a mercados dinâmicos e tornar-se mais eficiente na geração de resultados comerciais.
Entrega rápida:
Aumentar a frequência e o ritmo de lançamentos para poder inovar e melhorar seu produto mais rapidamente. Quanto mais rápido você puder lançar novos recursos e corrigir erros, maior será a sua agilidade para responder às necessidades dos clientes e criar vantagem competitiva.
Confiabilidade:
Garantir a qualidade das atualizações de aplicativos e alterações de infraestrutura para que você possa entregar com confiança e manter uma experiência positiva para os usuários finais.
Escala:
Operar e gerenciar processos de infraestrutura e desenvolvimento em escala. A automação e a constância ajudam a gerenciar sistemas complexos ou dinâmicos com eficiência e risco reduzido. Por exemplo, a infraestrutura como código que ajuda a gerenciar os ambientes de implantação, teste e produção de modo repetido e mais eficiente.
Colaboração melhorada:
Criar equipes mais eficientes, que enfatiza valores como propriedade e responsabilidade, colaborando de perto, compartilhando muitas responsabilidades e combinando seus fluxos de trabalho. Isso reduz ineficiências e economiza tempo.
Segurança:
Operar rapidamente enquanto mantém o controle e preserva a conformidade. Podendo adotar o modelo DevOps sem sacrificar a segurança usando políticas de conformidade automáticas, controles minuciosos e técnicas de gerenciamento de configuração.
Como?
Integração e Entrega contínua (CI/CD):
Na entrega contínua, cada alteração de código é criada, testada e enviada para um ambiente de teste ou preparação, que não pertence à produção. Já na integração contínua, os desenvolvedores, com frequência, juntam as alterações de código em um repositório central e após isso os testes são executados.
A diferença entre as duas é a presença de uma aprovação manual para atualizar o ambiente de produção. Com a CI, a atualização da produção ocorre automaticamente, sem aprovação explícita.
Microserviços:
É uma abordagem de projeto para a criação de uma aplicação única como um conjunto de pequenos serviços.
Cada serviço é executado em seu próprio processo e se comunica com outros serviços por meio de uma interface bem definida usando um mecanismo leve, geralmente uma API.
Infraestrutura como código:
Define os recursos e as topologias do sistema de uma maneira descritiva que permite às equipes gerenciar os recursos da maneira como codificarem. Essas definições também podem ser armazenadas e versionadas em sistemas de controle de versão, onde podem ser revisadas e revertidas.
A prática de infraestrutura como código ajuda a automatizar a implantação e reduz o risco de erro humano, especialmente para ambientes grandes e complexos. Também, a duplicação de ambientes para diferentes data centers e plataformas em nuvem também se torna mais simples e eficiente.
Monitoramento e análie:
O monitoramento de métricas e logs serve para ver como a performance do aplicativo e da infraestrutura afeta a experiência do usuário final do seu produto.
Comunicação e colaboração:
O aumento da comunicação e da colaboração é um dos principais aspectos culturais do DevOps pois auxilia em unir fisicamente os fluxos de trabalho e as responsabilidades de desenvolvimento e operações, permitindo que se alinhem mais às metas dos projetos.
Finalização
Agora que você aprendeu sobre o conceito de DevOps, o próximo passo é aplicá-lo.