AWS re:Invent にて、コンテナに関わる新機能の発表がありました。

AWSの開催する「AWS re:Invent」にて12月4日、コンテナに関する4つの新機能が発表されました。

昨今のサービス開発においてはコンテナ技術を使った開発が当たり前となり、それらに関する新しい知識を身につけることは新規事業から既存のサービスの運用まで、幅広く活用することができます。

今回の記事ではそのうち、より基礎的な「AWS Proton」と「ECR Public」について紹介します。AWSをインフラとして活用する上で、実際にどのような活用方法があるか考えてみましょう。

AWS Protonとは

AWS Protonは公式サイトで「コンテナおよびサーバーレスデプロイメント向けの管理の自動化」をキャッチフレーズにしている通り、AWS上で稼働するEC2, Fargate, Lambda等のアプリケーションに対するインフラの構築を高度に抽象化して、より安全にアプリケーションを取り巻く環境を構築・運用するためのツールとなります。

とはいえ、「これ単体で何かが出来る」というサービスでもなく、パブリックプレビューという事もあって公式に資料も少なく、実際に商用として利用できるような状態ではありません(2020年12月現在)。

ただ、恐らく正式リリースと大きな差は無いので「触って試す」事は出来る状態となっています。

AWS Protonで出来ること

AWS Protonはインフラ〜アプリケーション環境までをコードベースで管理して、特に管理が複雑化しがちなCloudformationを内包した設定ファイル群などを「環境テンプレート」と「サービステンプレート」と呼ばれるテンプレートとして定義して、AWSのインフラ全体の環境を維持できるような仕組みになっています。

Protonの特徴

Protonは「プラットフォームチーム」と「デベロッパーチーム」の2つのチームにサービスの管理を分割するためにサービスが整備されています。

  • デベロッパーポータル
    • サービスをデプロイできる環境としてProton経由からデプロイできるための、カスタマイズ可能なインターフェイスウィザードが利用可能
  • 合理化されたアップグレード
    • バージョニングインフラストラクチャテンプレートをサポートし、デベロッパーに自動アップグレードを提供します
  • 統合
    • CloudformationやClodwatch等を含めてAWSのサービス全体をまとめて管理し、それらのツールと統合して監視業務を効率的に行えるようです
  • テンプレート管理
    • Infrastructure as Code (IaC)を管理するための独自のテンプレートによって環境のプロビジョニングを行えます
  • 自動デプロイ
    • Protonによって定義された環境によって、CI/CDのフローをデベロッパーチームから見て抽象化されたものになり、より開発に集中できるようになるようです

Protonはパブリックプレビューということもあり、肝心の「環境テンプレート」「サービステンプレート」に関するノウハウやテクニックが少ないですが、実際にパブリックプレビューとしてFargateを起動するための環境・サービステンプレートが用意されています。

https://github.com/aws-samples/aws-proton-sample-templates/tree/main/loadbalanced-fargate-svc

このサンプルのテンプレートを見ると簡単なFargate+ロードバランサーの構成を作るためのテンプレートのようで、これと合わせてDockerのコンテナ上で動くアプリケーションを準備すればProtonでCI/CD環境を構築できるようになります。

図にして考えるとこんな感じ。

結局何らかのアプリケーションを構築する時にも「何の操作でアプリケーションをデプロイするのか」といった運用まで考えるワークフローを考える必要があり、Protonが正式リリースされてユーザーが増えていけば「このテンプレートを使えば安全にサービスの開発と運用が行える」といった手段を手軽に入手できるような気がして、個人的には期待値がとても高いです。

AWS Protonで利用できるデベロッパーポータルは「CodeCommit」「CodeArtifact」「CodeBuild」「CodeDeploy」等で構成されており、これらを効率的に使ってシステム開発からデプロイ・運用までをワンストップで行うためのツールとしてProtonは考えられているように思えます。

ここで様々なツールセットを使う都合上、AWSへの課金は避けられない所ですが……これらに関しては正式リリース後に使い方に合わせたドキュメントが作られると思うので、それらの拡充を待ちましょう。

AWS Protonによって何がどう変わるのか

例えばGitを使ったコード管理を行いたい場合に、Protonによって環境の統合を行えばAWSが提供しているマネージド型のコード管理サービスの「AWS CodeCommit 」を使うことによって、コードの管理からデプロイまでをAWSのサービスで完結させる事も出来ます。

「AWS以外のサービスに頼らない開発とデプロイ環境の構築」を実現させやすくなったので、例えばGitHubのチームメンバーは1人あたり4ドル掛かっているところをAWS CodeCommitに変える事で1メンバーあたりのコストを1ドルまで下げたり、CIをGitHub Actionsで行っているものをAWS CodeBuildに変えればCI/CDの実行あたりのコストを60%まで削減できたり……試算の次第ではコストの観点からも移行するメリットを見出すことができそうです。

(参考リンク)

GitHub
料金 – Amazon CodeCommit | AWS
GitHub Actionsの支払いについて – GitHub Docs
料金 – AWS CodeBuild | AWS

参考リンク

また、これらにあわせてコンテナレジストリとしてのECRに「ECR Public」と称してパブリックにイメージを公開する機能が追加されました。

次回は、「ECR Public」についてお伝えします!