Automatizando Deployments com o AWS Code Deploy

Um dos maiores temores dos desenvolvedores é o momento em que ocorrem problemas após a alteração do código da aplicação ou em alguma atualização do ambiente, deixando a aplicação fora do ar. E ainda, a insana corrida para restaurar a aplicação novamente, o famoso rollback.

Daí você se pergunta: “como posso fazer para automatizar o processo de lançamento de versões de forma segura, disponível e confiável, sem me preocupar com possíveis falhas manuais? “

Neste artigo iremos abordar como podemos implementar entrega contínua de forma centralizada, com segurança e com mínimo tempo de downtime com o serviço AWS CodeDeploy.

 

O AWS CodeDeploy

O AWS CodeDeploy é um serviço escalável que deixa mais fácil, e rápido, o lançamento de novas versões de suas aplicações, automatizando as implementações do código em quaisquer servidores, estejam eles ou não na nuvem da AWS. Acho isso bem legal, pois você pode ter workloads em sua intranet, onde esse serviço pode ser utilizado para tarefas que demandariam alguns preciosos minutos dos desenvolvedores.

Isso faz com que evite tempo de indisponibilidade quando ocorre uma implantação ou atualização de suas aplicações, descartando a necessidade de haver operações manuais sujeita a possíveis erros.

O AWS CodeDeploy é integrado com alguns outros serviços da AWS, com o Amazon S3, para armazenamento de objetos, e o Amazon EC2, serviço de computação que gerencia as instâncias. O interessante neste serviço é que você não paga nada para utilizá-lo, isso porque ele depende de recursos já utilizados por outros serviços ou recursos de hardware presentes on-premise e em datacenters.

 

Como o AWS CodeDeploy pode se integrar com outros serviços e ferramentas

A nuvem da AWS possui uma grande variedade de serviços que se integram ao CodeDeploy, fazendo com que o processo de atualização e lançamento de seus novos códigos sejam feitos da melhor maneira possível. Como dito anteriormente, o AWS CodeDeploy trabalha diretamente com o serviço Amazon EC2, podendo ser utilizada toda a estrutura que este serviço oferece, como o Elastic Load Balancer, balanceando o tráfego das requisições entre as instâncias e o AutoScaling, que te ajuda a manter a disponibilidade de sua aplicação, escalonando novas instâncias de acordo com a demanda de recursos.

Além dos serviços da AWS, o AWS CodeDeploy pode ser usado com ferramentas de integração e distribuição contínua, como o Jenkins,Travis CI, GitHub, entre outros. Isso sem falar em ferramentas de gerenciamento de configuração, que oferece aos profissionais de TI a capacidade de automatizar todo o processo de configuração da infraestrutura. Ferramentas de gerenciamento com Ansible, Chef, Puppet e SaltStack facilitam a instalação e atualização de pacotes em servidores. Desta maneira você possui diversas formas de implementar um modelo de integração contínua com as ferramentas mais utilizadas no mercado.

 

Aplicando deployments e atualizações contínuas

 O AWS CodeDeploy foi desenvolvido pensando em facilitar todo o seu processo de atualizações de código da sua aplicação e também em novos deployments de versão. Isso faz com que você não tenha seu ambiente fora do ar nestes momentos de instabilidades durante a execução do deploy. O processo de atualização é feito inicialmente em um grupo de instâncias presentes no ambiente, onde estas instâncias são totalmente isoladas do ambiente de produção sem interferir nas instâncias que estão recebendo as requisições.

Antes de voltar ao ambiente produtivo, o serviço monitora se sua aplicação foi atualizada com sucesso nas instâncias. Depois que todas as checagens forem finalizadas, as instâncias voltam a receber os acessos e todo o processo será executado novamente em outro grupo de instâncias. Você, podendo automatizar todas essas atualizações em sua aplicação, evita possíveis interrupções nos acessos se executar todo esse processo manualmente.
No diagrama abaixo é exibido como sua aplicação pode ser atualizada no AWS CodeDeploy. Veja como o fluxo do deployment utiliza, além dos próprios serviços da AWS, ferramentas de terceiros que te ajudam a versionar seu código.CodeDeployFlowDiagram_Easy-Resize.com

 

Para gerenciar o ambiente, o AWS CodeDeploy utiliza um agente que é instalado diretamente dentro das instâncias, manualmente ou através das ferramentas de gerenciamento mencionadas anteriormente. Esse agente interage com o serviço executando scripts e enviando informações do status do deployment, logs dos eventos e utilização dos recursos, onde você pode acompanhar tudo através do console de gerenciamento. Essa instalação pode ser feita manualmente ou através de ferramentas de gerenciamento

 

Monitore o status e o que foi lançado em seu ambiente

Para manter o ambiente sempre disponível, o AWS CodeDeploy monitora o sucesso destas implementações em várias instâncias. Imagine que sua equipe de desenvolvedores identificou um problema no código e que será necessário parar o deployments da aplicação antes que seja finalizado e inserido em produção. Você pode cancelar o processo durante a atualização de maneira simples, rápida e segura, através de chamadas de API, SKDs ou até mesmo pelo AWS Console, sem qualquer interrupção no acesso da aplicação.

Ter um histórico das versões que foram lançadas no ambiente é uma forma de ter controle do que está ocorrendo nele. Isso é muito recomendado, além de necessário. O AWS CodeDeploy também armazena históricos de cada implementação feita em seu ambiente, sendo possível você visualizar quais versões foram implantadas. Você também pode usar este histórico para investigação de eventos ocorridos nas implementações anteriores, visualizando sucessos e erros do deployments das versões.

 

Conclusão

O serviço AWS CodeDeploy te proporciona a grande vantagem de ser útil dentro e fora da AWS, podemos automatizar a atualização e o lançamento de novos códigos em ambientes híbridos. Isso torna o serviço ainda mais atrativo, pois te ajuda a manter um ambiente altamente disponível e confiável, integrando outras diversas ferramentas de entrega contínua mais utilizadas no mercado.

Nosso time possui profissionais capacitados para lhe apoiar na implementação deste ambiente em seu negócio, além de oferecer as melhores práticas para que você utilize o AWS CodeDeploy com todas as vantagens oferecidas pelo serviço.

 

Categoria: