O que é o DevOps?

Saiba como é que o DevOps une pessoas, processos e tecnologias para entregar produtos melhores mais depressa aos clientes

Definição do DevOps

Consistindo na mistura de desenvolvimento (Dev) e operações (Ops), o DevOps é a união de pessoas, processos e tecnologia para entregar valor aos clientes continuamente.

O que é que o DevOps significa para as equipas? O DevOps dá lugar a funções que anteriormente funcionavam em silos - desenvolvimento, operações de TI, engenharia de qualidade e segurança - com o objetivo de coordenar e colaborar para produzir produtos melhores e mais fiáveis. Mediante a adoção de uma cultura de DevOps e de práticas e ferramentas de DevOps, as equipas ganham a capacidade de responder melhor às necessidades dos clientes, de aumentar a confiança nas aplicações que criam e de atingir os objetivos de negócio mais depressa.

As vantagens do DevOps

As equipas que adotam a cultura, as práticas e as ferramentas de DevOps tornam-se altamente produtivas, criando produtos melhores mais depressa e aumentando a satisfação do cliente. A melhoria da colaboração e da produtividade também faz parte integrante da obtenção dos seguintes objetivos de negócio:

Aceleração do tempo de comercialização

Adaptação ao mercado e à concorrência

Manutenção da estabilidade e fiabilidade dos sistemas

Melhoria do tempo médio de recuperação

O DevOps e o ciclo de vida das aplicações

O DevOps influencia o ciclo de vida das aplicações através das suas fases de planeamento, desenvolvimento, entrega e operação. Cada fase depende das outras e nenhuma delas é específica de uma determinada função. Numa cultura verdadeiramente DevOps, cada função está envolvida, até certo ponto, em todas as fases.

Plano

Na fase de planeamento, as equipas de DevOps idealizam, definem e descrevem as funcionalidades e as capacidades das aplicações e dos sistemas que vão criar. Acompanham o progresso através de níveis de granularidade altos e baixos, desde tarefas para produtos individuais a tarefas transversais de múltiplos produtos. Algumas das formas através das quais as equipas de DevOps planeiam com agilidade e visibilidade incluem a criação de registos de tarefas pendentes, a monitorização de erros, a gestão do desenvolvimento ágil de software com o Scrum, a utilização de quadros Kanban e a visualização do progresso com dashboards.

Desenvolver

A fase de desenvolvimento inclui todos os aspetos da programação - escrita, teste, revisão e integração do código por parte dos membros da equipa -, bem como a compilação desse código em artefactos de compilação que podem ser implementados em vários ambientes. As equipas de DevOps procuram inovar rapidamente sem sacrificar a qualidade, a estabilidade e a produtividade. Para tal, utilizam ferramentas altamente produtivas, automatizam passos mundanos e manuais e iteram em pequenos incrementos através dos testes automáticos e da integração contínua.

Distribuir

A entrega consiste no processo de implementar aplicações em ambientes de produção de forma consistente e fiável. A fase de entrega também inclui implementar e configurar a infraestrutura de base totalmente governada que compõe esses ambientes.

Nesta fase, as equipas definem um processo de gestão de lançamentos com etapas de aprovação manual claras. Também definem limites automáticos que movem as aplicações entre fases até serem disponibilizadas aos clientes. A automatização destes processos torna-os dimensionáveis, repetíveis e controlados. Assim, as equipas que seguem o DevOps podem entregar de forma frequente com facilidade, confiança e tranquilidade.

Operar

A fase de operação envolve a manutenção, a monitorização e a resolução de problemas das aplicações em ambientes de produção. As equipas, quando adotam as práticas de DevOps, trabalham para assegurar a fiabilidade dos sistemas e a elevada disponibilidade e apontam a nenhum tempo de indisponibilidade, ao mesmo tempo que reforçam a segurança e a governação. As equipas de DevOps procuram identificar os problemas antes que estes afetem a experiência do cliente e mitigam-nos rapidamente antes de ocorrerem. A manutenção desta vigilância exige telemetria avançada, alertas acionáveis e visibilidade total para as aplicações e o sistema subjacente.

Cultura de DevOps

Embora a adoção de práticas de DevOps automatize e otimize os processos através da tecnologia, tudo começa com a cultura das organizações e das pessoas que nelas intervêm. O desafio de promover uma cultura de DevOps exige alterações profundas na forma como as pessoas trabalham e colaboram. Contudo, quando as organizações se comprometem com essa cultura, criam o ambiente propício para o desenvolvimento de equipas altamente produtivas.

Colaboração, visibilidade e alinhamento

Uma característica de uma cultura saudável de DevOps é a colaboração entre equipas, que começa com a visibilidade. Diferentes equipas, como desenvolvimento e operações de TI, têm de partilhar os processos, as prioridades e as preocupações em torno do DevOps entre si. Também têm de planear o trabalho em conjunto e de estar alinhadas em termos de objetivos e medidas de sucesso relacionados com o negócio.

Mudanças no âmbito e na responsabilização

Quando as equipas estão alinhadas, assumem a propriedade e passam a estar envolvidas em fases adicionais do ciclo de vida e não apenas nas fases centrais das respetivas funções. Por exemplo, os programadores passam a ser responsáveis não só pela inovação e qualidade estabelecidas na fase de desenvolvimento, mas também pelo desempenho e estabilidade que as alterações que fazem originam na fase de operação. Ao mesmo tempo, os operadores de TI têm de incluir a governação, a segurança e a conformidade nas fases de planeamento e desenvolvimento.

Ciclos de lançamento mais curtos

As equipas de DevOps mantêm-se ágeis mediante a disponibilização de software em ciclos curtos. Os ciclos de lançamento mais curtos facilitam o planeamento e a gestão de risco, pois o progresso é incremental, o que reduz igualmente o impacto na estabilidade dos sistemas. O encurtamento do ciclo de lançamento também permite que as organizações se adaptem e reajam às necessidades mutáveis dos clientes e à pressão da concorrência.

Aprendizagem contínua

As equipas de DevOps altamente produtivas estabelecem uma mentalidade de crescimento. Falham e adaptam-se depressa e incorporam as aprendizagens nos processos, melhorando continuamente, aumentando a satisfação do cliente e acelerando a inovação e a adaptabilidade ao mercado. O DevOps é um percurso, pelo que há sempre espaço para crescer.

Veja como é que as equipas da Microsoft adotaram uma cultura de DevOps

Saiba mais

Práticas de DevOps

Para além do estabelecimento de uma cultura de DevOps, as equipas dão vida a esta abordagem mediante a implementação de determinadas práticas ao longo do ciclo de vida das aplicações. Algumas dessas práticas ajudam a acelerar, automatizar e melhorar fases específicas. Outras são transversais a várias fases e ajudam as equipas a criar processos suaves que melhoram a produtividade.

Integração contínua e entrega contínua (CI/CD)

A integração contínua é uma prática de desenvolvimento de software na qual os programadores inserem frequentemente as alterações ao código no ramo principal do código. Esta prática utiliza testes automáticos, que são executados sempre que é consolidado código novo, de modo a que o código no ramo principal permaneça sempre estável.

A entrega contínua consiste na implementação frequente e automatizada de versões novas de aplicações num ambiente de produção. Ao automatizarem os passos necessários para a implementação, as equipas reduzem os riscos que podem surgir após a mesma e geram atualizações mais frequentes.

Sendo adotadas ambas as práticas, o processo resultante é a CI/CD, que inclui a automatização completa de todos os passos entre a consolidação de código e a implementação em produção. A introdução da CI/CD permite às equipas dedicarem-se à compilação de código e retira a sobrecarga e os potenciais erros humanos aos passos mundanos e manuais. A CI/CD também acelera o processo de implementação de código novo e torna-o menos propenso a riscos. As implementações dão-se, então, com mais frequência e em incrementos mais pequenos, ajudando as equipas a serem mais ágeis e mais produtivas e a terem mais confiança no código que executam.

Controlo de Versões

O controlo de versões consiste na prática de gerir código em versões - monitorizar revisões e o histórico de alterações para facilitar a revisão e a recuperação de código. Geralmente, é implementado com sistemas de controlo de versões, como o Git, que possibilitam que vários programadores colaborem na criação do código. Esses sistemas oferecem um processo claro para inserir alterações ao código que ocorrem nos mesmos ficheiros, para lidar com conflitos e para reverter alterações para estados anteriores.

A utilização do controlo de versões é uma prática fundamental do DevOps, pois ajuda as equipas de desenvolvimento a trabalhar em conjunto, a dividir tarefas de programação entre os membros e a armazenar todo o código para fácil recuperação, se necessário.

Também é um elemento necessário para outras práticas, como a integração contínua e a infraestrutura como código.

Saiba mais sobre o Git

Desenvolvimento de software ágil

A agilidade é uma abordagem do desenvolvimento de software que põe a ênfase na colaboração entre equipas, no feedback dos clientes e dos utilizadores e na elevada adaptabilidade a alterações através de ciclos de lançamento curtos. As equipas que seguem a abordagem ágil oferecem alterações e melhoramentos contínuos aos clientes, recolhem o feedback daqueles e, depois, aprendem e ajustam-se com base nas vontades e nas necessidades dos mesmos. A agilidade é substancialmente diferente de outros enquadramentos mais tradicionais, como a metodologia cascata, que incluem ciclos de lançamento mais longos e definidos por fases sequenciais.

O Kanban e o Scrum são dois enquadramentos populares associados à agilidade.

Infraestrutura como código

A infraestrutura como código define os recursos e as topologias dos sistemas de forma descritiva, possibilitando às equipas gerirem esses recursos da mesma forma que geririam o código. Essas definições também podem ser armazenadas e criadas em sistemas de controlo de versões, nos quais podem ser revistas e revertidas - tal como o código, mais uma vez.

A introdução da infraestrutura como código ajuda as equipas a implementarem os recursos dos sistemas de modo fiável, repetível e controlado. Também apoia a automatização das implementações e reduz o risco de erros humanos, especialmente em ambientes grandes e complexos. Com esta solução repetível e fiável para a implementação em produção, as equipas podem manter ambientes de desenvolvimento e teste idênticos aos ambientes de produção. Do mesmo modo, a duplicação de ambientes para diferentes datacenters e plataformas na cloud torna-se mais simples e eficiente.

Gestão de configurações

A gestão de configurações refere-se à gestão do estado dos recursos num sistema, incluindo servidores, máquinas virtuais e bases de dados. Mediante a utilização de ferramentas de gestão de configurações, as equipas podem lançar as alterações de forma controlada e sistemática, reduzindo os riscos de modificar a configuração dos sistemas. As equipas utilizam as ferramentas de gestão de configurações para acompanhar o estado dos sistemas e ajudam a evitar os desvios da configuração, que consistem no modo como a configuração de um recurso de sistema se desvia do estado pretendido definido para o mesmo ao longo do tempo.

Praticadas em conjunto com a infraestrutura como código, tanto a configuração como a definição do sistema são facilmente modeláveis e automatizadas, o que faz com que as equipas possam operar ambientes complexos em escala.

Monitorização contínua

A monitorização contínua significa ter visibilidade completa e em tempo real para o desempenho e o estado de funcionamento de toda a pilha das aplicações, desde a infraestrutura subjacente que as executa, aos componentes de software de nível superior. Essa visibilidade consiste na recolha de telemetria e metadados, bem como da definição de alertas para condições predefinidas que requerem a atenção de um operador. A telemetria inclui dados de eventos e registos recolhidos em várias partes do sistema e que são armazenados em locais onde possam ser analisados e consultados.

As equipas de DevOps altamente produtivas definem alertas acionáveis e relevantes e recolhem telemetria avançada, de modo a poderem obter informações de grandes quantidades de dados. Essas informações ajudam-nas a mitigar problemas em tempo real e a perceber como podem melhorar as aplicações em ciclos de desenvolvimento futuros.

Ferramentas DevOps

As equipas têm à sua disposição várias ferramentas de DevOps que facilitam a adoção da cultura de DevOps nas respetivas organizações. A maioria delas recorre a várias ferramentas, criando conjuntos de ferramentas personalizados que se adequam às respetivas necessidades para cada fase do ciclo de vida das aplicações. Embora a adoção de ferramentas ou tecnologias específicas não seja o mesmo que adotar o DevOps, quando a cultura de DevOps está presente e os processos definidos, as pessoas podem implementar e uniformizar as práticas desta abordagem caso escolham as ferramentas certas. Obtenha as ferramentas para pôr o DevOps em prática:

O DevOps e a cloud

A adoção da cloud transformou significativamente a forma como as equipas criam, implementam e operam as aplicações. Juntamente com a adoção do DevOps, as equipas têm agora mais oportunidades de melhorar as práticas e melhorar o serviço aos clientes.

Agilidade na cloud

Graças à capacidade de aprovisionar e configurar rapidamente ambientes na cloud em várias regiões com recursos ilimitados, as equipas ganham agilidade para implementarem as aplicações. Agora, em vez de terem de comprar, configurar e manter servidores físicos, podem criar ambientes na cloud complexos em minutos e, depois, desligá-los quando já não são necessários.

Kubernetes

À medida que cada vez mais aplicações utilizam a tecnologia de contentores, o Kubernetes vem-se tornando a solução da indústria para a orquestração de contentores em escala. A automatização dos processos de criação e implementação de contentores através de pipelines de CI/CD e a monitorização desses contentores na produção estão a tornar-se práticas essenciais na era do Kubernetes.

Computação sem servidor

Uma vez que a maioria dos custos com a gestão da infraestrutura passa para o fornecedor de cloud, as equipas podem dedicar-se às aplicações e não à infraestrutura subjacente. A computação sem servidor oferece a capacidade de executar aplicações sem a necessidade de configurar e manter servidores. Algumas opções reduzem a complexidade e o risco inerentes à implementação e às operações.

Inicie o seu percurso de DevOps

Com as diversas práticas e soluções disponíveis, o DevOps pode parecer assoberbante à primeira vista. O fundamental é começar aos poucos e aprender com os outros.

FAQ

  • O DevOps é levado a cabo em diferentes funções nas organizações e exige que muitas delas trabalhem em estreita colaboração. Na maioria dos casos, as funções de DevOps incluem desenvolvimento, IT, operações, segurança e suporte.
  • O DevOps não se limita a uma só função. Todos os intervenientes em cada fase do ciclo de vida das aplicações têm de adotar a cultura de DevOps. No entanto, em determinadas organizações, há algumas pessoas ou equipas cujo único papel é permitir a automatização, definir práticas e implementar pipelines de CI/CD. Por vezes, o título oficial dessas funções é engenheiro de DevOps ou especialista em DevOps.
  • A adoção do DevOps em organizações grandes pode ser extremamente desafiante. Mudar a cultura de uma organização grande e uniformizar processos e ferramentas exige paciência e persistência. Na maior parte das organizações grandes, há utilizadores pioneiros das práticas de DevOps. À medida que essas práticas atingem maturidade e geram resultados positivos, seguem-se, habitualmente, outras equipas, que dão assim início ao percurso de DevOps.

    Saiba como é que as equipas da Microsoft adotaram uma cultura de DevOps.

  • O verdadeiro significado do DevOps é entregar valor contínuo aos clientes. Os resultados da adoção do DevOps têm de ser medidos face aos objetivos de negócio. As equipas de DevOps alinham-se em torno desses objetivos e atingem-nos através de ciclos de entrega curtos. Esses ciclos proporcionam respostas ágeis ao mercado e aprendizagens contínuas mediante o feedback dos clientes.
  • Tanto o DevOps, como a agilidade, são enquadramentos modernos de desenvolvimento de software para produzir produtos, lançamentos ou versões. O DevOps é uma cultura que promove a colaboração entre todas as funções envolvidas no desenvolvimento e na manutenção de software. A agilidade é uma metodologia de desenvolvimento concebida para manter a produtividade e lançar versões com a realidade comum das necessidades em mutação. O DevOps e a agilidade não se excluem entre si e são, muitas vezes, praticadas em conjunto.
  • Juntamente com a integração contínua, a entrega contínua e a implementação contínua são práticas que automatizam as fases da entrega de software.