Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

AWSコンテナ本出版から3年経った今、もし改めて執筆し直すなら / If I revise o...

iselegant
October 31, 2024

AWSコンテナ本出版から3年経った今、もし改めて執筆し直すなら / If I revise our container book

iselegant

October 31, 2024
Tweet

More Decks by iselegant

Other Decks in Technology

Transcript

  1. • 刊行当初でさえAWSサービス数は200を超え、サービス連携の仕方は無数に存在 • サービス連携の判断は自分たちのビジネス要件次第 • ニーズに合わせて最終的には意思決定される • ECS/Fargateのサービス興隆期でもあり、見極めが難しい • 自分たちが紹介するアーキテクチャを”ベストプラクティス”と謳うには時期尚早

    • ECS/Fargateベースのシステムを本番運用することを想定し、価値提供の先として 読者のみなさまが自力で設計・構築できる状態を目指した 初版では、あえてECS/Fargateと他のAWSサービスのつなぎ方を 個別に切り出して執筆しなかった
  2. • 1日における世界中のECSタスクの起動数は3億個/日 • AWS上でコンテナを利用しようとしている新規ユーザーの65%がECSを選択 • ECS/Fargateを活用したアーキテクチャ事例も多数公開されている • 事例は生きた(ビジネスとして価値を生み出す or 生み出さない)アーキテクチャの証拠

    • 「外さない(無難な)」アーキテクチャデザインが見えるようになってきた • よく採用されるアーキテクチャパターンはそれなりの理由がある あれから3年、AWS上におけるコンテナ活用が広がり、 要件に合わせた最適な組み合わせ方が確立されてきている
  3. 要件のユースケース 1 • なるべくシンプルかつスモール 構成でアプリケーションを公開 したい • 一般的なWebアプリケーション セキュリティ対策を施したい •

    アクセス増に対するアプリケー ションの可用性を高めたい 例1)インターネット上にWebアプリケーションを公開する場合
  4. 要件のユースケース 1 • なるべくシンプルかつスモール 構成でアプリケーションを公開 したい • 一般的なWebアプリケーション セキュリティ対策を施したい •

    アクセス増に対するアプリケー ションの可用性を高めたい 例1)インターネット上にWebアプリケーションを公開する場合
  5. 要件のユースケース 3 • 一般的なWebアプリケーション セキュリティ対策を施したい • アクセス増に対するアプリケー ションの可用性を高めたい。ま た、一定数のアクセスに流量制 御を設けたい

    • グローバルからのアクセスのレ スポンスを最適化したい • 個別の認証・認可を実装したい 例1)インターネット上にWebアプリケーションを公開する場合
  6. 要件のユースケース 3 • 一般的なWebアプリケーション セキュリティ対策を施したい • アクセス増に対するアプリケー ションの可用性を高めたい。ま た、一定数のアクセスに流量制 御を設けたい

    • グローバルからのアクセスのレ スポンスを最適化したい • 個別の認証・認可を実装したい 例1)インターネット上にWebアプリケーションを公開する場合
  7.  ログ・メトリクス設計  トレース設計  CI/CD設計  イメージメンテナンス運用  Bastion設計

     イメージセキュリティ  レジストリセキュリティ  オーケストレータセキュリティ  コンテナセキュリティ  スケールアップ戦略  スケールアウト戦略  マルチAZ構成の考慮  障害時切り離しと復旧  システムメンテナンスの考慮  サービスクォータ  ECSタスク数とリソースサイジング  Compute Savings Plans  ECSコンテナイメージのメンテナンス  タスク稼働時間帯の調整  Fargateスポットの調整  コンテナイメージサイズの削減 刊行当初における Well Architected Framework に沿った設計観点
  8. 刊行当初におけるWell Architect Frameworkに沿った設計観点  ログ・メトリクス設計  トレース設計  CI/CD設計 

    イメージメンテナンス運用  Bastion設計  イメージセキュリティ  レジストリセキュリティ  オーケストレータセキュリティ  コンテナセキュリティ  スケールアップ戦略  スケールアウト戦略  マルチAZ構成の考慮  障害時切り離しと復旧  システムメンテナンスの考慮  サービスクォータ  ECSタスク数とリソースサイジング  Compute Savings Plans  ECSコンテナイメージのメンテナンス  タスク稼働時間帯の調整  Fargateスポットの調整  コンテナイメージサイズの削減 刊行から3年、ECS/Fargateや関連サービスは どのように進化したのか?
  9. 時間軸 書籍刊行〜現在までのECS/Fargate主要アップデートを追ってみる 2022-11-23 : Graviton2サポート 2022-04-13 : タスクスケーリング改善 2022-11-10 :

    タスクのスケールイン保護 2022-03-01 : FISがECSタスクをサポー ト ECSタスクの起動が16倍高速になった。 また、ミッションクリティカルなタスクが意図せず終 了しないように制御できるようになった。
  10. 時間軸 書籍刊行〜現在までのECS/Fargate主要アップデートを追ってみる 2022-11-23 : Graviton2サポート 2022-04-13 : タスクスケーリング改善 2022-11-10 :

    タスクのスケールイン保護 2022-11-27 : ECS Service Connectの発表 2022-03-01 : FISがECSタスクをサポー ト サービスの検出やトラフィック観測に対応した ECS間の接続構成が可能なった。
  11. 時間軸 書籍刊行〜現在までのECS/Fargate主要アップデートを追ってみる 2022-11-23 : Graviton2サポート 2022-04-13 : タスクスケーリング改善 2022-11-10 :

    タスクのスケールイン保護 2022-11-27 : ECS Service Connectの発表 2023-11-26 : Fargateにおける 2022-03-01 : FISがECSタスクをサポー ト GuardDuty ECS runtime monitoring GuardDutyによる脅威検知がECSにも対応。 サイドカーによるセキュリティエージェント により、潜在的な問題を検出可能 (コストバランスは要検討)
  12. 時間軸 書籍刊行〜現在までのECS/Fargate主要アップデートを追ってみる 2022-11-23 : Graviton2サポート 2022-04-13 : タスクスケーリング改善 2022-11-10 :

    タスクのスケールイン保護 2022-11-27 : ECS Service Connectの発 表 2024-07-12 : 停止タスクの 2023-11-26 : Fargateにおける 2022-03-01 : FISがECSタスクをサポー ト GuardDuty ECS runtime monitoring エラーメッセージ内容強化 タスク停止時のエラーメッセージがより具体的に なった。さらにSlack等と連携することで、トラブ ルシューティングがしやすくなる。
  13. 時間軸 書籍刊行〜現在までのECS/Fargate主要アップデートを追ってみる 2022-11-23 : Graviton2サポート 2022-04-13 : タスクスケーリング改善 2022-11-10 :

    タスクのスケールイン保護 2022-11-27 : ECS Service Connectの発表 2024-07-12 : 停止タスクの 2024-09-07 : GravitonベースのSpot利用 2023-11-26 : Fargateにおける 2022-03-01 : FISがECSタスクをサポー ト GuardDuty ECS runtime monitoring エラーメッセージ内容強化 可用性とのバランスで折り合いがつけば、 Fargate料金を最大70%割引可能
  14.  ログ・メトリクス設計  トレース設計  CI/CD設計  イメージメンテナンス運用  Bastion設計

     イメージセキュリティ  レジストリセキュリティ  オーケストレータセキュリティ  コンテナセキュリティ  スケールアップ戦略  スケールアウト戦略  マルチAZ構成の考慮  障害時切り離しと復旧  システムメンテナンスの考慮  サービスクォータ  ECSタスク数とリソースサイジング  Compute Savings Plans  ECSコンテナイメージのメンテナンス  タスク稼働時間帯の調整  Fargateスポットの調整  コンテナイメージサイズの削減  Gravitonの考慮  Gravitonの考慮 刊行当初における Well Architected Framework に沿った設計観点
  15. 現在におけるWell Architected Frameworkに沿った設計観点  ログ・メトリクス設計  トレース設計  CI/CD設計 

    イメージメンテナンス運用  Bastion設計  (追加)トラブルシューティング  イメージセキュリティ  レジストリセキュリティ  オーケストレータセキュリティ  コンテナセキュリティ  (追加) ランタイムセキュリティ  スケールアップ戦略  スケールアウト戦略  マルチAZ構成の考慮  障害時切り離しと復旧  システムメンテナンスの考慮  サービスクォータ  (追加) FISによる耐障害性の検証  ECSタスク数とリソースサイジング  Compute Savings Plans  ECSコンテナイメージのメンテナンス  タスク稼働時間帯の調整  Fargateスポットの調整  コンテナイメージサイズの削減  Gravitonの考慮  (追加)Gravitonの利用検討 ECS Execの活用 タスクのエラーメッセージ
  16. AWS App Mesh 2026/09/30終了予定 AWS App Cost Profiler 2024/09/30終了 AWS

    Cloud9 2024/07/25新規受付停止 Amazon Cloud Search 2024/07/25新規受付停止 AWS CodeCommit 2024/07/25新規受付停止 AWS CodeStar 2024/07/31終了 AWS Data Pipeline 2024/07/25新規受付停止 AWS DeepComposer 2025/09/17終了予定 AWS DeepLens 2024/01/31終了 AWS DeepRacer 2025/12終了予定 Amazon Forecast 2024/07/29新規受付停止 Amazon FSx File Gateway 2024/10/28新規受付停止 Amazon Honeycode 2024/02/29終了 AWS IoT 1-Click 2024/12/16終了予定 AWS Lex V1 2025/09/30終了予定 ※V2に以降 Lookout for Equipment 2024/10/17新規受付停止 AWS OpsWorks 2024/05/26終了 Amazon QLDB 2025/07/31終了予定 AWS RoboMaker 2025/09/10終了予定 Amazon S3 Select 2024/07/25新規受付停止 Amazon SimpleDB 2024/07/25新規受付停止 AWS WAF Classic 2025/09/30終了 ※V2に以降 NICE EnginFrame 2025/09/25終了予定 AWS Snowmobile 2024/03終了 Amazon IoT Analytics 2024/07/25新規受付停止 AWS IoT Device Management Fleet Hub 2025/10/18終了予定 AWS Kinesis Data Analytics for SQL 2028/01/27終了予定 Amazon CloudWatch Evidently 2025/10/17終了予定 昨今では一部AWSサービスの新規利用停止と終了がアナウンス(2025/10/31時点)
  17. AWS App Cost Profiler 2024/09/30終了 Amazon Cloud Search 2024/07/25新規受付停止 AWS

    CodeStar 2024/07/31終了 AWS Data Pipeline 2024/07/25新規受付停止 AWS DeepComposer 2025/09/17終了予定 AWS DeepLens 2024/01/31終了 AWS DeepRacer 2025/12終了予定 Amazon Forecast 2024/07/29新規受付停止 Amazon FSx File Gateway 2024/10/28新規受付停止 Amazon Honeycode 2024/02/29終了 AWS IoT 1-Click 2024/12/16終了予定 AWS Lex V1 2025/09/30終了予定 ※V2に以降 Lookout for Equipment 2024/10/17新規受付停止 AWS OpsWorks 2024/05/26終了 Amazon QLDB 2025/07/31終了予定 AWS RoboMaker 2025/09/10終了予定 Amazon S3 Select 2024/07/25新規受付停止 Amazon SimpleDB 2024/07/25新規受付停止 AWS WAF Classic 2025/09/30終了 ※V2に以降 NICE EnginFrame 2025/09/25終了予定 AWS Snowmobile 2024/03終了 Amazon IoT Analytics 2024/07/25新規受付停止 AWS IoT Device Management Fleet Hub 2025/10/18終了予定 AWS Kinesis Data Analytics for SQL 2028/01/27終了予定 Amazon CloudWatch Evidently 2025/10/17終了予定 AWSコンテナ本含め、ECS/Fargate関連システムで影響があるサービス AWS App Mesh 2026/09/30終了予定 AWS Cloud9 2024/07/25新規受付停止 AWS CodeCommit 2024/07/25新規受付停止
  18. ALBによる接続 ECS Service Discoveryによる接続 AWS App Meshによる接続 ECS Service Connectによる接続

    もともと、ECS間のサービス接続方式は4種類存在 ・B/Gデプロイや追加メトリクスの取得 ・追加のALBコストとリソース管理 ・シンプルな構成 ・トラフィックのメトリクスなし ・トラフィック制御、mTLS通信 ・構成管理が複雑になりがち ・シンプルかつ追加メトリクスの取得 ・サイドカー注入による追加コスト
  19. ALBによる接続 ECS Service Discoveryによる接続 AWS App Meshによる接続 ECS Service Connectによる接続

    ・B/Gデプロイや追加メトリクスの取得 ・追加のALBコストとリソース管理 ・シンプルな構成 ・トラフィックのメトリクスなし ・トラフィック制御、mTLS通信 ・構成管理が複雑になりがち ・シンプルかつ追加メトリクスの取得 ・サイドカー注入による追加コスト 2026年9月30日にサービス終了予定 AWS App Mesh終了により、ECSタスク間の接続方法は今後3種類となる
  20. • 永続ストレージの容量が1GBしかない • 120日利用がないと削除される • サイズの引き上げが不可 • VPC環境で起動すると、そもそも永続ストレージがない • 毎月の使用量クォーター(200時間/月)が存在する

    • 場合によってはクォーター引き上げが必要 • 20-30分操作しないとシェルセッションが終了する 代替としてのCloudShellは有力候補だが、各種制約に気をつける必要あり
  21. 時間軸 まとめ(3つの観点から考察) 2024年 10月 ECS/Fargateをとりまく アーキテクチャデザイン Well-Architected Framework再考 サービス新規利用停止と 終了を踏まえて

    2021年 10月 先人が築いた良質な設計を理解す ることで、設計の最適解を模索 日々のアップデートとW-A軸を 照らし合わせることで、 より網羅的な設計を探索 潮流にあわせて、自分たちの アーキテクチャを持続可能なもの にしていく必要