re:Invent2020セッションレポート :(EMB008)AWS Proton: Automating infrastructure provisioning & code deployments
概要
2020 re:Inventで新たに登場した AWS Protonの紹介セッションです。 機能が多そうで、Keynoteだけでは中々中身まで理解するのが難しかったので本セッションを見ました。
アライさんがものすごくわかりやすい記事を書いてくれているので、それを見るだけでも理解が深まると思います。 こちらも是非。
内容
課題点、背景
- マイクロサービスの例
- Developerは使いやすい、コードフォーカス
- 一見シンプルであるが、実はシンプルじゃない
- マイクロサービスにするとコンポーネントが増える
- Pipelineも必要、設定も環境ごとに必要
- Monitoringの設定も必要
- インフラは標準化して管理しやすくしたい
- Developer(開発チーム)は開発を早くして自動化したい
- それぞれアップデートも必要
- アーキテクチャーが育ってくるとサービスも増えて複雑になる
- 集中管理(左側):一元管理になるが変更時が面倒。Developerから問合せを受けて検討、変更する等のフロー
- 従来のPaas(右側):DeveloperはPaasにデプロイするので開発しやすい、一方でコンプライアンスやセキュリティが守られているか等の管理面で不安がある。
- セルフ(In-house)管理(真ん中):集中管理とDeveloperの間が取れてGood!ただし、このカスタムソリューションを自分たちで管理していく必要がある。バージョン管理なども大変
- そこでProtonの登場!!
Protonとは
- インフラ担当はインフラテンプレートをアップロード(パイプラインやモニタリングも)
- アプリ担当はアプリケーションをデプロイ
- 主要な機能
- セルフサービスなインフラおよびコード管理
- インフラ管理をワンクリックで集中管理できる
- サードパーティの組み込みも可能(TerraformやJenkinsやモニタリングツールも予定)
- Protonのコンセプト(Protonの主要なリソース)
- Environment:VPCやClusterを管理、サービスで共有するインフラ部分
- Services:ワークロードごとに設定、FaragateやLambdaなど
「 Proton使用時の流れ 」
- インフラのテンプレートを定義(Environment、Service)
- テンプレートからリソースをCreate
- アプリがサービスを選んでデプロイ(青枠)
- Protonのアーキテクチャ例
- 2のservice(Fargate、Lambda)と1つのEnvironment
- 環境はStagingとProduction2種類(今回の例では)
- Pipelineを使用して、Staging→Productionで展開できる(パイプラインが環境間で連携されている)
- Protonに定義を登録することで標準化できる
- 主にインフラ管理者向け
- Protonテンプレートの解剖(Anatomy)
- テンプレートの例
- 左側が環境ごとにテンプレートを分けた例
- 右側がProton、1つのテンプレートとSchemaを設定
- テンプレートができたらProtonの画面から登録
- 登録したテンプレートは画面上で管理できる
- サンプルテンプレートを多く公開しているので是非みてね!W-Aなテンプレートもあり
- テンプレートのバージョン管理
- 変更したらバージョン管理を
- マイナーとメジャーの2種類あり
- マイナーはDeveloper(アプリ)に影響を与えないインフラのアップデート
- メジャーはDeveloper(アプリ)に影響を与える構成変更のようなアップデート
- 基本は最新を使うようにしましょう
- テンプレートのバージョン管理画面
- 全バージョン詳細も見れる
- 現在どのテンプレートが使われているのかもわかる
- Environmentsで定義しているもの
- VPC、サブネット
- パイプラインとその中のステージ
- リソースプロビジョニングのためのIAMロール
- Developerはコードに集中
- コードを書いたらサービスを指定してデプロイ
- デプロイのサービスはマネージド化されて見える(?)
- 使用方法
1.サービステンプレートの選択
2.パラメータの入力、パラメータ項目はParameter Schemaで管理されている
3.サービスができたら画面上で確認できる
4.詳細も確認できる、パイプラインの状況やアラートの状況も見れる
まとめ
まだパブリックプレビュー、フィードバックください
- 今はCloudFormationが基本
- EnvironmentsとServiceのデプロイ、更新ができる
- CodePipelineとも連携
Roadmap(今後)
- 見てね!フィードバックもください(2回目)
私の感想、まとめ
英語で聞きながら書いているので少し間違っているところがあるかもしれません。すいません。何かあればご指摘ください。 ただProtonのコンセプトや方向性はこれで理解できたかなと思います。
背景を知るのは大事ですね、Protonの目的は以下のように感じました。
- インフラテンプレートの一元管理:色々なところで好き勝手に作るのではなく、ベストなものをProtonで集中管理。履歴管理もできる
- インフラ、アプリ(Developer)の役割明確化:Developerはコードに集中できるように。作ったコードをProton経由でデプロイすれば標準な形式でデプロイできる
- 各種リソースの状況管理:Protonを使用することで、どの環境でどのアプリ、テンプレートが使用されているのかわかるようになる
私の環境でもインフラテンプレートやパイプラインが多くなってきて、同様の課題を感じていたので、すばらしいサービスだと思います。 まだプレビュー段階なので、新機能にワクワクしながら実際の運用導入を検討したいと思います。