Continuous Operation - a evolução do Continuous Delivery.
Continuous Operation – a evolução do Continuous Delivery…
O Continuous Delivery ou entrega contínua é algo desejável para qualquer negócio. Ter entregas de novas funcionalidades a todo...
View posts by Dextra
Somos especialistas em desenvolvimento de software sob medida para negócios digitais. Pioneiros na adoção de metodologias de gestão ágil, combinamos processos de design, UX, novas tecnologias e visão de negócio, desenvolvendo soluções que criam oportunidades para nossos clientes. A Dextra faz parte da Mutant, empresa B2B líder no mercado brasileiro e especialista em Customer Experience para plataformas digitais.
O Continuous Delivery ou entrega contínua é algo desejável para qualquer negócio. Ter entregas de novas funcionalidades a todo momento acompanhando as constantes mudanças do mercado é algo que gera valor para o software disponibilizado, tornando-o mais competitivo. Do outro lado, ter um ambiente disponível e sem erros a todo momento é tão importante quanto as entregas de novas funcionalidades.
CASO 1: Um ambiente cheio de falhas porém sempre atualizado (continuous delivery) com as novas "funcionalidades".
CASO 2: Um ambiente extremamente estável porém com um processo extremamente rígido para lançar uma nova versão .
Vejo que temos problemas nos dois cenários, certo? Nenhum deles atenderia as necessidades de uma empresa e nem dos usuários finais. Para ilustrar, vou aplicar os cenários acima em um E-commerce:
No primeiro caso, você perderia vários clientes. Quando ocorre um erro, ainda mais em sistemas de compras, muitas pessoas desistiriam da aquisição e iriam para o fornecedor vizinho.
Já no segundo caso você deixaria de ser competitivo, pois sem versões atualizadas e novas funcionalidades, você perderia o time-to-market. Ou seja, sem novas funcionalidades teríamos algo mais atrativo no vizinho.
Mas, os dois cenários acima podem representar uma falsa dicotomia: podemos sim, ter um ambiente atualizável e com indisponibilidade zero ou perto disso. Existem várias implicações para que isso ocorra. Seguem algumas:
1. Infraestrutura Cara
Teríamos que ter uma estrutura de chaveamento muito rápido para termos um ambiente com indisponibilidade perto de zero para lançamento de novas versões. Cloud Computing torna-se uma ótima alternativa para atingir a agilidade para realizar os chaveamentos sem a necessidade de ter um alto custo com infraestrutura.
2. Automação de Testes Efetivo
Manter trilhas de testes atualizadas e condizentes as novas funcionalidades do sistema, garantindo a qualidade da versão que entrará em produção
3. Gestão de Equipe DevOps
Alta integração entre equipes de Desenvolvimento e Operações para criação e gestão dos ambientes, visando respostas rápidas ao negócio
4. Automação Total
É caro fazer as coisas na "mão" tira o foco das equipes envolvidas, por isso automação de processos rotineiros é de extrema importância. Utilizar ferramentas como Chef, Puppet, Jenkins, Git, entre outros, torna-se vital para atingir a agilidade necessária para o ambiente de entrega contínua.
A entrega contínua é só uma parte do processo a ser realizado. O maior desafio está na evolução do processo, através do chamado Continuous Operations.
O Gartner define Continuous Operation como "um sistema em operação que tem como característica a redução ou eliminação de tempo de inatividade planejada, como, por exemplo, uma manutenção programada. Um sistema "no ar" 24 horas por dia, sete dias por semana".
Conseguimos alcançar o que chamamos de Operações Contínuas quando há alterações no software e os usuários finais não são prejudicados. Um software ou servidor é tirado do ar durante uma manutenção e são aplicadas técnicas de operações para que os clientes continuem sendo atendidos por versões anteriores ou são transferidas para a versão mais recente do software, sem que a operação pare ou que que eles se sintam impactados.
Ou seja, com a aplicação do conceito de operação contínua, as empresas conseguem gerar de fato valor para o negócio. Conseguem ter um ambiente estável, atualizável rapidamente, com qualidade e disponibilidade a todo momento para seus usuários finais.