Ferramentas de CI/CD na AWS
Tags: aws, devops, cloud, braziliandevs
Published: 2022-09-16 19:06:39

Nesta série de posts teremos uma visão geral das ferramentas de CI/CD (Continuous Integration e Continuous Delivery) na AWS. Neste primeiro post falaremos sobre os conceitos de CI e CD e como isso pode aumentar a capacidade de uma empresa em fornecer aplicativos e serviços em alta velocidade e melhor qualidade. Também veremos os serviços da AWS para CI e CD.

**CI - Continuous Integration**

Integração contínua é uma prática de desenvolvimento de software onde os desenvolvedores mesclam regularmente suas alterações de código em um repositório central (o famoso merge), após o qual compilações e testes automatizados são executados.

Uma CI ajuda a encontrar e solucionar bugs de maneira mais rápida, melhorar a qualidade do software e reduzir o tempo necessário para validar e lançar novas atualizações do mesmo.

A AWS oferece os seguintes serviços para integração contínua:

- [AWS CodeCommit](https://docs.aws.amazon.com/pt_br/whitepapers/latest/introduction-devops-aws/aws-codecommit.html)
- [AWS CodeBuild](https://docs.aws.amazon.com/pt_br/whitepapers/latest/introduction-devops-aws/aws-codebuild.html)
- [AWS CodeArtifact](https://docs.aws.amazon.com/pt_br/whitepapers/latest/introduction-devops-aws/aws-codeartifact.html)

**CD - Continuous Delivery**

Entrega contínua é uma prática de desenvolvimento de software em que as alterações de código são criadas, testadas e preparadas automaticamente para uma versão de produção.

Um pilar do desenvolvimento de aplicativos modernos, a entrega contínua expande a integração contínua, implantando todas as alterações de código em um ambiente de teste e/ou de produção após o estágio de compilação. Quando implementado corretamente, os desenvolvedores sempre terão um artefato de compilação pronto para implantação que passou por um processo de teste padronizado.

A entrega contínua permite que os desenvolvedores automatizem os testes além de apenas testes de unidade para que possam verificar as atualizações das suas aplicações em várias dimensões antes de implantar nos clientes. Esses testes podem incluir testes de UI, testes de carga, testes de integração, testes de API, etc.

A AWS oferece os seguintes serviços para entrega contínua:

- [AWS CodeBuild](https://docs.aws.amazon.com/pt_br/whitepapers/latest/introduction-devops-aws/aws-codebuild.html)
- [AWS CodeDeploy](https://docs.aws.amazon.com/pt_br/whitepapers/latest/introduction-devops-aws/aws-codedeploy.html)
- [AWS CodePipeline](https://docs.aws.amazon.com/pt_br/whitepapers/latest/introduction-devops-aws/aws-codepipeline.html)

**Um caminho para integração contínua/entrega contínua**

CI/CD pode ser retratado como um pipeline (figura abaixo), onde o novo código é enviado por um lado, testado em uma série de estágios (fonte, compilação, preparação e produção) e, em seguida, publicado como código pronto para produção.

![CI/CD pipeline](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2krcibo6vlir3095j4sd.png)

**O Pipeline CI/CD**

Cada estágio do pipeline de CI/CD é estruturado como uma unidade lógica no processo de entrega. Além disso, cada estágio atua como um portão que verifica um determinado aspecto do código. À medida que o código progride pelo pipeline, supõe-se que a qualidade do código é maior nos estágios posteriores pois mais aspectos dele continuam a ser verificados. Problemas descobertos em um estágio inicial impedem que o código progrida pelo pipeline. Os resultados dos testes são enviados imediatamente para a equipe e todas as compilações e lançamentos posteriores são interrompidos se o software não passar por um determinado estágio.

![Pipeline AWS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cr154rwu8lc15iu8apoq.png)

**Conclusão**

Integração Contínua e Entrega Contínua fornecem um cenário ideal para o time de desenvolvimento dentro de uma empresa. Seus desenvolvedores simplesmente enviam o código para um repositório. Esse código será integrado, testado, implantado, testado novamente, mesclado com a infraestrutura, passará por análises de segurança e qualidade e estará pronto para ser implantado com uma confiança extremamente alta.

Quando o CI/CD é usado, a qualidade do código é melhorada e as atualizações de software são entregues de maneira mais rápida e com alta confiança de que não haverá alterações significativas.

Espero que tenham gostado e até a próxima!