[レポート] クラウド上の最初のコンテナ #CON207 #reinvent

2022.12.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

アノテーション テクニカルサポートの川崎です。

本記事は AWS re:Invent 2022 のセッションレポートとなります。

概要

このセッションでは、コンテナの基本、コンテナ オーケストレーションの利点、AWS App Runner のようなサービスが本番環境でのコンテナの運用にどのように役立つかについて紹介します。

セッション動画

アジェンダ

  • AWS App Runner を使い始める 2つの簡単な方法
  • App Runner とは何か、なぜ開発したのか
  • App Runner を本番環境で運用

AWS App Runner

  • AWS が管理
    • プロビジョニングやスケーリング、管理を要するEC2 インスタンス、クラスター、ロードバランサーは不要
  • ELASTIC
    • シームレスにスケールアップ、スケールダウン。 使用した分だけお支払い
  • 統合
    • サービスの AWS ポートフォリオ: VPC ネットワーキング、Amazon CloudWatch、AWS Certificate Manager (ACM) など

App Runner は、すぐに使用できる一連のベストプラクティスと、作業を進めるためのガードレールを提供

アイデア、コード、ローンチ

  • クラウドでのコンテナ
    • どれを選べばいいのかわかりづらい
  • コンテナについて考える必要さえない方法 (= App Runner) を紹介
    • 構築したいアプリケーションのアイデア
    • IDE と開発ツールを使い、ソースコード・リポジトリにチェックイン
    • ローンチ (起動)
  • App Runner
    • ECS と EKS についての、顧客からのフィードバックを反映
    • コンテナ環境を管理、維持するための非常に簡単な方法
  • ECS と EKS
    • 非常に強力なツール
    • 拡張可能
    • かなりの量のインフラストラクチャの知識が必要
  • App Runner の場合
    • サービスアカウント内で多くのことを実行
    • 顧客に代わって、AWS が運用上のオーバーヘッドの多くの重労働を行う
    • 多くの重労働は、ユーザーから離れて抽象化され、顧客はアプリケーションに集中できるようになる

ソースまたはコンテナ イメージからデプロイ

  • 開発チーム
  • ソースコードのリポジトリ
  • App Runner でアプリケーションをビルド
  • 既存のツールを使用してコンテナをビルド
  • コンテナ イメージを ECR にプッシュ
  • アプリケーションをデプロイ
  • クライアントの HTTP リクエスト
  • セキュア サービス URL

リクエストに応じてスケーリングするコンピューティングに対して支払い

  • App Runner を開始する方法 2つ
    • 1個目:App Runner でアプリケーションをビルド
    • お客様に代わって CICD プロセス全体を管理
    • 2個目:一般的なコンテナー ツールを使用
    • コンテナイメージを ECR に直接プッシュ

プライシング・ディメンション

  • Compute 料金
    • $0.064/vCPU-時間
    • $0.007/GB-時間
  • 自動デプロイ
    • $1/アプリケーション、月額
  • ビルド料金
    • $0.005/ビルド分
  • アプリケーションがトラフィックを処理している場合
    • コンピューティングとメモリに対して料金が発生
  • そうでない場合
    • メモリ時間に対してのみ料金が発生

プライシング・シナリオ

  • 開発環境、テスト環境のアプリ
    • 個々の開発者によって構築されたこれらのアプリは、テストまたは開発トラフィックを処理し、手動デプロイを使用。 開発者は、コストを管理するためにこれらのサービスを一時停止
    • $5/月
  • 軽量で遅延の影響を受けやすい API
    • 軽量の商用 API や Web サービスでは、リクエストの量が少なく、ピーク時のアクティビティは発生しない
    • $25/月
  • 本番環境アプリ
    • 本番アプリは、最もレイテンシの影響を受けやすいビジネス ロジックを強化。 毎日数回、トラフィックのピーク時間帯が発生
    • $102/月

Cox Automotive におけるモデルのデリバリ

  • 私たちの目標は、DevOps がソフトウェア開発で行ったことをデータ サイエンスで行うこと
  • 私たちが解決しなければならなかった問題の 1 つは、モデルを API として大規模に実行する方法
  • マネージドサービス主導のプラットフォームを構築して、幅広いモデルを提供できるか?

クラウド上のコンテナ

  • AWS App Runner
  • Amazon ECS
  • AWS Fargate
  • Amazon EKS

既知の ECS パターン

  • カスタマー
  • モデル API
  • VPC Link
  • Model Service Discovery
  • Model ECS Cluster
  • ECR VPC Endpoint
  • Model Image Registry
  • CW VPC Endpoint
  • Model Logs

App Runner パターンへの移行

  • カスタマー
  • Model Service
  • Model Image Registry
  • Model Logs

簡単操作

  • プロビジョニング
    • バースト トラフィックを解決
    • 以前のモデル バージョンはスケーリングされています
    • 下位環境は本番環境を反映しています
  • スケールを 0 にしないようにします
    • 迅速なテストのため、より低い環境をウォーム状態に保つ
    • 使用頻度の低いモデルのコストを最小限に抑える

最初のコンテナをクラウドにデプロイ

コンテナ イメージのビルド

  • カスタム ベース イメージをプル
  • モデル アーティファクトをプル
  • モデル イメージをビルド
  • ECR にプッシュ

本番環境へのパス

  • さまざまな環境で単一のコンテナーを移動するために使用する高レベルのフロー

最初のコンテナをクラウドに拡張

  • コンテナを取得し、AppRunner に配置し、デプロイ

Amazon API ゲートウェイ統合

  • Auth の分離は非常に重要
    • デカップリング
    • 既存の AWS サービスの機能を活用

App Runner ロギング機能の統合

  • ログを取得
  • メトリックを取得
  • レポートツールに渡す

改善のオポチュニティ

  • AWS CloudFormation サポート
  • Compute SKU
  • 定常状態の最適化

  • App Runner は新しいサービス

    • 常に改善の余地がある
    • CPU とメモリの構成の選択肢

App Runner ローンチタイムライン

  • 2022年
    • 2月 VPC Egress
    • 2月 Java ランタイムと Node.js 14
    • 3月 FIPS エンドポイント サポート
    • 4月 AWS X-Ray 統合
    • 8月 エイリアス レコードのサポート
    • 9月 クロスリージョン ECR のサポート
    • 9月 Node.js 16 ランタイム
    • 10月 .NET コア、PHP、Ruby、および Go のサポート
    • 10月 VPC Ingress (プライベート サービス)
  • GitHub ロードマップにアクセスして投票 https://github.com/aws/apprunner-roadmap/issues

関連セッション

  • CON406 AWS Fargate と AWS App Runner の詳細
  • CON305 App Runner を使用して、大規模なアプリケーションに Node.js をデプロイ
  • CON408 AWS App Runner を使用して、コンテナ化されたアプリケーションを数分でデプロイ