Entrega contínua vs. implementação contínua

Forneça rapidamente código de alta qualidade aos clientes com estas duas práticas de automatização.

O que são a entrega contínua e a implementação contínua?

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. Estas práticas permitem às equipas de desenvolvimento disponibilizar novas funcionalidades, melhorias e correções aos respetivos clientes com maior rapidez, precisão e produtividade.

A entrega contínua e a implementação contínua têm muito em comum. Para compreender as diferenças entre estas práticas, bem como para descobrir qual delas quer implementar, temos de identificar as fases de entrega de software que podemos automatizar.

Automatizar o processo de entrega de software

Os consumidores exigem o aumento da personalização e segurança dos produtos. Para satisfazer essas necessidades e fornecer software de forma mais rápida e fiável, as equipas de desenvolvimento podem adotar uma cultura de DevOps.

A cultura de DevOps derruba as barreiras entre disciplinas e unifica pessoas, processos e tecnologia no sentido de melhorar a colaboração e coordenação. Por conseguinte, as alterações de código chegam à produção e novo valor chega ao cliente o mais rapidamente possível.

Embora as equipas de desenvolvimento, das operações de TI, da engenharia de qualidade e de segurança trabalhem em estreita colaboração no DevOps, o processo de entrega de software continua a ser igualmente complexo. O DevOps organiza a entrega de software em cinco fases: planeamento, desenvolvimento, entrega, implementação e operação.

Entrega de software em DevOps

Sem automatização, as equipas de desenvolvimento têm de compilar, testar e implementar software manualmente, o que inclui:

  • Carregar, testar e validar código.
  • Intercalar alterações de código no ramo principal.
  • Preparar código para ser utilizado em direto.
  • Criar um artefacto implementável.
  • Emitir código para produção.

Fases a automatizar

A integração contínua, a entrega contínua e a implementação contínua são práticas que automatizam aspetos das fases de desenvolvimento e entrega. Cada prática leva a automatização um passo mais além, a começar pela integração contínua.

A diferença entre a entrega contínua e a implementação contínua

Integração contínua

Para descrever a entrega contínua e a implementação contínua, vamos começar pela integração contínua. Na integração contínua, a fase de desenvolvimento (compilar e testar código) é totalmente automatizada. Sempre que consolida código, as alterações são validadas e intercaladas no ramo principal, além de que o código é empacotado num artefacto de compilação.

Entrega contínua

A entrega contínua automatiza a próxima fase: a entrega. Na entrega contínua, sempre que um novo artefacto de compilação estiver disponível, o artefacto é automaticamente colocado no ambiente desejado e implementado.

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

Quando as equipas implementam tanto a integração contínua como a entrega contínua (CI/CD), as fases de desenvolvimento e de entrega são automatizadas. O código permanece sempre pronto para produção. Tudo o que as equipas têm de fazer é acionar manualmente a transição da fase de desenvolvimento para a de implementação, disponibilizando o artefacto de compilação automatizado para implementação automática, o que é um processo tão simples como premir um botão.

Implementação contínua

Com a implementação contínua, pode automatizar todo o processo desde a consolidação do código à produção. O acionador entre as fases de desenvolvimento e de entrega é automático, pelo que as alterações de código são emitidas em direto assim que recebem validação e passam todos os testes. Ou seja, os clientes recebem as melhorias assim que ficam disponíveis.

Entrega contínua vs. implementação contínua: qual deve escolher?

Quer adote a entrega contínua, quer adote o desenvolvimento contínuo, encontrará as ferramentas para o apoiar.

Antes de considerar qual destas práticas deve implementar, determine se a sua organização tem uma cultura de DevOps que as possa suportar. Em seguida, uma vez que o objetivo das equipas de DevOps é automatizar todo o processo de entrega de software, a questão não é "qual é a melhor prática"? Deve antes perguntar: "Precisamos de um acionador manual entre a integração contínua e a entrega contínua"?

Na sua procura por uma resposta, utilize estas perguntas como orientação:

  • Pode implementar sem a aprovação dos intervenientes?
  • Os seus requisitos de sistema e de porta permitem a automatização completa?
  • Pode expor os seus clientes a alterações de produção um pouco de cada vez?
  • A sua organização responde rapidamente a erros na produção?

Se respondeu sim a todas as opções, talvez queira considerar praticar a implementação contínua e automatizar completamente a entrega de software, desde a consolidação do código até à produção.

Se respondeu não a alguma das opções, talvez tenha de começar a utilizar a integração contínua e entrega contínua (CI/CD). Irá automatizar a criação de código pronto para produção, o qual está sempre apenas a uma aprovação manual da implementação. A seu tempo, poderá trabalhar rumo à implementação contínua e automatização total do seu processo de entrega de software.

Seja como for, irá obter as vantagens comuns de cada prática:

  • As alterações são automaticamente compiladas, validadas e testadas.
  • O código é sempre implementável: acabou-se a ansiedade do dia de lançamento.
  • Os lançamentos recebem mais rapidamente comentários dos intervenientes e do cliente.
  • Os programadores são mais produtivos com menos tarefas manuais e administrativas.
  • Uma vez que as alterações são pequenas e frequentes, as falhas são raras e criam uma instabilidade mínima.

Ferramentas para integração contínua, entrega contínua e implementação contínua

As equipas de DevOps contam com coleções de ferramentas (séries de programas de desenvolvimento de software ligados) para automatizar a entrega de software. As ferramentas que irá utilizar dependem da prática de automatização que escolher e das fases que essa prática automatiza. Eis alguns exemplos.

Começar a pôr o DevOps em prática no Azure

Descubra ferramentas de entrega contínua e de desenvolvimento contínuo, bem como ferramentas para facilitar outras práticas de DevOps na cloud.