Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Let's start App Runner!

Let's start App Runner!

https://nakanoshima-dev.connpass.com/event/214547/
[Online]nakanoshima.dev#17 Let's start App Runner!
2021/06/09(水) 18:30 〜 20:15

Bf5ee9059859ed5d855b5ff4680e63e2?s=128

track3jyo-hama
PRO

June 09, 2021
Tweet

More Decks by track3jyo-hama

Other Decks in Programming

Transcript

  1. © 2021, Amazon Web Services, Inc. or its Affiliates. Let's

    start App Runner! Shinichi Hama Solutions Architect Amazon Web Services Japan/ Solutions Architecture nakanoshima.dev#17 Let's start App Runner!
  2. © 2021, Amazon Web Services, Inc. or its Affiliates. 自己紹介

    Shinichi Hama Twitter/@track3jyo Solutions Architect Amazon Web Service Japan ⻄⽇本のお客様の⽀援 & Container のあれこれ <好きな AWS サービス> Amazon ECS Amazon EKS AWS Fargate Amazon DynamoDB
  3. © 2021, Amazon Web Services, Inc. or its Affiliates. なぜコンテナか?

    • Run Anywhere • 複数環境に渡る一貫した実行可能性 • Portability • 可搬性の高さ • コンテナイメージの作成 (build)、レジストリ、アップロード (push)、ダウン ロード (pull) に代表される、可搬性の高さを支えるエコシステム • Isolated processes • コンテナによるプロセスレベルのリソースアイソレーション、それによる CPU やメモリに代表されるリソースの柔軟な割り当て、高速な起動と停止
  4. © 2021, Amazon Web Services, Inc. or its Affiliates. なぜコンテナか︖

    • Run Anywhere • Portability • Isolated processes → CI/CD による⾃動化、デリバリ速度の向上 → リソース集積率を⾼めることによる仮想マシンコストの削減 といったメリットが⾒込める
  5. © 2021, Amazon Web Services, Inc. or its Affiliates. なぜオーケストレーションツールか︖

    • コンテナの機能性のスコープは単⼀ノードにおけるライフサイクル管理 • オーケストレーションツール+αで実現される機能性の例 • 複数サーバにまたがるコンテナのレプリケーションやスケジューリング • クラッシュしたコンテナの⾃動再配置 (オートヒーリング) • 宣⾔的デプロイメント • オートスケーリング • 秘密情報管理 • メトリクス・ログ収集 • etc.
  6. © 2021, Amazon Web Services, Inc. or its Affiliates. ANY

    AWS BEST PLACE
  7. © 2021, Amazon Web Services, Inc. or its Affiliates. AWSコンテナサービスを数字で⾒る

    80% クラウドのすべてのコンテナ化され た実⾏中のアプリケーションのうち AWS で実⾏されている割合 150% AWS コンテナサービスの 前年⽐の成⻑ 10倍 1 年間の EKS 使⽤量の増加 3倍 1 年間の Fargate 使⽤量の増加 毎週 1 億タスクを実⾏ 20億以上 ECR を使⽤した毎週 Pull される Image の数 https://aws.amazon.com/jp/containers/
  8. © 2021, Amazon Web Services, Inc. or its Affiliates. AWS

    のコンテナサービス AWS Cloud Map オーケストレーション コンテナのデプロイ、スケジューリング、スケーリング イメージレジストリ コンテナイメージの格納 ホスティング コンテナ実⾏環境 その他の関連サービス サービスメッシュ、サービスディスカバリ、モニタリング Amazon CloudWatch Container Insights Amazon ECS Amazon EKS Amazon ECR Amazon EC2 AWS Fargate
  9. © 2021, Amazon Web Services, Inc. or its Affiliates. オーケストレータ

    イメージレジストリ Amazon ECR Amazon ECS Amazon EKS Amazon EC2 AWS Fargate
  10. © 2021, Amazon Web Services, Inc. or its Affiliates. 現実世界の

    AWS コンテナワークロード AmazonEC2 Developer Data plane Registry AWS Secrets Manager Parameter Store Secrets/Configs Source Build/Test Deploy AWS CodeCommit AWS CodeBuild Control plane CI/CD pipeline AWS CodePipeline AWS CodeDeploy Amazon Aurora Amazon S3 Backing service Amazon EFS
  11. © 2021, Amazon Web Services, Inc. or its Affiliates. 多様なサービスを組み合わせてクラウドインフラストラクチャを構成

    AWS Fargate ECS Elastic Load Balancing AWS Auto Scaling AWS CodeBuild フロントエンドアプリケーション バックエンドアプリケーション
  12. © 2021, Amazon Web Services, Inc. or its Affiliates. AWS

    App Runner 多様なサービスを組み合わせてクラウドインフラストラクチャを構成 フロントエンドアプリケーション バックエンドアプリケーション
  13. © 2021, Amazon Web Services, Inc. or its Affiliates. ネットワーク、サーバ、デプロイパイプライン、

    コンテナオーケストレーションツールの管理が不要 コンテナレジストリまたは Git リポジトリから 直接デプロイ アプリケーションの実⾏時間に対して秒単位での 課⾦体系 AWS App Runner AWS App Runner ⼩規模から⼤規模まであらゆるスケールの Web アプリケーションを素早く展開
  14. © 2021, Amazon Web Services, Inc. or its Affiliates. App

    Runner のアーキテクチャ AWS App Runner お客様のアプリケーション フロントエンド API オーケストレーションワークフロー ビルド (CodeBuild) ホスティング (Fargate, VPC) ロードバランサとヘルスチェック カスタムドメイン (NLB) オートスケール (Request-based) CICD (Webhook, CloudWatch Events) 安全なデプロイ (Blue-green) 実⾏環境へのパッチ適⽤ (ECR) ホストマシンへのパッチ適⽤ (Fargate) Deployment & Application Logs (CW Logs) メトリクス (CloudWatch Metrics) 暗号化 (KMS) App Runner によりお客様が管理しなくてよくなるもの ECR public ECR private GitHub
  15. © 2021, Amazon Web Services, Inc. or its Affiliates. 柔軟なアプリケーションのビルドとデプロイ

    ソースコード リポジトリ 既存ツールを⽤いた コンテナイメージのビルド コンテナイメージを ECR にプッシュ 開発チーム App Runner による アプリケーションのビルド⾃動実⾏ アプリケーションの デプロイ or AWS Copilot CLI からのデプロイにも対応
  16. © 2021, Amazon Web Services, Inc. or its Affiliates. デモスタート︕︕

  17. © 2021, Amazon Web Services, Inc. or its Affiliates. デプロイのオプション

    コードプッシュ時に⾃動でデプロイ ̶ GitHub へのコードをプッシュ またはコンテナレジストリ へコンテナイメージをプッシュするだけで後は AWS 側でデプロイを実⾏ 既存ツールと連携させるために App Runner API を利⽤してデプロイをトリガーすることも可能 デフォルトでゼロダウンタイムデプロイ(内部では Blue/Green ⽅式でデプロイされている) サービスがヘルスチェックに通らない場合は⾃動でロールバック サービスイベントとデプロイログからサービスの状態を把握
  18. © 2021, Amazon Web Services, Inc. or its Affiliates. オートスケーリング

    と ロードバランシング App Runner サービス ロードバランサー App Runner は各アプリケーションに対する同時リクエスト数を元にオートスケールします App Runner サービスはサーバレスであり、ミリ秒のオーダーでレスポンスを返します
  19. © 2021, Amazon Web Services, Inc. or its Affiliates. オートスケーリングのオプション

  20. © 2021, Amazon Web Services, Inc. or its Affiliates. リクエスト数に応じてスケールするコンテナインスタンス課⾦

    0 80 160 240 12:00 午前 8:00 午前 12:00 午後 4:00 午後 8:00 午後 12:00 午前 秒間リクエスト数 スケーリングのしきい値設定 (同時リクエスト数) 1 台のコンテナインスタンス からスタート しきい値を上回る/下回るたびに、 コンテナインスタンスが スケールアウト/イン 同時リクエスト数が 0 のとき はメモリ費⽤のみが発⽣ 1 2 3 4 コンテナインスタンス数
  21. © 2021, Amazon Web Services, Inc. or its Affiliates. オートスケーリングのオプション

    コンテナインスタンス 1 台あたりの同時リクエスト数をしきい値として設定可能(デフォルト 80) スケールイン時の最⼩台数を設定可能 (デフォルト 1 台) スケールアウト時の最⼤台数を設定 (例. 開発環境でのコスト最適化に利⽤) 最⼩台数のインスタンスはプロビジョンドコンテナインスタンスと呼ばれ、コールドスタートを防ぐ ⽬的で常時稼働する トラフィックを捌いているアクティブなインスタンスは vCPU とメモリを消費し、インスタンスに割 り当てた vCPU とメモリ量に対して課⾦が発⽣ アイドル中のインスタンス(プロビジョンドコンテナインスタンス)は vCPU を消費せず、確保したメ モリのみ課⾦が発⽣
  22. © 2021, Amazon Web Services, Inc. or its Affiliates. ログとメトリクス

    AWS Cloud ログとメトリクス App Runner サービス お客様の VPC サードパーティツール Amazon CloudWatch
  23. © 2021, Amazon Web Services, Inc. or its Affiliates. App

    Runner コンソールにて各種ログを確認
  24. © 2021, Amazon Web Services, Inc. or its Affiliates. App

    Runner コンソールにて各種ログを確認
  25. © 2021, Amazon Web Services, Inc. or its Affiliates. ログとメトリクスのオプション

    アプリケーションパフォーマンスおよびコンテナのリソース使⽤率に関するメトリクスが設定不要 でデフォルトで利⽤可能 システムログおよびデプロイメントログは、例えば「App Runner サービスを現在更新中、デプロイ はここまで進んでいる」などの App Runner の内側で起きていることを把握するのに利⽤可能 アプリケーションログは、運⽤時のトラブルシューティングに利⽤可能 ログとメトリクスはデフォルトで CloudWatch に送信。 APN パートナーと協⼒し、サードパーテ ィツールにログやメトリクスを連携可能
  26. © 2021, Amazon Web Services, Inc. or its Affiliates. 料⾦体系

    同時リクエスト数に応じて⾃動でスケールアウト/インするコンテナインスタンスごとの vCPU と メモリ量に対して費⽤が発⽣ トラフィックがないときは⾃動で最⼩台数までスケールイン(デフォルト 1 台)。コールドスター トを減らすためにプロビジョンドコンテナインスタンスが常時稼働、メモリ量のみに費⽤が発⽣ ソースコードからのデプロイ時にはビルド時間に対する費⽤が発⽣。 App Runner が内部でソー スコードからコンテナイメージを⾃動でビルドするのにかかった時間である。 ソースコードのプッシュまたはコンテナイメージのプッシュをトリガーにデプロイを実⾏するオ プションを有効にした場合は固定量の費⽤が発⽣
  27. © 2021, Amazon Web Services, Inc. or its Affiliates. デモできたかな︖

  28. © 2021, Amazon Web Services, Inc. or its Affiliates. AWS

    App Runner の始め⽅ ハンズオンワークショップに取り組む: https://apprunnerworkshop.com http://aws.amazon.com/apprunner を訪れる App Runner にアプリケーションをデプロイしてみましょう︕
  29. © 2021, Amazon Web Services, Inc. or its Affiliates. AWS

    App Runner のまとめ 1. AWS の専⾨知識や経験がなくても Web アプリケーション、 モバイル⽤バックエンド、API サービスを数クリックで実⾏ できる 2. ソースコード、コンテナイメージまたはデプロイパイプライ ンを⽤意することで App Runner がコンテナイメージのビル ド、デプロイ、ロードバランサーのセットアップと管理、暗 号化、トラフィックに応じたオートスケールを実⾏します 3. リクエスト数に応じてスケールするインスタンス数に対して 秒単位での課⾦
  30. © 2021, Amazon Web Services, Inc. or its Affiliates. Happy

    running! Shinichi Hama track3jyo