DevOps é uma metodologia ou um conjunto de práticas que combina o desenvolvimento de software (Dev) com operações de IT (Ops). O seu objetivo é encurtar o ciclo de vida do desenvolvimento de sistemas e proporcionar uma entrega contínua de software de alta qualidade.


O DevOps é complementar ao desenvolvimento Agile de software – aliás, vários aspetos do DevOps derivam da metodologia Agile.

 

As principais características do DevOps incluem:
  • Colaboração e comunicação
    Incentivar uma melhor comunicação e colaboração entre as equipas de desenvolvimento e de operações.

  • Automatização
    Automatizar o processo de entrega de software, especialmente a nível de testes e de implementação, para aumentar a eficiência e reduzir a probabilidade de erro humano.

  • Continuous Integration e Continuous Delivery (CI/CD)
    Fusão regular de alterações de código num repositório central, após o qual são executadas compilações e testes automatizados. A Entrega Contínua (ou Continuous Delivery) é uma extensão deste processo, em que todas as alterações que passam nos testes automatizados são implementadas automaticamente em produção.

  • Monitorização e feedback
    Monitorizar constantemente o desempenho das aplicações em produção e utilizar este feedback para tomar decisões informadas sobre o desenvolvimento futuro.

  • Iteração rápida
    Ser capaz de responder rapidamente a mudanças e novos requisitos no mercado, muitas vezes possibilitados pelas práticas acima mencionadas.

 

Mas o DevOps não é apenas um conjunto de ferramentas ou procedimentos. Trata-se mais de uma mudança cultural que incentiva a colaboração entre departamentos, melhora a eficiência e a qualidade geral do produto. Vamos entender como o DevOps evoluiu ao longo dos anos.

 

 

Um pouco de história

O conceito de DevOps revolucionou a forma como o software é desenvolvido e implementado, combinando as forças do desenvolvimento e das operações de software. A história do DevOps é um testemunho da constante evolução do setor IT, que procura melhorar a produtividade e a eficiência na entrega de software.


Nas organizações de IT tradicionais, existia uma distinção clara entre as equipas de desenvolvimento de software e as equipas de operações. Esta separação conduzia frequentemente a objetivos e metodologias diferentes, afetando a eficiência e a eficácia da entrega de software. Eis como isso acontecia:


Objetivos das equipas de desenvolvimento de software

  • Desenvolver novas funcionalidades e aplicações para satisfazer os requisitos comerciais;
  • Garantir a funcionalidade do software e responder às necessidades dos utilizadores;
  • Focar na inovação e na melhoria contínua do produto.

 

Objetivos das equipas de operações

  • Assegurar a estabilidade, a fiabilidade e o desempenho dos sistemas informáticos;
  • Gerir a infraestrutura de IT, incluindo servidores, redes e bases de dados;
  • Focar no tempo de atividade do sistema, na segurança e na escalabilidade.

 

Porque eram diferentes?
  • Tolerância ao risco
    As equipas de desenvolvimento eram mais tolerantes ao risco, focando-se na inovação rápida, enquanto as equipas de operações eram avessas ao risco, privilegiando a estabilidade.

  • Frequência de alterações
    Os programadores pretendiam introduzir alterações frequentemente (novas funcionalidades, correções de erros), enquanto as equipas de operações procuravam minimizar as alterações para manter a fiabilidade do sistema.

  • Ferramentas e práticas
    Cada equipa utilizava ferramentas e práticas diferentes que eram otimizadas para os seus objetivos específicos, mas que muitas vezes não eram compatíveis ou compreensíveis para a outra equipa.

  • Divisão cultural
    Estas diferenças de objetivos, metodologias e ferramentas conduziram a uma divisão cultural, em que cada equipa tinha pouca compreensão ou apreciação dos desafios e contribuições da outra.

 

A separação tradicional entre as equipas de desenvolvimento de software e de operações resultou em ambientes de trabalho isolados, o que não era nada positivo. Esta separação conduzia frequentemente a ineficiências, atrasos e a uma falta de responsabilidade partilhada pelo produto final.


O surgimento do DevOps tem sido fundamental para colmatar esta lacuna, promovendo uma melhor colaboração, objetivos partilhados e uma abordagem mais coesa à entrega de software.

 

A era pré-DevOps
  • Final dos anos 90 até ao início dos anos 2000
    A base do DevOps está no movimento de desenvolvimento Agile, que começou como uma resposta às limitações dos métodos tradicionais e lineares de desenvolvimento de software (Waterfall). As metodologias Agile privilegiavam a flexibilidade, a satisfação do cliente e a entrega contínua, mas inicialmente centravam-se mais no lado do desenvolvimento.

  • Desafios operacionais
    Apesar dos métodos Agile, as equipas de operações continuaram a seguir um processo mais rígido e linear, o que levou a uma desconexão entre a criação e a implementação do software.

 

Conceitos e influências iniciais
  • 2007–2008
    O termo "DevOps" ainda não tinha sido cunhado, mas a indústria estava a sentir uma necessidade crescente de uma melhor colaboração entre as equipas de desenvolvimento e de operações.

  • Administração de sistemas Agile
    Houve um movimento para aplicar os princípios Agile à administração de sistemas, lançando as bases para o que viria a ser o DevOps.

 

O nascimento do DevOps
  • 2009
    O termo “DevOps” foi introduzido pela primeira vez por Patrick Debois, um consultor de IT belga, durante uma série de conferências DevOpsDays. Este facto marcou o início oficial do movimento DevOps.

  • A primeira conferência DevOpsDays
    Realizado em Ghent, na Bélgica, precisamente em 2009, este evento reuniu profissionais que partilhavam o objetivo de melhorar o setor IT através de uma melhor colaboração e integração.

 

Principais desenvolvimentos e adoção
  • Início da década de 2010
    Início da rápida adoção dos princípios DevOps, com gigantes da tecnologia e startups a integrarem estas práticas.

  • Cloud Computing
    O surgimento das tecnologias de cloud facilitou muito as práticas de DevOps, fornecendo recursos escaláveis e a pedido.

  • Infraestrutura como Código (IaC)
    Ferramentas como Chef, Puppet e, mais tarde, Ansible e Terraform permitiram às equipas de operações gerir a infraestrutura através de código, uma prática que faz parte integrante do DevOps.

 

O amadurecimento do DevOps
  • CI/CD
    Ferramentas como Jenkins, GitLab e outras tornaram-se centrais para a metodologia DevOps, permitindo testes e implementações automatizados.

  • Arquitetura de microsserviços
    Este estilo arquitetónico, em que as aplicações são construídas como uma coleção de serviços mais pequenos, complementou as práticas DevOps, permitindo uma implementação mais rápida e independente das funcionalidades.

  • Modelos de maturidade do DevOps
    Surgiram frameworks para avaliar e orientar a implementação do DevOps nas organizações.

 

Tendências recentes e direções futuras
  • DevSecOps
    Consiste na integração de práticas de segurança no DevOps, salientando a necessidade de ciclos de vida de desenvolvimento de software seguros.

  • Inteligência Artificial (IA) e Machine Learning (ML)
    A IA e o ML são utilizados para automatizar e otimizar ainda mais vários processos DevOps.

  • Maior foco na cultura e na colaboração
    A tecnologia, por si só, não é suficiente: uma implementação bem-sucedida do DevOps exige uma mudança de cultura e de mentalidade.

 

Conclusão

É evidente que o DevOps transformou radicalmente o desenvolvimento e as operações de software. Esta evolução de uma separação rigorosa de funções para uma abordagem colaborativa e integrada otimizou a eficiência, melhorou a qualidade do produto e acelerou a entrega.


O percurso desde os primeiros princípios Agile até à ênfase atual na integração de DevSecOps, IA e ML realça a natureza dinâmica do setor IT. As direções futuras do DevOps centram-se na inovação contínua, na adoção de novas tecnologias e num compromisso mais profundo com uma cultura de colaboração. Esta mudança não se refere apenas a ferramentas ou processos, mas a uma mudança fundamental de mentalidade, sublinhando a importância de estratégias holísticas e adaptativas no panorama da tecnologia em constante evolução.

 

 Lê a segunda parte deste artigo aqui
Partilha este artigo