AWS 上の CI/CD - AWS での 5G ネットワークの継続的インテグレーションと継続的デリバリー

AWS 上の CI/CD

CI/CD は、パイプラインとして考えることができます。パイプラインでは、一方の端で新しいコードが引き渡され、一連のステージ (ソース、ビルド、ステージング、本番) でテストされた後、本番環境で使用できるコードとして公開されます。

AWS コードパイプラインの例を示す図

CICD パイプラインの概要

CI/CD パイプラインの各ステージは、デリバリープロセスの論理ユニットとして構造化されています。各ステージは、コードの特定の側面を精査するゲートとして機能します。コードがパイプラインを進むにつれて、より多くの側面が検証され続けるため、後のステージではコードの品質が高くなると想定されます。早い段階で問題が明らかになったコードについては、パイプラインでの進行が停止します。テストの結果は即座にチームに送信され、ソフトウェアがステージを正常に通過しなければ、それ以降のビルドやリリースはすべて停止されます。

AWS は、ソフトウェア開発とリリースサイクルを加速する CI/CD デベロッパーツール一式を提供しています。AWS CodePipeline は、定義されたリリースモデルに基づいて、コードが変更されるたびに、リリースプロセスのビルド、テスト、およびデプロイの各フェーズを自動的に実行します。これにより、機能やアップデートの迅速かつ信頼性の高い配信が可能になります。

コードパイプラインは他のサービスと統合できます。例えば、Amazon Simple Storage Service (Amazon S3) や、GitHub などのサードパーティー製品が対象になります。AWS CodePipeline は、次のようなさまざまな開発および運用のユースケースに対応できます。

  • AWS CodeBuild によるコードのコンパイル、ビルド、テスト

  • クラウドに対する、コンテナベースのアプリケーションの継続的なデリバリー

  • ネットワークサービスまたは特定のクラウドネイティブネットワーク機能に必要なアーティファクト (記述子、コンテナイメージなど) のデプロイ前の検証

  • コンテナ化ネットワーク機能/仮想ネットワーク機能 (CNF/VNF) の機能、統合、およびパフォーマンステスト (ベースラインテストと回帰テストを含む)

  • 信頼性および災害対策 (DR) テスト

AWS CICD パイプラインコンポーネントを示す図

AWS CICD パイプラインコンポーネント

AWS では、次の AWS デベロッパーツールを使用して CI/CD パイプラインをセットアップできます。

CI/CD パイプラインの作成は、AWS CDK および AWS CloudFormation を使用して自動化できます。NFV ドメインでは、この AWS ネイティブオートメーションを MANO (管理およびオーケストレーション) フレームワークと CSP のサービスオーケストレーションフレームワークに統合できます。

CI/CD プロセスには、以下のステップが含まれます。

  • ネットワークのセットアップ – AWS CDK および AWS CloudFormation により、ネットワーク前提条件の作成が開始されます:

  • インフラストラクチャのデプロイ – AWS CDK および AWS CloudFormation により、次のリソーススタックの作成が開始されます:

  • クラウドネットワーク機能 (CNF) のデプロイ – このステージでは、Kubectl および Helm チャートツールを使用して CNF が EKS クラスターにデプロイされます。このステージでは、CNF の効率的な動作に必要な特定のアプリケーションやツール (PrometheusFluentd など) もデプロイされます。CNF は、Lambda 関数または AWS CodeBuild を使用してデプロイできます。

  • 継続的な更新とデプロイ — コンテナ/設定への変更をデプロイしてアップグレードを行うために、反復的に実行される一連のステップです。CNF のデプロイの場合と同様、AWS CodeCommitAmazon Elastic Container Registry (Amazon ECR)、またはサードパーティ製ソースシステム (GitLab Webhooks など) からのトリガーにより、AWS のサービスを使用して継続的な更新とデプロイを自動化できます。

AWS の CICD パイプラインフローを示す図。

AWS の CICD パイプラインフローの図

CI/CD パイプラインは、ソフトウェアのリリースに必要なステップをモデル化、視覚化、自動化する継続的デリバリーサービスを利用して、AWS CodePipeline で構築します。パイプラインでステージを定義することにより、ソースコードリポジトリからコードを取得して、そのソースコードをビルドしてリリース可能なアーティファクトを作成し、アーティファクトをテストして本番環境にデプロイできます。すべてのステージを正常に通過したコードのみがデプロイされます。必要に応じて、承認された変更のみが本番環境にデプロイされるように、手動承認など他の要件をパイプラインに追加できます。