[参加レポート] Container Night 2019.10.28 #AWSLoft
はじめに
「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 Service (ECR)
- イメージレジストリ (コンテナイメージの保管場所)
- Amazon Elastic Container Registry (ECR)
- プライベートなレジストリサービス
- IAM連携可能。ユーザーごとにイメージ利用の権限設定など
- Amazon Elastic Container Registry (ECR)
- コンテナの実行環境
- 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コンテナサービスをハンズオンを通してざっくり理解できる 良いイベントでした!