PT | EN

Evolução e futuro do DevOps: do SVN ao GreenOps

Por e 26/09/2024 08/11/2024 9 minutos

O futuro do DevOps está profundamente enraizado em sua filosofia de trabalho, que preconiza a integração colaborativa entre os times de desenvolvimento e operação. Sua adoção melhora a eficiência em todo o ciclo de vida do software.

Na prática, a filosofia DevOps começa com uma mudança cultural, promovendo colaboração, transparência e comunicação entre desenvolvimento e operação.

Já a cultura DevOps é complementada pela implementação do princípio de automação. Isso inclui as ferramentas para os pipelines de integração e entrega contínua (CI/CD), além de ferramentas de observabilidade para operações.

Enquanto a essência de DevOps segue firme e atual, sua implementação mudou muito ao longo do tempo. Conheça a seguir sua evolução e o que podemos esperar do futuro do DevOps.

Evolução do DevOps


O termo DevOps surgiu no início dos anos 2000, mas ganhou popularidade em 2009 com a primeira conferência DevOpsDay, realizada em Bruxelas.  

O DevOps se tornou mais relevante conforme a transformação ágil exigiu dos times a capacidade de fazer entregas frequentes e confiáveis.

Primeiros anos

No início dos anos 2010, a implementação do DevOps ainda era bastante simples, baseada em fluxos de processo utilizando ferramentas como:

  • SVN para controle de versões;  
  • Apache Maven para automação de builds; 
  • Jenkins para orquestração da integração contínua; 
  • Deploys em máquinas virtuais. 

Na SoftDesign, começamos a utilizar esse conjunto de ferramentas no início da década de 2010. Ainda que essas práticas fossem precursoras, elas são muito diferentes das abordagens mais avançadas que observamos hoje.

Exemplo de jobs no Jenkins – ferramenta de orquestração de CI usada no início dos anos 2010
Exemplo de jobs no Jenkins – ferramenta de orquestração de CI usada no início dos anos 2010.

Git e Testes automatizados


A primeira grande evolução no DevOps veio com a adoção do Git, que trouxe recursos avançados de gestão de configuração, controle de versão distribuído e fluxos de trabalho mais maduros. Apesar de ser uma tecnologia de 2005, sua adoção em larga escala nas empresas começou somente a partir de 2010.

Na SoftDesign, em 2013, nossa estrutura de DevOps já utilizava o Git como repositório principal. Nessa época, adotamos o Gerrit como ferramenta para code review, enquanto o Jenkins continuava a desempenhar o papel de orquestrador.

Foi também nessa época que se tornou viável integrar testes automatizados aos pipelines. A primeira ferramenta que nossa equipe adotou para isso foi o Cucumber.

Exemplo de teste automatizado integrado ao pipeline via Jenkins, e relatório de testes da ferramenta Cucumber
Exemplo de teste automatizado integrado ao pipeline via Jenkins, e relatório de testes da ferramenta Cucumber.

Conteinerização


A próxima grande evolução do DevOps ocorreu no mercado, a partir de 2014, com a adoção do Docker como ferramenta de contêineres. Acreditamos que essa transformação é gigante, pois evoluiu a forma de construir e distribuir aplicações. Uma mudança que trouxe benefícios significativos, como:

  • Consistência: é o fim das situações do tipo “na minha máquina funciona”. Com contêineres, os ambientes são isolados e imutáveis, e as imagens Docker fazem parte da entrega. O conteúdo é isolado, sem interferência de outros elementos no ambiente do desenvolvedor.
  • Facilidade de teste e de reproduzir ambientes: os testes se tornaram mais confiáveis, já que a consistência entre os ambientes passou a ser garantida.
  • Integração com CI/CD e gestão de configuração: com a conteinerização o ambiente passa a fazer parte do pipeline. As imagens Docker podem ser versionadas, construídas e implantadas automaticamente, sendo parte fundamental do fluxo de CI/CD.

Com o surgimento de ferramentas como Docker Swarm e Kubernetes, a utilização de contêineres se consolidou como uma transformação definitiva no DevOps. Essas soluções permitem orquestrar e automatizar deploys de contêineres ao longo de todo o fluxo, até mesmo em ambientes produtivos.

Atualmente, na SoftDesign, todos os times de desenvolvimento utilizam contêineres. Temos uma cloud privada com Kubernetes, onde gerenciamos os ambientes de desenvolvimento e testes. Além disso, utilizamos K8S na maioria dos ambientes produtivos, seja no Azure ou na AWS.

DevOps hoje


DevSecOps 

O DevSecOps adiciona “Security” (Segurança) à filosofia DevOps, e sua adoção cresceu significativamente a partir de 2019, consolidando-se no mercado atual. A essência desse conceito é integrar práticas de segurança diretamente no ciclo de vida do desenvolvimento de software, o que também é conhecido como Segurança Contínua.

  • Cultura: a cultura DevSecOps inclui princípios como automação da segurança, responsabilidade compartilhada, detecção rápida de vulnerabilidades e correção proativa.
  • Práticas e ferramentas: além da mudança cultural, DevSecOps prevê a adoção de ferramentas específicas, como Análise Estática de Código (SAST), Análise Dinâmica de Código (DAST), além de escaneamentos de contêineres e dependências para garantir a segurança ao longo do ciclo de desenvolvimento.

GitOps 

O GitOps representa uma mudança na lógica dos pipelines. O conceito é de 2017, e a ferramenta mais conhecida – o ArgoCD – foi lançada em 2019. 

No GitOps, o repositório Git da aplicação passa a ser a ‘fonte da verdade’ (single source of truth). Isso significa que as alterações feitas no repositório são detectadas pela ferramenta de CI/CD, que então aplica essas mudanças diretamente nos ambientes. 

A principal vantagem dessa abordagem é sua capacidade de gerenciar melhor a complexidade. Por isso, se aplica muito bem em casos de microserviços, de muitos ambientes e até de multi-cloud. Além disso, o GitOps assegura a consistência entre os ambientes e oferece um excelente nível de rastreio das mudanças. 

No entanto, o GitOps não é ideal para todos os casos. Quando o ambiente é muito simples, ou tem necessidade de configurações dinâmicas, o GitOps não é a melhor solução.

Exemplo de uso do ArgoCD como ferramenta de GitOps.
Exemplo de uso do ArgoCD como ferramenta de GitOps.

SRE 


O conceito de Site Realiability Engineering (SRE) ganhou destaque no mercado em 2016, com a publicação do livro do Google “Site Reliability Engineering: Como o Google Gerencia Sistemas de Produção”.

O SRE e o DevOps têm muito em comum, como a cultura de colaboração entre Desenvolvimento e Operação. Outra intersecção é o princípio de automação. Porém, existem diferenças importantes.

Enquanto o DevOps se concentra na automação do ciclo de vida do software, o SRE recupera conceitos cruciais para a operação de aplicações em produção, como: 

  • Objetivos e métricas: definição de SLIs, SLOs e SLAs, que ajudam a medir a confiança e qualidade dos serviços. 
  • Gestão de incidentes estruturada: inclui processos robustos para gestão de crises e análises póstumas para melhoria contínua. 
  • Observabilidade: enfatiza a importância de métricas, logs e tracing para monitorar e gerenciar as aplicações.

Na SoftDesign, vemos o SRE como uma evolução natural e necessária. Acreditamos que a sustentação de aplicações em produção não deve ser baseada apenas na automação de CI/CD, mas também em processos maduros. 

O futuro do DevOps


Plataformas 

Nos próximos anos, você certamente ouvirá muito sobre plataformas, que estão sendo vistas como o futuro do DevOps. O conceito começou a ganhar força em 2016, surgindo como uma solução interna para empresas com muitos microserviços e aplicações, como Spotify e Netflix.

Em 2020, o Spotify lançou seu framework Backstage como código aberto, e o conceito começou a crescer no mercado. 

Mas o que é uma plataforma? Trata-se de um ecossistema interno da empresa empacotado de forma fácil para ser usado pelos desenvolvedores. Esse ecossistema compreende um conjunto padronizado de ferramentas, serviços, processos e infraestrutura. 

A plataforma geralmente inclui: 

  • IDP (Internal Developer Portal);
  • Gestão de serviços e suas dependências; 
  • Integração com as soluções de DevOps;
  • Integração com a infraestrutura cloud e ferramentas de observabilidade.  

Ter uma plataforma estruturada ajuda os times a gerenciar a complexidade, promovendo automação, padronização e autonomia. A plataforma passa a ser essencial conforme a complexidade de desenvolvimento aumenta nas organizações. 

Exemplo simplificado de uma Plataforma de Desenvolvedor montada na SoftDesign
Exemplo simplificado de uma Plataforma de Desenvolvedor montada na SoftDesign.

FinOps e GreenOps 

Finalmente, dois dos conceitos mais novos para o futuro do DevOps são o FinOps e o GreenOps.  

O FinOps foca na gestão financeira da nuvem, com o objetivo de otimizar os custos da infraestrutura e maximizar o retorno do investimento em cloud. Essa disciplina inclui a análise de custos, transparência para os stakeholders e otimização de práticas, buscando uma melhor arquitetura de cloud e redução de despesas.  

Já o GreenOps busca otimizar os recursos de nuvem não só pensando em custo, mas também no impacto ambiental desses recursos.  

Por fim, com muitas empresas voltadas para ESG e sustentabilidade, o GreenOps visa monitorar e reduzir a pegada de carbono da TI, contribuindo para um futuro do DevOps mais sustentável.

Perguntas frequentes


Qual é o principal objetivo do DevOps?

O principal objetivo do DevOps é integrar e colaborar entre equipes de desenvolvimento e operações para aumentar a eficiência e a agilidade no ciclo de vida do software.

O que as organizações buscam com a adoção do DevOps?

As organizações buscam aumentar a eficiência e a agilidade no desenvolvimento e operação de software, reduzindo o tempo de entrega e melhorando a qualidade e a colaboração entre os times.

O que devemos esperar do futuro do DevOps?

Espere um crescimento significativo das plataformas internas. Além disso, conceitos emergentes como FinOps e GreenOps irão se destacar, focando na otimização de custos e na sustentabilidade na gestão de recursos de nuvem.

Acesse também:

Foto do autor

Roberto Trevisan

Roberto Trevisan é DevOps/SRE Engineer na SoftDesign, com 30 anos de experiência em Tecnologia da Informação e Internet. Pós-graduado em Desenvolvimento de Software pela UFRGS, ele é especialista em tecnologias Cloud Native, como Kubernetes, CI/CD, IaC e Cloud Computing. Ao longo de sua carreira, atuou no desenvolvimento de soluções para Internet, Streaming Media e aplicativos de transmissão de conteúdo digital.

Posts relacionados

18 de novembro de 2024

Desenvolvimento ágil de software: veja como acelerar inovação e entrega de valor do seu time

    Desenvolvimento de Software
Saber mais

14 de novembro de 2024

Desafios e soluções para sistemas legados: como modernizar e garantir competitividade

    Desenvolvimento de Software
Saber mais

14 de novembro de 2024

Ciclo de vida do software: fases e melhores práticas para inovar

    Desenvolvimento de Software
Saber mais

Quer saber mais sobre
Design, Estratégia e Tecnologia?