メインコンテンツに移動

builders.flash

デベロッパーのためのクラウド活用方法

最新のコンテナアプリケーション開発環境でパフォーマンス向上とコスト削減を両立する ~AWS Graviton に対応した CircleCI の CI/CDプラットフォームとは

2022-06-01| 根本 征 (CircleCI 合同会社)

はじめに

自動車や産業用アプリケーションなど、極めて広範な要件をリアルタイム、かつ高水準で処理するワークロードを取り扱う場合、非常に多様な種類のコンピューティングに対応した環境が必要になります。

この記事では、このような多様な種類のコンピューティングに対応したアプリケーションを開発される企業やエンジニアの皆様に向けて、広範囲のワークロードに対応し、最良のコストパフォーマンスを発揮する AWS Graviton プロセッサの利用メリットをご紹介しながら、AWS パートナー CircleCI が提供する CI/CD プラットフォームを活用し、実際にAWS Graviton を搭載した AWS 環境において、どのように CI/CD パイプラインを構築し、コンテナアプリケーション開発における品質と開発スピードの向上を可能にできるのかについて解説いたします。


ツイート » | シェア » | はてブ »

CircleCI による Arm コンピューティングのサポート

クラウドネイティブな CI/CD (継続的インテグレーション・継続的デリバリー) プラットフォームをグローバル展開している CircleCI は、2021 年より、Amazon EC2 に最良の料金とパフォーマンスを提供する AWS Graviton プロセッサに対応しています。詳細は こちら をご覧ください。

ARM ベースの AWS Graviton プロセッサによって、ご自身で CI/CD インフラストラクチャを管理することなく、Arm 向けアプリケーションをビルド・テスト・デプロイすることができます。

始め方

下記のような CircleCI の設定ファイル (.circle/config.yml) を準備することによって、すぐにはじめることができます。

Screenshot of a CircleCI YAML configuration example for ARM build jobs, showing configuration for medium and large ARM resources with Ubuntu 20.04 and sample steps. Includes jobs and workflows sections with commands to run 'uname -a' and echo 'Hello, Arm!'.

CI/CD におけるパフォーマンスの向上

CircleCI では、現在 arm.medium (arm64 アーキテクチャ、2 vCPU、8 GB RAM) と arm.large (arm64 アーキテクチャ、4 vCPU、16 GB RAM) をリソースクラスとしてクラウドで提供しており、上記の CircleCI の設定ファイル (.circle/config.yml) の resource_class に指定することによってご利用していただくことができます。詳細は こちら をご覧ください。Arm プロセッサの普及は急速に進んでおり、Arm コンピューティングの CI/CD を活用することによって、開発者は様々なメリットを受けることができます。1 つは CI/CD におけるパフォーマンスの向上です。Arm コンピューティングを活用することによって、消費電力・コストを抑えたまま、パフォーマンスを向上させることが可能です。これによって、CI/CD におけるビルド・テストの実行パフォーマンスの向上を期待することができます。

AWS Gravion2 との親和性

CircleCI では Arm VM だけでなく、x86_64 ベースのLinux VM も提供しています。

同じ 1 分あたりに消費するクレジット数は同じなので、Arm VM にすることによって

  • ビルド・テストの実行パフォーマンス向上

  • コストパフォーマンス向上

のどちらも期待することができます。

そしてもう 1 つは、AWS Gravion2 との親和性です。

Arm ベースで作られた AWS Graviton2 プロセッサを活用することにより、従来の AWS インスタンスと比べて大幅なコストパフォーマンスの向上を期待することができます。詳細は こちら をご覧ください。

CircleCI の Arm VM も AWS Graviton2 上に構築されており、AWS Graviton2 への Continuous Delivery (継続的デリバリー) をシームレスに実現することが可能です。

また、CircleCI は AWS Graviton2 との親和性の高さを証明する AWS Graviton Ready 認定を取得しました。

AWS Graviton2 との CI/CD ソリューション

前述の通り、AWS Graviton2 プロセッサを活用することにより、従来の AWS インスタンスと比べて大幅なコストパフォーマンスの向上を期待することができます。

AWS Fargate は現在 AWS Graviton2 をサポート しており、コストパフォーマンスを向上させることができます。

また、Amazon EKSにおいても、AWS Graviton2 のインスタンスを利用することが可能です。

これらの AWS Graviton2 を使ったコンテナソリューションを利用するためには、Arm アーキテクチャ向けの Docker イメージをビルドする必要があります。

CircleCI の Arm VM を利用することによって、特別な設定をする必要がなく、Arm アーキテクチャ向けの Docker イメージをビルドすることが可能です。

実際に Honeycomb 社は CircleCI と AWS Graviton2 を採用し、採用した理由について次のように語っています

「AWS Graviton2 とCircleCI を採用することでコストの 50% 削減とパフォーマンス強化を両立できるというなら、もはや賭けではありません。『採用しない理由』を探すのが大変です。」

Screenshot of a CircleCI YAML configuration example for building Docker images on ARMv8 using an Ubuntu 20.04 machine. The script defines jobs and workflows, and includes Docker build and push commands with Japanese comments.

OpenID Connect を使った、AWS へのセキュアなデプロイ

また、CircleCI では 2022 年に OpenID Connect のサポートを開始 しました。 これまでは、CircleCI 経由 で AWS への Continuous Delivery (継続的デリバリー) を実現するためには、CircleCI に AWS の永続的なクレデンシャルを保存する必要がありました。 OpenID Connect を活用することにより、一時的なクレデンシャルのみを使用した認証が可能となり、よりセキュアな CI/CD パイプラインを構築することができます。

Sequence diagram illustrating the steps for authenticating CircleCI with AWS using OIDC, including creating IAM identity provider and role, starting a job that uses a context, and authenticating with AWS using the OIDC token.

aws-cli orb を使った OpenID Connect の認証

CircleCI には とよばれる設定ファイルをパッケージ化、配信、再利用する機能が用意されており、今回の OpenID Connect を使った認証も簡潔に実装することが可能です。

json
version: 2.1

orbs:
  aws-cli: circleci/aws-cli@3.1

jobs:
  aws-cli-example:
    executor: aws-cli/default
    steps:
      - checkout
      - aws-cli/setup:
          profile-name: WEB_IDENTITY_PROFILE
          role_arn: 'arn:aws:iam::123456789012:role/WEB-IDENTITY-ROLE'
          role_session_name: example-session
      - run: echo "Run your code here"

workflows:
  build:
    jobs:
      - aws-cli-example:
          context: aws

まとめ

今回は、CircleCI の Arm サポート × AWS Graviton2 による CI/CD ソリューションや、OpenID Connect を使った、AWS へのセキュアなデプロイについて簡単に紹介しました。

筆者紹介

根本 征
CircleCI 合同会社 Solutions Engineer これまで Software Engineer in Test(SET) や DevOps エンジニアとして、CI / CD や自動テストの導入・改善を行なってきました。
現在は CircleCI や CI / CD 導入における技術的支援を行なっています。
Portrait of a man in a gray shirt with glasses, standing in a casual pose against a white background

今日お探しの情報は見つかりましたか?

ぜひご意見をお寄せください。ページのコンテンツ品質の向上のために役立てさせていただきます