fu3ak1's tech days

何事もシンプルに。主にAWS関連の記事を書いています

re:Invent2020セッションレポート :(EMB008)AWS Proton: Automating infrastructure provisioning & code deployments

概要

2020 re:Inventで新たに登場した AWS Protonの紹介セッションです。 機能が多そうで、Keynoteだけでは中々中身まで理解するのが難しかったので本セッションを見ました。

アライさんがものすごくわかりやすい記事を書いてくれているので、それを見るだけでも理解が深まると思います。 こちらも是非。

iselegant.hatenablog.com

内容

課題点、背景

  • マイクロサービスの例
    • Developerは使いやすい、コードフォーカス

f:id:fu3ak1:20201203104633p:plain

  • 一見シンプルであるが、実はシンプルじゃない
    • マイクロサービスにするとコンポーネントが増える
    • Pipelineも必要、設定も環境ごとに必要
    • Monitoringの設定も必要

f:id:fu3ak1:20201203104746p:plain

  • インフラは標準化して管理しやすくしたい
  • Developer(開発チーム)は開発を早くして自動化したい
  • それぞれアップデートも必要

f:id:fu3ak1:20201203104932p:plain

f:id:fu3ak1:20201203105100p:plain

  • 集中管理(左側):一元管理になるが変更時が面倒。Developerから問合せを受けて検討、変更する等のフロー
  • 従来のPaas(右側):DeveloperはPaasにデプロイするので開発しやすい、一方でコンプライアンスやセキュリティが守られているか等の管理面で不安がある。
  • セルフ(In-house)管理(真ん中):集中管理とDeveloperの間が取れてGood!ただし、このカスタムソリューションを自分たちで管理していく必要がある。バージョン管理なども大変
  • そこでProtonの登場!!

f:id:fu3ak1:20201203105205p:plain

Protonとは

  • インフラ担当はインフラテンプレートをアップロード(パイプラインやモニタリングも)
  • アプリ担当はアプリケーションをデプロイ

f:id:fu3ak1:20201203105452p:plain

  • 主要な機能
    • セルフサービスなインフラおよびコード管理
    • インフラ管理をワンクリックで集中管理できる
    • サードパーティの組み込みも可能(TerraformやJenkinsやモニタリングツールも予定)

f:id:fu3ak1:20201203105521p:plain

  • Protonのビジョン
    • ベストプラクティスの適用や新機能の適用を助ける
    • クラウドネイティブでモダンな開発を可能にする
    • インフラ担当がビジネスにとってベストなアーキテクチャを決定できる

f:id:fu3ak1:20201203105636p:plain

  • Protonのコンセプト(Protonの主要なリソース)
    • Environment:VPCやClusterを管理、サービスで共有するインフラ部分
    • Services:ワークロードごとに設定、FaragateやLambdaなど

f:id:fu3ak1:20201203105827p:plain

「 Proton使用時の流れ 」

  1. インフラのテンプレートを定義(Environment、Service)
  2. テンプレートからリソースをCreate
  3. アプリがサービスを選んでデプロイ(青枠)

f:id:fu3ak1:20201203110020p:plain

  • Protonのアーキテクチャ
    • 2のservice(Fargate、Lambda)と1つのEnvironment
    • 環境はStagingとProduction2種類(今回の例では)
    • Pipelineを使用して、Staging→Productionで展開できる(パイプラインが環境間で連携されている)

f:id:fu3ak1:20201203110138p:plain

  • Protonに定義を登録することで標準化できる
  • 主にインフラ管理者向け

f:id:fu3ak1:20201203110209p:plain

  • Protonテンプレートの解剖(Anatomy)
    • インフラテンプレートを作成し、パラメータを決定。パラメータはDeveloperが変更できる値を設定
    • CI/CDをテンプレート作成、インフラと土曜
    • Protonのスキーマ化、Developerに必要な情報を整理、パラメータなど
    • マニフェストの設定、作成した情報の一元管理、確認(?、すいません英語よく聞き取れず自信ない)

f:id:fu3ak1:20201203110416p:plain

  • テンプレートの例
    • 左側が環境ごとにテンプレートを分けた例
    • 右側がProton、1つのテンプレートとSchemaを設定

f:id:fu3ak1:20201203110519p:plain

  • テンプレートができたらProtonの画面から登録

f:id:fu3ak1:20201203110631p:plain

  • 登録したテンプレートは画面上で管理できる

f:id:fu3ak1:20201203110705p:plain

  • サンプルテンプレートを多く公開しているので是非みてね!W-Aなテンプレートもあり

f:id:fu3ak1:20201203110735p:plain

  • テンプレートのバージョン管理
    • 変更したらバージョン管理を
    • マイナーとメジャーの2種類あり
      • マイナーはDeveloper(アプリ)に影響を与えないインフラのアップデート
      • メジャーはDeveloper(アプリ)に影響を与える構成変更のようなアップデート
  • 基本は最新を使うようにしましょう

f:id:fu3ak1:20201203110851p:plain

  • テンプレートのバージョン管理画面
    • 全バージョン詳細も見れる
    • 現在どのテンプレートが使われているのかもわかる

f:id:fu3ak1:20201203111216p:plain

  • Environmentsで定義しているもの
    • VPC、サブネット
    • パイプラインとその中のステージ
    • リソースプロビジョニングのためのIAMロール

f:id:fu3ak1:20201203111406p:plain

  • Developerはコードに集中
  • コードを書いたらサービスを指定してデプロイ
  • デプロイのサービスはマネージド化されて見える(?)

f:id:fu3ak1:20201203111528p:plain

  • 使用方法

1.サービステンプレートの選択

f:id:fu3ak1:20201203111647p:plain

2.パラメータの入力、パラメータ項目はParameter Schemaで管理されている

f:id:fu3ak1:20201203111844p:plain

3.サービスができたら画面上で確認できる

f:id:fu3ak1:20201203112011p:plain

4.詳細も確認できる、パイプラインの状況やアラートの状況も見れる

f:id:fu3ak1:20201203112043p:plain

まとめ

  • まだパブリックプレビュー、フィードバックください

    • 今はCloudFormationが基本
    • EnvironmentsとServiceのデプロイ、更新ができる
    • CodePipelineとも連携
  • Roadmap(今後)

    • モニタリング機能
    • サードパーティの機能追加
    • タグの自動付与
    • マルチアカウント対応
    • テンプレートアクセス=どのテンプレートに誰がアクセスできるかなどのアクセスコントロール

f:id:fu3ak1:20201203112440p:plain

  • 見てね!フィードバックもください(2回目)

f:id:fu3ak1:20201203112501p:plain

私の感想、まとめ

英語で聞きながら書いているので少し間違っているところがあるかもしれません。すいません。何かあればご指摘ください。 ただProtonのコンセプトや方向性はこれで理解できたかなと思います。

背景を知るのは大事ですね、Protonの目的は以下のように感じました。

  • インフラテンプレートの一元管理:色々なところで好き勝手に作るのではなく、ベストなものをProtonで集中管理。履歴管理もできる
  • インフラ、アプリ(Developer)の役割明確化:Developerはコードに集中できるように。作ったコードをProton経由でデプロイすれば標準な形式でデプロイできる
  • 各種リソースの状況管理:Protonを使用することで、どの環境でどのアプリ、テンプレートが使用されているのかわかるようになる

私の環境でもインフラテンプレートやパイプラインが多くなってきて、同様の課題を感じていたので、すばらしいサービスだと思います。 まだプレビュー段階なので、新機能にワクワクしながら実際の運用導入を検討したいと思います。