Confira a segunda parte do artigo sobre Processo de Integração e Deploy Contínuo na AWS. Escrito por Gabriel Azevedo

Abaixo, segue um tutorial simples e eficaz de como realizar esta arquitetura na sua rede AWS.
Hands On!
Para começarmos, será necessário criarmos duas IAM Roles:
• IAM role para o CodeDeploy realizar o deploy na EC2 instance;
• IAM role para a EC2 acessar o S3.

1° CodeDeployRole:

– Vá até o seu console da AWS e entre no serviço do IAM:

– Após acessar o serviço do IAM, clique em Roles:

– Agora, clique em Create Role:

– Selecione o serviço do CodeDeploy:

– Selecione o Case do CodeDeploy e depois clique para adicionar as permissões:

– Selecione AWSCodeDeployRole e clique em Next:

– Dê um nome a sua Role e clique em Create Role:
https://www.darede.com.br/wp-content/uploads/2020/04/24140109/Processo-de-Integra%C3%A7%C3%A3o-e-Deploy-Cont%C3%ADnuo-na-AWS-7.png

– A regra foi criada com sucesso:

2° S3 Role:

Agora faremos um processo parecido com o anterior, porém, agora selecionaremos o serviço de EC2.

– Clique novamente em Create Role depois, selecione EC2:

Clique em Next.
– Nas permissões, selecione AmazonS3ReadOnlyAccess:

Clique em Next.
– Agora, dê um nome para role que acabamos de criar:

– Clique em Create role.

3° Vamos criar uma instância EC2 que receberá o deploy.

Para que funcione perfeitamente, será necessário utilizarmos o CodeDeploy Agent na máquina:
– Primeiro, vamos criar uma instância. Acesse o Painel EC2 > Instances e vá em Launch Instance:

– Neste tutorial, iremos utilizar um Amazon Linux:

– Agora, selecione a instância do tipo t2.micro:

Clique em Next.
– Agora, selecione sua VPC, sua Subnet e Auto-assign Public IP deixe como Enable.

– Na parte do IAM Role, selecione a role que criamos para a EC2:

– Mais pra baixo, desça até a parte do Advanced Details, mais precisamente na parte do User data e cole o seguinte código:
#!/bin/bash
yum -y update
yum install -y ruby
yum install -y aws-cli
cd /home/ec2-user
aws s3 cp s3://aws-codedeploy-us-east-1/latest/install . –region us-east-1
chmod +x ./install
./install auto

Para saber mais sobre User data, clique aqui.

Deve ficar algo parecido com isto:

Lembrando que, os valores das regiões estão de acordo com a região que estou trabalhando, neste caso North Virginia (EUA).

Clique em Next.
– Na próxima página, referente ao volume, não será necessária nenhuma alteração, é o suficiente para realizarmos este tutorial.
Clique em Next.
– Na parte das TAGS, iremos adicionar a tag Name, para que possamos identificar a máquina no painel das instâncias:

Chave: Name
Valor: EC2-CodeDeploy
– Agora, parte dos Security Group’s, selecione as opções de liberação para SSH e HTTP. Na parte do Source selecione My IP. Deve ficar algo assim:

Clique em Next.
– Confirme todas as informações e clique em Launch. Selecione uma chave. pem que você tenha acesso e finalize o processo de criação.

4° Após a máquina estar com o Estado Running, acessa-a via SSH.

Neste procedimento, estou usando o PuTTY, caso queira saber mais, clique aqui.

– Após acessar a máquina via SSH, vamos validar se o CodeDeploy Agent está instalado:

Rodando como o esperado.

– Agora, nós iremos criar os arquivos necessários para o deploy funcionar.

– Entre no /tmp da máquina:

– Crie uma pasta para receber os arquivos:

– Rode o seguinte comando:
url -O http://s3.amazonaws.com/aws-codedeploy-us-east-1/samples/latest/SampleApp_Linux.zip

– Descompacte o arquivo:

– Delete o arquivo .zip:

– Digite os seguintes comandos de acordo com a documentação do Github:
git init
git add .
git commit -m “first commit”
git remote add origin git@github.com:YOUR_USERNAME/YOUR_REPOSITORY.git
git push -u origin master

5° Agora, iremos criar a parte do CodeDeploy.

– Acesse a console da AWS e filtre pelo serviço do CodeDeploy:

– Após acessar o serviço, clique em Applications:

– Clique em Create Application:

– Dê um nome para sua aplicação e selecione a plataforma EC2:

Clique em Create Application.
– Depois que criamos a aplicação, é necessário criamos o grupo de depoloy (Deployment group), onde nós apontamos para onde deve ser direcionado o deploy. Clique em Create Deployment Group:

– Dê um nome para seu grupo de deploy:

– Seleciona a role criamos no primeiro passo:

– Na parte de configuração do ambiente, é onde selecionamos para qual recurso iremos apontar o deploy, neste caso, utilizaremos o TAG Name da EC2 para identificarmos o recurso:

– Nas configurações de deploy (Deployment settings), deixe esta configuração:


– Como neste caso não temos Load Balancer nesta arquitetura, podemos desabilitar esta opção:

Clique em Create Deployment Group.

6° Com essas configurações feitas, podemos testar o deploy de forma manual:

– Para isso, entre no deployment group que acabamos de configurar. Este é o caminho:

– Após acessar, clique em Create deployment:

– Selecione a opção que sua aplicação está no Github. Depois dê um nome à sua conexão com o git e clique em Connect to GitHub:


– Será aberto um pop-up solicitando autorizar a integração:

Pode confirmar a integração entre as plataformas.
– Deverá aparecer algo parecido com isto em sua tela:

– Preencha os dados com o nome do repositório e o ID do commit, gerado pelo passo quatro que fizemos:


A tela deverá ficar assim:

O nome do repositório deve ter o seguinte formato: “GITHUB_USERNAME/REPOSITORY_NAME”
– Dê uma descrição ao seu deployment:

– No final da página clique em Create Deployment.

Após isso, podemos notar que a estrutura está funcional e operando:

7° Agora, iremos usar o recurso do CodePipeline para automatizar todo este processo de deploy sempre que houver alterações no repositório:

– Entre no serviço do CodePipeline:

– Depois clique em Create Pipeline.
– Dê um nome para sua pipeline:

Clique em Next.
– Agora no Source selecione GitHub:

– Clique em Connect to GitHub:

– Forneça acesso ao CodePipeline:

– Selecione o repositório:

– Também selecione a Branch:


– Usaremos os webhooks padrões do GitHub:

Clique em Next.
– Neste tutorial, não será necessário utilizarmos o codebuild, então podemos pular esta parte. Clique em Skip build stage:

– Seguindo, escolha o provedor de deploy (Deploy provider) o CodeDeploy que já está devidamente configurado:

Selecione a região e as outras duas informações que criamos nos passos anteriores, na configuração do CodeDeploy:

Clique em Next.
– Agora revisando as informações, desça até o final da página e clique em Create Pipeline.

– Note, que a Pipeline rodou perfeitamente e já fez o deploy automático do último commit utilizado no repositório:

8° Para validar o sucesso do deploy, vá até o painel das Instâncias EC2 e procure a instância que criamos neste tutorial:


– Procure pelo campo Public DNS(IPv4):

Copie este valor.
– Abra uma nova guia e acesse este endereço.
Será exibida uma tela como essa:

9° Agora, nós iremos validar o funcionamento do deploy automatizado.

Iremos fazer uma modificação qualquer no código, iremos realizar o push para o GitHub e a alteração será automaticamente aplicada na instância EC2.
– Acesse a máquina Linux e abra o arquivo .html com seu editor de texto favorito:

Neste caso, usei o VIM para editar o arquivo.
– Após abrir o arquivo, editei a cor de fundo da página:
Antes:

Depois:

– Depois de alterado, vamos commitar as alterações:

– Agora nos resta realizar o push:

Coloque suas credenciais e finalize o processo.
– Acessando as pipelines, é possível ver o deploy funcionando automaticamente:


– Volte na página web que abrimos anteriormente e dê um F5, note que a cor da página mudou:

Bom, finalizamos por aqui nossa configuração de CI/CD de uma forma simples e eficaz.

OUTRAS PUBLICAÇÕES

Novidades da Semana – 17 a 21 de maio

Por Cassius Oliveira Todos os dias a AWS lança uma série novidades e atualizações em seus produtos que visam melhorar a vida de seus usuários. Reunimos algumas delas que fazem mais sentido para nosso mercado e que certamente aplicaremos em nosso dia a dia. Confira as novidades das últimas semanas. Sergurança & Governcança AWS Control Tower – Nova versão v2.1 do Costumizations for AWS Control Tower O Costumizations for AWS Control Tower é uma implementação de referência que facilita a criação das suas próprias proteções e integrações com o serviço AWS Control Tower. E anunciou sua nova versão v2.1 que adicionou mais otimizações de escalabilidade e melhorou sua compatibilidade com AWS CodeBuild. Amazon RDS – Data API com suporte a FIPS 140-2 O Amazon RDS Data API agora oferece suporte a endpoints validados para FIPS 140-2 (Federal Information Processing Standard). AWS Premium Support – Lançamento de runbooks de fluxo de trabalho de automação de suporte (SAW) O AWS Premium Support lançou runbooks de fluxos de trabalho de automação de suporte (SAW) para permitir o diagnóstico de autoatendimento e a correção para clientes da AWS. Compute AWS Compute Optimizer – Suporte a recomendações do Amazon EBS e do AWS Lambda O AWS Compute Optimizer agora oferece suporte à exportação de volume do Amazon EBS e recomendações de tamanho de memória de função AWS Lambda como arquivos csv para o Amazon S3. AWS License Manager – Recurso que fornece relatórios de uso de licenças O AWS License Manager agora permite a obtenção de snapshots periódicos de seu uso de licença em todas as suas contas AWS, armazenando esses relatórios diretamente em seu bucket do S3. A partir disso é possível utilizar esses relatórios para rastrear o uso histórico, gerenciar a conformidade e reduzir os gastos com licenciamento, contabilizando o uso máximo da licença. AWS Application Cost Profiler – Novo serviço A AWS anunciou o AWS Application Cost Profiler, um novo serviço gerenciado que permite visualizar o custo distribuído dos recursos da AWS para aplicações de software compartilhadas por vários usuários. Amazon EKS – Add-Ons suporta CoreDNS e kube-proxy O Amazon EKS adicionou o recurso de instalar e gerenciar as ferramentas CoreDNS e kube-proxy dentro de sua console, além do suporte para o plugin do Amazon VPC CNI. Assim facilitando a definição de clusters consistentes do Kubernetes e de sua atualização através do EKS. Amazon EMR on EKS – Disponível em São Paulo O Amazon EMR on EKS é uma ferramenta que permite automatizar o provisionamento e gerenciamento de grandes estruturas de dados Open-Source no EKS e agora está disponível na região de São Paulo. Analytics Amazon Cloudwatch – Application Insights com suporte a monitoramento de containers O Amazon Cloudwatch Application Insights anunciou a possibilidade monitorar suas aplicações do Amazon ECS, Amazon EKS e do Kubernetes on EC2, assim permitindo adicionar recursos como alarmes, além de coletar métricas, telemetria, dentre outras ferramentas de monitoramento do funcionamento de aplicações que rodam em containers na AWS. Amazon EventBridge – Suporte para compartilhamento de eventos entre barramentos na mesma conta ou região O Amazon EventBridge agora pode ser configurado para enviar e receber eventos entre barramentos na mesma conta e região da AWS, para assim ser possível agregar todos os seus eventos de diferentes barramentos em um único recurso. AWS Step Functions – Suporte a eventos personalizados para o Amazon EventBridge O AWS Step Functions agora oferece suporte para integração com o Amazon EventBridge, assim possibilitando o envio de eventos personalizados de fluxos de trabalhos para um barramento de eventos do EventBridge sem escrever código personalizado. Database & Operations Amazon DynamoDB – Global Tables com suporte a AWS CloudFormation O Amazon DynamoDB Global Tables, agora oferece suporte a AWS CloudFormation, o que permite criar tabelas globais e gerenciar sus configurações com modelos do CloudFormation. AWS Load Balancer – Nova versão 2.2 do Controller O AWS Load Balancer Controller lançou uma nova versão que suporta a segmentação de instâncias de NLB. AWS CloudFormation – Guard 2.0 com disponibilidade geral O AWS CloudFormation anunciou disponibilidade geral da ferramenta Guard 2.0. Assim tornando o Guard uma ferramenta de avaliação de políticas como código de uso geral. AWS App Runner – Novo recurso A AWS anunciou o AWS App Runner um novo serviço de aplicações de container totalmente gerenciado que torna mais fácil para os clientes, sem qualquer contêiner anterior ou experiência em infraestrutura, criar, implantar e executar APIs e aplicações da Web em contêineres, em apenas alguns cliques. Amazon EKS – Suporte para versão 1.20 do Kubernetes O Amazon EKS e EKS Distro agora oferece suporte para a versão 1.20 do Kubernetes, o que incluem os recursos RuntimeClass e Limites de ID do processo atingindo o status estável, prioridade e imparcialidade de API sendo ativada por padrão e kubectl debug atingindo o status beta. AWS Copilot – Versão 1.7 com suporte para o AWS App Runner O AWS Copilot anunciou a disponibilidade geral da versão 1.7, o que permite implantar facilmente serviços da Web baseados em solicitações com o AWS App Runner além do Amazon ECS. AWS Amplify – Hosting com suporte a SSR O AWS Amplify Hosting agora oferece suporte à implantação e à hospedagem de aplicações renderizadas do lado do servidor (SSR) criados com a estrutura Next.js com configuração zero. AWS Application Migration Service – Disponível A AWS anunciou a disponibilidade geral, um novo serviço que permite que as organizações movam aplicações para a AWS sem fazer alterações nas aplicações, em sua arquitetura ou nos servidores migrados. Outros AWS Elemental MediaConnect – Suporte a CDI e JPEG XS O AWS Elemental MediaConnect agora oferece suporte a AWS CDI o que permite criar fluxos de trabalho de vídeo não compactados na Nuvem AWS, além de suportar a entrada e saída de vídeos JPEG XS. Amazon EC2 – Auto Scaling apresenta novo recurso O Amazon EC2 Auto Scaling apresentou um novo recurso, o Preditive Scaling, o que permite dimensionar de forma proativa seu grupo de Auto Scaling, preparando-o para demandas futuras. Amazon Elasticsearch Service – Novo nível de

Microsserviços

Conforme o uso de cloud computing começa a se popularizar, obtemos arquiteturas cada vez mais complexas, gerando a necessidade de atualizações frequentes e ágeis, por isso o conceito de microsserviços se tornam uma boa opção para se construir um ambiente em cloud. E essa abordagem tem se consolidado como o preferido entre as empresas de tecnologia, uma vez que de acordo com pesquisa da Kong, 84% das organizações entendem que arquiteturas em microsserviços representam um novo paradigma ao desenvolver aplicações e as utilizam em seus ambientes em cloud. Mas, o que são microsserviços? Imagine um quebra-cabeças. E cada peça é construída por pequenas equipes e de forma independente. Mas que juntas elas formam um conjunto unificado. Os microsserviços funcionam praticamente dessa forma. Eles são uma abordagem de arquitetura em que são realizados pequenos serviços de forma autônoma, mas que se comunicam entre si através de APIs ou outras tecnologias. A arquitetura baseada em microsserviços, podem trazer escalabilidade para o ambiente, entregas contínuas, resiliência, além oferecer a capacidade de desenvolver aplicações com maior velocidade, e tirar proveito dos constantes avanços tecnológicos. Confira nossos especialistas falando sobre o conceito de microsserviços Microsserviços X Monolito A arquitetura monolítica é uma forma mais tradicional de desenvolver aplicações, pois ela trabalha em apenas um monolítico executável, ou seja, ao contrário da arquitetura em microsserviços, a equipe de TI trabalha em um processo único em que diversos módulos do sistema são executados em uma mesma máquina, assim compartilhando recursos de processamento, memória, bancos de dados e arquivos. Essa característica não anula a capacidade de se obter um ambiente totalmente escalável, porém neste caso toda a arquitetura será escalada. Mas as dependências de processos comprometem a disponibilidade de arquiteturas monolíticas, bem como um maior impacto no sistema em casos de falhas. Com uma arquitetura em microsserviços é construída em blocos independentes podendo ser executados de forma autônoma. Fazendo com que possam ser corrigidos em casos de falhas de forma isolada e escalados do mesmo jeito em picos de demanda, assim trazendo flexibilidade de redução de custos para o ambiente. A partir da comunicação via APIs ou desacoplamento, a arquitetura de microsserviços também pode ser reaproveitada em múltiplas aplicações. Como pode ser visto na imagem a seguir: Assim como apresentada na imagem acima enquanto a arquitetura monolítica trabalha com todos os serviços em um único processo, os microsserviços podem ser divididos em diversos serviços e pequenas equipes de forma que facilite o desenvolvimento de uma aplicação em cloud. Também é importante ressaltar que após anos de uso de arquiteturas com microsserviços, foram desenvolvidas uma série de boas práticas sobre como devemos implementá-las, por isso é imprescindível buscar um parceiro como a Darede que pode lhe guiar nesse universo. Acompanhe outros artigos sobre o mundo da TI no blog da Darede!

Nós usamos cookies para garantir e oferecer a melhor experiência de navegação em nosso site! Mais informações