CI/CD na AWS - Integração e entrega contínuas para redes 5G na AWS

CI/CD na AWS

A CI/CD pode ser representada como um pipeline, em que o novo código é enviado em uma extremidade, testado em uma série de estágios (fonte, construção, teste, preparação e produção) e, então, publicado como código pronto para produção.

Um diagrama que descreve um exemplo do pipeline de código da AWS

Visão geral do pipeline de CI/CD

Cada estágio do pipeline de CI/CD é estruturado como uma unidade lógica no processo de entrega. Cada estágio atua como um portão que examina um determinado aspecto do código. À medida que o código avança pelo pipeline, a suposição é que a qualidade do código é maior nos estágios posteriores, porque 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 à equipe, e todas as outras construções e lançamentos serão interrompidos se o software não passar do estágio.

A AWS traz um conjunto completo de ferramentas de desenvolvedor de CI/CD para acelerar o desenvolvimento de software e os ciclos de lançamento. O AWS CodePipeline automatiza as fases de construção, teste e implantação do processo de lançamento sempre que há uma alteração de código, com base no modelo de versão definido. Isso permite a entrega rápida e confiável de recursos e atualizações.

Os pipelines de código podem se integrar a outros serviços. Podem ser serviços da AWS, como o Amazon Simple Storage Service (Amazon S3), ou produtos de terceiros, como o GitHub. O AWS CodePipeline pode resolver uma variedade de casos de uso de desenvolvimento e operação, entre eles:

  • Compilação, construção e teste de código com AWS CodeBuild

  • Entrega contínua de aplicações baseadas em contêiner para a nuvem

  • Validação pré-implantação de artefatos (como descritores e imagens de contêiner) necessários para o serviço de rede ou funções de rede específicas nativas da nuvem

  • Testes funcionais, de integração e de performance para função de rede conteinerizada/função de rede virtual (CNF/VNF), incluindo testes de linha de base e regressão

  • Teste de confiabilidade e recuperação de desastres (DR).

Um diagrama que descreve os componentes do pipeline do AWS CICD

Componentes do pipeline do AWS CICD

A AWS pode configurar pipelines de CI/CD usando as seguintes ferramentas do desenvolvedor da AWS:

A criação de pipeline de CI/CD pode ser automatizada usando AWS CDK e AWS CloudFormation. No domínio NFV, essa automação nativa da AWS pode ser integrada a uma framework de gerenciamento e orquestração (MANO) e à framework de orquestração de serviços do CSP.

Esse processo de CI/CD inclui as seguintes etapas:

  • Configuração de rede: AWS CDK e AWS CloudFormation iniciam a criação dos pré-requisitos de rede:

  • Implantação de infraestrutura: AWS CDK e AWS CloudFormation iniciam a criação das seguintes pilhas de recursos:

  • Implantação da Cloud Network Function (CNF): neste estágio, a CNF é implantada em clusters do EKS usando as ferramentas de chart do Kubectl e do Helm. Essa etapa também implanta todas as aplicações ou ferramentas específicas de que as CNFs precisam para funcionar de forma eficiente (como Prometheus ou Fluentd ). As CNFs podem ser implantadas por meio de funções do Lambda ou com o AWS CodeBuild.

  • Atualizações e implantação contínuas: são uma sequência de etapas executadas iterativamente para implantar alterações que fazem parte das alterações de contêiner/configuração que resultam em atualizações. Semelhante ao caso de implantação das CNFs, as atualizações e a implantação contínuas podem ser automatizadas com o uso dos serviços da AWS, com o acionador do AWS CodeCommit, o Amazon Elastic Container Registry (Amazon ECR) ou um sistema de origem de terceiros, como o GitLab Webhooks .

Um diagrama que descreve o fluxo do pipeline do AWS CICD.

Diagrama de fluxo do pipeline do AWS CICD

O pipeline de CI/CD é criado usando o AWS CodePipeline e utiliza um serviço de entrega contínua que modela, visualiza e automatiza as etapas necessárias para liberar o software. Ao definir estágios em um pipeline, você pode recuperar o código de um repositório de código-fonte, criar esse código-fonte em um artefato liberável, testar o artefato e implantá-lo na produção. Somente o código que passar com êxito por todos esses estágios será implantado. Você também pode adicionar outros requisitos ao seu pipeline, como aprovações manuais, para ajudar a garantir que apenas as alterações aprovadas sejam implantadas na produção.