[参加レポート] Container Night 2019.10.28 #AWSLoft

2019.10.29

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

はじめに

「AWS Pop-Up Loft Osaka」 にはもう行きましたでしょうか?

【AWS Loftが大阪に期間限定オープン!】オープンしたてのAWS Pop-Up Loft Osakaで早速リモートワークしてみた #awsloft

おしゃれな コ・ワーキングスペースセミナー/イベント の会場、 技術的な相談の場 ( Ask An Expert ) ・・・と、期間限定なのがとても惜しい充実した空間となっています。

▲ DeepRacer 実機を拝められたことが個人的に嬉しい…

さて、AWS Pop-Up Loft Osakaでは セミナー/イベントが開催されており、 今回 私は こちらの Container Night のセミナーに参加させていただきました。

本記事はその参加レポートとなります!

セミナー概要

▼ About the event

コンテナを仕事に活かしたい、でも使いどころがわからないという方を対象に、AWSコンテナサービスの概要と、 AWSのお客様のコンテナ活用事例をご紹介いたします。 また後半はコンテナのハンズオンを通して、基本的なコンテナサービスの操作を学んでいただきます

▼ Who should attend

  • コンテナが実際にどのように活用されているか、事例やユースケースを知りたい方
  • AWSでコンテナアプリケーションを動かす体験をしたい方

(https://containernightosaka.splashthat.com より引用)

AWSコンテナサービス入門

スピーカー

濵 真一 氏

  • アマゾン ウェブ サービス ジャパン 株式会社
  • ソリューション アーキテクト

内容

▼なぜコンテナか

  • コンテナが選択される理由
    • run anywhere :: どこでも実行できる
    • portablity :: 別の環境へ持ち運べる
    • isolated processes :: 他のプロセスとの分離
  • 改めてコンテナとは
    • リソースが隔離されたプロセス
    • VMとの違い
      • VM … hypervisor 上にそれぞれの GuestOS, それぞれのアプリケーションが動作
      • コンテナ … Dockerエンジン上にそれぞれのアプリケーションが動作
  • Docker
    • コンテナのデファクトスタンダード
    • Docker でできること/できないこと
      • 1 サーバー上のコンテナライフサイクルの管理
      • 複数サーバーにあるコンテナに対するオペレーションはスコープ外

▼ AWSのコンテナサービス紹介

  • コンテナオーケストレーション
    • Amazon Elastic Container Service (ECR)
      • クラウドでコンテナを利用するためのオーケストレーター
      • 「タスク」「サービス」というシンプルなリソース表現
    • Amazon Elastic Kubernetes Service (EKS)
      • 運用難易度の高い Kubernetesマスターをマネージドサービスで提供
      • エコシステムの OSSやツールを利用可能
      • 「Pod」「Deployment」「Service」「Job」などリソースに代表される高い表現力
  • イメージレジストリ (コンテナイメージの保管場所)
    • Amazon Elastic Container Registry (ECR)
      • プライベートなレジストリサービス
      • IAM連携可能。ユーザーごとにイメージ利用の権限設定など
  • コンテナの実行環境
    • EC2インスタンスのこと
    • コンテナが動く環境 (EC2) の運用管理が必要
      • EC2上の OS,Docker Agent へのパッチ適用
      • EC2インスタンスのスケーリング
    • AWS Fargate
      • Fargate 上でコンテナを起動
      • EC2インスタンスのプロビジョニング、スケール、管理不要

▼ 現実世界のコンテナワークロード

  • その他のコンテナ関連ワークロード
    • AWS Cloud Map … クラウドリソースのためのサービスディスカバリ
    • App Mesh … アプリケーションレベルのネットワークサービス
    • CloudWatch Container Insights
      • コンテナワークロードのためのモニタリングサービス
      • 自動ダッシュボードによる可視化、フィルタリング
      • Logs Insights による分析
  • 周辺を支えるサービス軍
    • CodeCommit/CodeBuild
    • RDS/Aurora
    • CloudWatch など…
  • コンピューティングの多様な選択肢
    • Lambda :: 運用コスト低, コントロール低
    • コンテナ :: 運用コスト中,コントロール中
    • EC2 :: 運用コスト高 コントロール高

関西コンテナ事例登壇

スピーカー

鷲見 啓志 氏

  • Happy Elements株式会社
    • モバイルゲームの開発・運営を手掛ける会社
    • ラストピリオド/あんさんぶるスターズ!などで有名

内容

▼ コンテナ移行の経緯

  • 移行前のアーキテクチャ
    • ロードバランサ → WEB/APIサーバ → 各DB(Cassandra, MySQLなど) の構成
    • ログはFluentdで収集
  • 移行にAWSを選択した理由
    • ゲーム事例の多さ・情報の多さ
    • Aurora の取り回しの良さ
      • (Cassandraの運用から離れたいというエンジニアの要望)
  • AWS上の新アーキテクチャ
    • CloudFront → ALB → ECS → 各DB (Aurora, Elasticacheなど)

▼ なぜコンテナ/ECSを選んだのか

  • コンテナを選択した理由
    • 環境構築の容易さ
    • Docker が動いている環境であればどこでも実行できる
    • 技術的負債の返済
  • (EKSではなく) ECSを選択した理由
    • EKSと比べてシンプル (k8sに対する深い理解が必要)
    • 運用管理にかかる人的コストは抑えたい

▼ EC2起動タイプ or Fargate起動タイプ

  • 違い
    • EC2起動タイプ … スペックの選択肢が広い + GPU利用可が, EC2管理が必要
    • Fargate起動タイプ … EC2管理が不要だが、スペック選択肢が狭い + GPU利用不可
  • できる限り NoOps を目指したい
    • → Fargate がうってつけ。魅力的に感じた
  • しかし、Fargate上にスマートフォンゲームを載せられるのか
    • スマートフォンゲームはイベント時にトラフィックが急激に倍増する
    • そのため、 素早いスケーリング (素早いコンテナ起動) が求められる
    • スケール性能を検証した結果 EC2起動タイプがより素早くコンテナを起動できた
      • EC2起動タイプではインスタンスにキャッシュされたイメージを利用できる
      • Fargate は特性上イメージキャッシュを利用できない
  • → 最終的に、EC2起動タイプを選択した

▼ 導入して困っていること/良かったこと/今後

  • 困っていること
    • コンテナ、Docker、ECSの教育
    • ビルド、デプロイについて
      • 今までのデプロイワークフローが使えない
      • CodeBuild などを利用
    • ECSタスクの構成について
      • 1インスタンスにどれだけタスクを動かせば最適なのか
  • 良かったこと
    • ローカル開発環境構築が容易になった
    • AWS開発環境構築が容易になった
  • 今後
    • Docker イメージのサイズダウン
    • スポットインスタンス/リザーブドインスタンス の利用
    • Fargateの利用 … コンテナ起動時間さえ解決できれば利用したい。今後のアップデートに期待

AWS Fargate クイックハンズオン

スピーカー

河野 信吾 氏

  • アマゾン ウェブ サービス ジャパン 株式会社
  • ソリューション アーキテクト

内容

自前の AWSアカウントを使って Fargate 上にコンテナ環境(WordPress) を構築するハンズオンです。

おおまかな流れは以下の通り。

  • ネットワーク基盤 (VPC,Subnetなど) の作成
    • CloudFormation テンプレートで作成
  • ECS & Fargate でコンテナ起動
    • シングルタスク構成
  • システムのスケールアウト
    • サービスを更新して複数タスクに設定
  • S3との連携
    • 画像等の静的ファイルを S3に保存、利用
  • ログとメトリクス取得
    • CloudWatch Logsでログを確認
    • Container Insights で ECSのメトリクスを確認
  • コンテナイメージの更新
    • タスク定義のイメージパスを変更
    • WordPress環境が変わったことを確認
  • オートスケール
    • オートスケールの設定を行う
    • 環境に負荷を書けてタスク数が増えることを確認
  • 後片付け
    • リソースの削除

おわりに

コンテナの概要、AWSの各種コンテナ関連サービスを理解することができました。 また、ハンズオンでは Fargate を使ったコンテナ起動を実際に体験できました。 コンテナを起動するための EC2インスタンスや 手前に配置している ALBの 細かい設定・管理を気にすることなく、よしなにコンテナを配置できる Fargate の 便利さに感動・・・。

しかし、Fargateが万能というわけではなく、要件によっては別の手段 (EC2起動タイプ、もしくは そもそも他のサービス: Lambdaや EC2など) を選択する必要があることは 入門や事例紹介のセッションで学ぶことができました。

AWSコンテナサービスをハンズオンを通してざっくり理解できる 良いイベントでした!