AWS의 CI/CD - AWS 기반 5G 네트워크를 위한 지속적 통합 및 지속적 전달

AWS의 CI/CD

CI/CD는 새 코드가 한쪽 끝에서 제출되고 일련의 단계(소스, 구축, 테스트, 스테이징 및 프로덕션)에 걸쳐 테스트된 후 프로덕션에서 즉시 사용 가능한 코드로 게시되는 파이프라인으로 나타낼 수 있습니다.

AWS 코드 파이프라인의 예를 보여 주는 다이어그램

CI/CD 파이프라인 개요

CI/CD 파이프라인의 각 단계는 전달 프로세스에서 논리적 단위로 구성됩니다. 각 단계는 코드의 특정 측면을 확인하는 게이트 역할을 합니다. 파이프라인을 통해 코드가 진행됨에 따라 코드의 더 많은 측면이 계속 검증되기 때문에 이후 단계로 갈수록 코드의 품질이 더 높다고 가정합니다. 초기 단계에서 문제가 발견되면 코드가 파이프라인을 통해 진행되지 않습니다. 테스트 결과는 즉시 팀으로 전송되며 소프트웨어가 단계를 통과하지 못하면 이후의 모든 구축 및 릴리스가 중지됩니다.

AWS는 완전한 CI/CD 개발자 도구 세트를 제공하여 소프트웨어 개발 및 릴리스 주기를 가속화합니다. AWS CodePipeline은 정의된 릴리스 모델을 기반으로 코드가 변경될 때마다 릴리스 프로세스의 구축, 테스트 및 배포 단계를 자동화합니다. 따라서 기능 및 업데이트를 빠르고 안정적으로 제공할 수 있습니다.

코드 파이프라인을 다른 서비스와 통합할 수 있습니다. Amazon Simple Storage Service(Amazon S3)와 같은 AWS 서비스나 GitHub와 같은 서드 파티 제품을 예로 들 수 있습니다. AWS CodePipeline은 다음과 같은 다양한 개발 및 운영 사용 사례를 처리할 수 있습니다.

  • AWS CodeBuild를 사용하여 코드 컴파일, 구축 및 테스트

  • 컨테이너 기반 애플리케이션을 클라우드에 지속적 전달

  • 네트워크 서비스 또는 특정 클라우드 네이티브 네트워크 기능에 필요한 아티팩트(예: 설명자 및 컨테이너 이미지)의 배포 전 검증

  • 기준 및 회귀 테스트를 포함한 컨테이너식 네트워크 기능/가상 네트워크 기능(CNF/VNF)에 대한 기능/통합/성능 테스트

  • 안정성 및 재해 복구(DR) 테스트

AWS CI/CD 파이프라인 구성 요소를 보여 주는 다이어그램

AWS CI/CD 파이프라인 구성 요소

AWS는 다음 AWS 개발자 도구를 사용하여 CI/CD 파이프라인을 설정할 수 있습니다.

AWS CDKAWS CloudFormation을 사용하여 CI/CD 파이프라인 생성을 자동화할 수 있습니다. NFV 도메인에서 이 AWS 네이티브 자동화를 관리 및 오케스트레이션(MANO) 프레임워크와 CSP의 서비스 오케스트레이션 프레임워크에 통합할 수 있습니다.

CI/CD 프로세스는 다음 단계로 이루어집니다.

  • 네트워크 설정 - AWS CDK와 AWS CloudFormation이 네트워크 필수 구성 요소의 생성을 시작합니다.

  • 인프라 배포 - AWS CDK와 AWS CloudFormation이 다음 리소스 스택의 생성을 시작합니다.

  • 클라우드 네트워크 기능(CNF) 배포 - 이 단계에서는 CNF가 Kubectl 및 Helm 차트 도구를 사용하여 EKS 클러스터에 배포됩니다. 또한 이 단계에서는 CNF가 효율적으로 작동하는 데 필요한 특정 애플리케이션 또는 도구(예: Prometheus 또는 Fluentd)를 배포합니다. CNF는 Lambda 함수를 통해 배포하거나 AWS CodeBuild를 통해 배포할 수 있습니다.

  • 지속적 업데이트 및 배포 - 컨테이너의 일부 변경 사항 및 구성 변경 사항을 배포하기 위해 반복적으로 수행되는 일련의 단계이며 그 결과로 업그레이드가 수행됩니다. CNF 배포 사례와 마찬가지로 AWS CodeCommit, Amazon Elastic Container Registry(Amazon ECR) 또는 GitLab 웹후크와 같은 서드 파티 소스 시스템의 트리거와 함께 AWS 서비스를 사용하여 지속적 업데이트 및 배포를 자동화할 수 있습니다.

AWS CICD 파이프라인 흐름을 보여 주는 다이어그램

AWS CI/CD 파이프라인 흐름도

CI/CD 파이프라인은 AWS CodePipeline을 사용하여 구축되며 소프트웨어 릴리스에 필요한 단계를 모델링, 시각화 및 자동화하는 지속적 전달 서비스를 활용합니다. 파이프라인에 단계를 정의하면 소스 코드 리포지토리에서 코드를 검색하고, 해당 소스 코드를 릴리스 가능한 아티팩트로 구축하고, 아티팩트를 테스트하고, 프로덕션에 배포할 수 있습니다. 이러한 모든 단계를 성공적으로 통과한 코드만 배포됩니다. 필요한 경우 수동 승인과 같은 다른 요구 사항을 파이프라인에 추가하여 승인된 변경 사항만 프로덕션에 배포할 수 있습니다.