O que é o DevOps?

Saiba mais sobre como o DevOps unifica pessoas, processos e tecnologias para oferecer produtos melhores aos clientes com maior rapidez

Definição do DevOps

Um composto de Dev (desenvolvimento) e Ops (operações), o DevOps é a união de pessoas, processos e tecnologias para fornecer continuamente valor aos clientes.

O que o DevOps significa para as equipes? O DevOps permite que funções anteriormente isoladas – desenvolvimento, operações de TI, engenharia da qualidade e segurança – atuem de forma coordenada e colaborativa para gerar produtos melhores e mais confiáveis. Ao adotar uma cultura de DevOps em conjunto com as práticas e ferramentas de DevOps, as equipes ganham a capacidade de responder melhor às necessidades dos clientes, aumentar a confiança nos aplicativos que constroem e cumprir as metas empresariais mais rapidamente.

Os benefícios de DevOps

Equipes que adotam a cultura, as práticas e as ferramentas de DevOps apresentam alto desempenho, criando produtos melhores, com mais rapidez, para maior satisfação do cliente. Esse aumento na colaboração e na produtividade também é essencial para cumprir metas empresariais como as seguintes:

Aceleração do tempo até a comercialização

Adaptação ao mercado e à concorrência

Manter a estabilidade e a confiabilidade do sistema

Melhorar o tempo médio para recuperação

DevOps e o ciclo de vida do aplicativo

O DevOps influencia o ciclo de vida do aplicativo em todas as fases do planejamento, do desenvolvimento, da entrega e da operação. Cada fase depende das demais e elas não são específicas da função. Em uma verdadeira cultura de DevOps, cada função está envolvida de alguma forma em cada fase.

Plano

Na fase de planejamento, as equipes de DevOps idealizam, definem e descrevem os recursos e as funcionalidades dos aplicativos e sistemas que estão construindo. Elas acompanham o progresso em níveis altos e baixos de granularidade – desde tarefas de produto único até tarefas que abrangem portfólios de vários produtos. Criar lista de pendências, acompanhar bugs, gerenciar o desenvolvimento de software Agile com o Scrum, usar quadros Kanban e visualizar o progresso com dashboards são algumas das maneiras pelas quais as equipes de DevOps planejam com agilidade e visibilidade.

Desenvolver

A fase de desenvolvimento inclui todos os aspectos da codificação – gravação, teste, revisão e integração do código pelos membros da equipe – bem como a compilação do código em artefatos de compilação, que podem ser implementados em vários ambientes. As equipes de DevOps buscam inovar rapidamente sem sacrificar a qualidade, a estabilidade e a produtividade. Para fazer isso, elas usam ferramentas altamente produtivas, automatizam etapas elementares e manuais e iteram em pequenos incrementos por meio de testes automatizados e integração contínua.

Fornecimento

A entrega é o processo de implantação de aplicativos nos ambientes de produção de maneira consistente e confiável. A fase de entrega também inclui a implantação e a configuração da infraestrutura fundamental totalmente governada que compõe esses ambientes.

Na fase de entrega, as equipes definem um processo de gerenciamento de versão com estágios claros de aprovação manual. Elas também definem portões automatizados que movem os aplicativos entre os estágios, até que sejam disponibilizados aos clientes. A automação desses processos os torna escalonáveis, repetíveis e controlados. Dessa forma, as equipes que praticam o DevOps com frequência podem atuar e entregar com facilidade, confiança e tranquilidade.

Operar

A fase de operação envolve manter, monitorar e solucionar problemas de aplicativos em ambientes de produção. Ao adotar as práticas de DevOps, as equipes trabalham para garantir a confiabilidade do sistema, a alta disponibilidade e o objetivo de tempo de inatividade igual a zero, reforçando a segurança e a governança. As equipes de DevOps buscam identificar os problemas antes que eles afetem a experiência do cliente e mitigar os problemas rapidamente quando ocorrem. Manter esse nível de vigilância requer telemetria avançada, alertas acionáveis e visibilidade total sobre os aplicativos e o sistema subjacente.

Cultura de DevOps

Embora a adoção de práticas de DevOps automatize e otimize processos por meio da tecnologia, tudo começa com a cultura dentro da organização – e com as pessoas que fazem parte dela. O desafio de cultivar uma cultura de DevOps exige mudanças profundas na maneira como as pessoas trabalham e colaboram. Mas quando se comprometem com a cultura de DevOps, as organizações podem criar o ambiente ideal para o desenvolvimento de equipes de alto desempenho.

Colaboração, visibilidade e alinhamento

Uma característica marcante de uma cultura íntegra de DevOps é a colaboração entre as equipes, que começa com a visibilidade. Equipes diferentes, como as de desenvolvimento e de operações de TI, precisam compartilhar os processos, as prioridades e as preocupações de DevOps. Essas equipes também devem planejar o trabalho em conjunto, bem como alinhar as metas e as medidas do sucesso conforme se relacionam aos negócios.

Mudanças de escopo e de responsabilidade

À medida que as equipes se alinham, elas assumem a propriedade e se envolvem em outras fases do ciclo de vida – não apenas naquelas que são essenciais para suas funções. Por exemplo, os desenvolvedores tornam-se responsáveis não apenas pela inovação e a qualidade estabelecidas na fase de desenvolvimento, mas também pelo desempenho e estabilidade que suas alterações trazem a software na fase de operação. Ao mesmo tempo, os operadores de TI certamente incluirão governança, segurança e conformidade na fase de planejamento e desenvolvimento.

Ciclos de lançamento mais curtos

As equipes de DevOps se mantêm ágeis lançando versões de software em ciclos curtos. Ciclos de lançamento mais curtos facilitam o planejamento e o gerenciamento de riscos, pois o progresso é incremental, reduzindo também o impacto sobre a estabilidade do sistema. A redução do ciclo de lançamento também permite que as organizações se adaptem melhor e reajam de maneira mais ágil à evolução das necessidades dos clientes e à pressão da concorrência.

Aprendizado contínuo

As equipes de alto desempenho de DevOps estabelecem uma mentalidade de crescimento. Elas falham rapidamente e incorporam aprendizados aos seus processos, melhorando continuamente, aumentando a satisfação do cliente e acelerando a inovação e a capacidade de adaptação ao mercado. O DevOps é uma jornada, portanto, há sempre espaço para crescer.

Práticas de DevOps

Além de estabelecer uma cultura de DevOps, as equipes dão vida ao DevOps implementando certas práticas ao longo do ciclo de vida do aplicativo. Algumas dessas práticas ajudam a acelerar, automatizar e melhorar uma fase específica. Outras abrangem várias fases, ajudando as equipes a criar processos contínuos que ajudam a melhorar a produtividade.

CI/CD (Integração Contínua e Entrega Contínua)

A integração contínua é uma prática de desenvolvimento de software na qual os desenvolvedores mesclam alterações de código com frequência no branch de código principal. A integração contínua emprega testes automatizados, que são executados toda vez que um novo código é confirmado, para que o código do branch principal esteja sempre estável.

A entrega contínua é a implantação automatizada e frequente de novas versões de aplicativos em um ambiente de produção. Ao automatizar as etapas necessárias para a implantação, as equipes reduzem os problemas que podem ocorrer na implantação e permitem atualizações mais frequentes.

Quando as duas práticas estão em vigor, o processo resultante é CI/CD, que inclui a automação completa de todas as etapas entre a confirmação do código e a implantação em produção. A implementação de CI/CD permite que as equipes se concentrem na criação de código e remove a sobrecarga e possíveis erros humanos das etapas elementares e manuais. A CI/CD também torna o processo de implantação de novo código mais rápido e menos arriscado. Então, as implantações acontecem com mais frequência e em incrementos menores, ajudando as equipes a se tornarem mais ágeis, mais produtivas e mais confiantes a respeito do código em execução.

Controle de versão

O controle de versão é a prática de gerenciar código por meio de versões – acompanhando as revisões e o histórico de alterações para facilitar a revisão e a recuperação do código. Essa prática geralmente é implementada usando sistemas de controle de versão, como o Git, que permitem que vários desenvolvedores colaborem na criação do código. Esses sistemas fornecem um processo claro para mesclar alterações de código ocorridas no mesmo arquivo, gerenciar conflitos e reverter alterações para estados anteriores.

O uso do controle de versão é uma prática fundamental de DevOps que ajuda as equipes de desenvolvimento a trabalharem juntas, dividir as tarefas de codificação entre os membros da equipe e armazenar o código completo para fácil recuperação, se necessário.

O controle de versão também é um elemento necessário em outras práticas, como a integração contínua e a infraestrutura como código.

Saiba mais sobre o Git

Desenvolvimento de software Agile

O Agile é uma abordagem de desenvolvimento de software que enfatiza a colaboração da equipe, os comentários do cliente e do usuário e a alta adaptabilidade às mudanças por meio de ciclos curtos de versão. As equipes que praticam o Agile fornecem mudanças e aprimoramentos contínuos aos clientes, coletam seus comentários e aprendem e se ajustam com base nos desejos e nas necessidades dos clientes. O Agile é substancialmente diferente de outras estruturas mais tradicionais, como a cascata, que inclui longos ciclos de versão definidos por fases sequenciais.

O Kanban e o Scrum são duas estruturas populares associadas ao Agile.

Infraestrutura como código

A infraestrutura como código define os recursos e as topologias do sistema de uma maneira descritiva que permite às equipes gerenciar esses recursos da maneira como codificariam. Essas definições também podem ser armazenadas e versionadas em sistemas de controle de versão, onde podem ser revisadas e revertidas – novamente como código.

A prática de infraestrutura como código ajuda as equipes a implantar os recursos do sistema de maneira confiável, repetível e controlada. A infraestrutura como código também ajuda a automatizar a implantação e reduz o risco de erro humano, especialmente para ambientes grandes e complexos. Essa solução confiável e repetível para a implantação de ambientes permite que as equipes mantenham ambientes de desenvolvimento e teste idênticos ao ambiente de produção. Da mesma maneira, a duplicação de ambientes para diferentes data centers e plataformas em nuvem também se torna mais simples e eficiente.

Gerenciamento de configuração

O gerenciamento de configuração refere-se ao gerenciamento do estado dos recursos em um sistema, incluindo servidores, máquinas virtuais e bancos de dados. Usando ferramentas de gerenciamento de configuração, as equipes podem implementar alterações de maneira controlada e sistemática, reduzindo os riscos de modificar a configuração do sistema. As equipes usam ferramentas de gerenciamento de configuração para acompanhar o estado do sistema e ajudar a evitar desvios de configuração, já que é assim que a configuração de um recurso de sistema se desvia do estado desejado ao longo do tempo.

Praticadas em conjunto com a infraestrutura como código, a definição e a configuração do sistema são fáceis de padronizar e automatizar, o que ajuda as equipes a operar ambientes complexos em escala.

Monitoramento contínuo

O monitoramento contínuo significa ter visibilidade total e em tempo real sobre o desempenho e a integridade de toda a pilha de aplicativos, desde a infraestrutura subjacente que está executando o aplicativo até os componentes de software de nível superior. Essa visibilidade consiste na coleta de telemetria e metadados, bem como na definição de alertas para condições predefinidas que merecem a atenção de um operador. A telemetria compreende dados de eventos e logs coletados de várias partes do sistema e armazenados em um local onde possam ser analisados e consultados.

As equipes de alto desempenho de DevOps garantem a definição de alertas acionáveis e significativos e a coleta de uma telemetria abundante para que seja possível extrair insights de grandes quantidades de dados. Esses insights ajudam a equipe a mitigar problemas em tempo real e a ver como melhorar o aplicativo em ciclos de desenvolvimento futuros.

Ferramentas DevOps

As equipes têm muitas ferramentas de DevOps para ajudá-las a implementar uma cultura de DevOps em sua organização. A maioria das equipes confia em várias ferramentas, criando cadeias de ferramentas personalizadas que atendem às suas necessidades específicas para cada fase do ciclo de vida do aplicativo. Embora adotar uma ferramenta ou tecnologia específica não seja o mesmo que adotar o DevOps, quando a cultura de DevOps está presente e os processos são definidos, as pessoas podem implementar e simplificar as práticas de DevOps se escolherem as ferramentas adequadas. Obtenha as ferramentas para colocar o DevOps em prática:

DevOps e a nuvem

A adoção da nuvem transformou de maneira fundamental a maneira como as equipes estão criando, implantando e operando os aplicativos. Junto com a adoção de DevOps, as equipes agora têm mais oportunidades de aprimorar suas práticas e atender melhor os clientes.

Agilidade na nuvem

Com a capacidade de provisionar e configurar rapidamente ambientes de nuvem em várias regiões e com recursos ilimitados, as equipes ganham agilidade na implantação de seus aplicativos. Agora, em vez de precisar comprar, configurar e manter servidores físicos, as equipes criam ambientes complexos de nuvem em questão de minutos e encerram esses ambientes quando eles deixam de ser necessários.

Kubernetes

À medida que cada vez mais aplicativos usam a tecnologia de contêineres, o Kubernetes está se tornando a solução preferencial do setor para orquestrar contêineres em escala. Automatizar os processos de criação e implantação de contêineres via pipelines de CI/CD e monitorar esses contêineres na produção estão se tornando práticas essenciais na era do Kubernetes.

Computação sem servidor

Com a maior parte das sobrecargas de gerenciamento da infraestrutura transferida para o provedor de nuvem, as equipes podem se dedicar a seus aplicativos em vez da infraestrutura subjacente. A computação sem servidor possibilita executar aplicativos sem precisar configurar e manter servidores. Algumas opções reduzem a complexidade e o risco da implantação e das operações.

Começar nossa jornada de DevOps

Com todas as práticas e soluções disponíveis, o DevOps pode parecer complexo demais no começo. A chave é começar pequeno e aprender com os outros.

Perguntas Frequentes

  • O DevOps é praticado em diferentes funções de uma organização e exige que várias delas colaborem estreitamente. Na maioria dos casos, as funções de DevOps incluem desenvolvimento, TI, operações, segurança e suporte.
  • O DevOps não se limita a uma única função. Todos que participam de alguma das fases do ciclo de vida do aplicativo devem adotar a cultura de DevOps. No entanto, em algumas organizações, existem algumas pessoas ou equipes cujo foco exclusivo é habilitar a automação, definir práticas e implementar os pipelines de CI/CD. Às vezes, o título oficial dessas funções é engenheiro de DevOps ou especialista em DevOps.
  • A adoção de DevOps em uma organização de grande porte pode ser extremamente desafiadora. Mudar a cultura e padronizar os processos e as ferramentas de uma organização de grande porte requer paciência e persistência. Na maioria das organizações de grande porte, existem os usuários pioneiros das práticas de DevOps. À medida que essas práticas ganham maturidade e produzem resultados positivos, em geral, outras equipes seguem o exemplo e iniciam sua jornada de DevOps.
  • O verdadeiro significado de DevOps está centrado na entrega de valor contínuo aos clientes. Os resultados da adoção de DevOps devem ser medidos em relação aos objetivos de negócios. As equipes de DevOps se alinham em torno desses objetivos e os alcançam usando ciclos de versão curtos. Esses ciclos permitem uma resposta ágil ao mercado e aprendizado contínuo por meio dos comentários do cliente.
  • Tanto o DevOps quanto o Agile são estruturas de desenvolvimento de software modernas para a geração de um produto, uma lançamento ou uma versão. O DevOps é uma cultura que promove a colaboração entre todas as funções envolvidas no desenvolvimento e na manutenção do software. O Agile é uma metodologia projetada para manter a produtividade e promover versões com a realidade comum de necessidades em constante evolução. O DevOps e o Agile não são mutuamente exclusivos e geralmente são praticados em conjunto.
  • Juntamente com a integração contínua, a entrega contínua e a implantação contínua há práticas que automatizam as fases da entrega do software.