AWSコンテナサービス入門 / nds60-jaws-ug
by
Hayato Imai
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
AWSコンテナサービス入門 NDS第60回 JAWS-UG長岡第3回
Slide 2
Slide 2 text
自己紹介 ● @hayajo (id:hayajo_77) ● 株式会社はてな ● Mackerelチーム SRE
Slide 3
Slide 3 text
今日のゴール ● コンテナとは何かを理解する ● AWSのコンテナサービスの特性を理解する
Slide 4
Slide 4 text
話すこと ● コンテナの基礎知識 ● コンテナ運用の課題 ● AWSコンテナサービスの紹介
Slide 5
Slide 5 text
話さないこと ● アプリケーションのコンテナ化の手順 ● コンテナ実行環境の構築、運用方法
Slide 6
Slide 6 text
コンテナとは?
Slide 7
Slide 7 text
コンテナ ● OSリソースを隔離・制限したプロセス ● 仮想マシンのようなサンドボックスを実現
Slide 8
Slide 8 text
コンテナが隔離・制限するもの ● PID、マウントテーブル、ネットワークなどを隔離 ● CPU、メモリ、I/Oなどを制限 ● 権限を細分化して制限 see also. 「コンテナ技術入門 - 仮想化との違いを知り、要素技術を触って学ぼう」 https://employment.en-japan.com/engineerhub/entry/2019/02/05/103000
Slide 9
Slide 9 text
Docker ● 複数コンテナのライフサイクル管理 ● Dockerイメージの管理 ○ アプリケーションと依存関係をパッケージ化 ○ コンテナのルートファイルシステムとして利用 ○ 環境の一貫性、再現性を実現
Slide 10
Slide 10 text
プロセス コンテナ VM 仮想化 メモリ OS ハードウェア Isolation 低 高 フットプリント 小 大 プロセス・コンテナ・VM
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
なぜコンテナか ● Consistency ● Portability ● Isolation ● Efficiency
Slide 13
Slide 13 text
コンテナの運用
Slide 14
Slide 14 text
Dockerのスコープ ● シングルホストのコンテナ ○ ホストがダウンしたらそれまで ● 冗長性、可用性を高めるには ○ 複数ホストでのコンテナ運用が必要 ○ Dockerのスコープ外
Slide 15
Slide 15 text
コンテナの運用 ● ライフサイクル管理 ● デプロイ ● ヘルスチェック ● モニタリング ● スケーリング ● スケジューリング ● ネットワーキング ● 構成管理 etc.
Slide 16
Slide 16 text
運用の自動化が必要 ● 信頼性の向上 ● 運用負荷の軽減
Slide 17
Slide 17 text
AWSのコンテナサービス
Slide 18
Slide 18 text
コンテナ運用を自動化するAWSサービス ● AWS Elastic Beanstalk (EB) ● Amazon Elastic Container Service (ECS) ● Amazon Elastic Kubernetes Service (EKS)
Slide 19
Slide 19 text
AWS Elastic Beanstalk (EB)
Slide 20
Slide 20 text
EB ● PaaS ○ インフラの手間を削減し、サービス開発に注力する ● ウェブサービスを提供するために必要なコンポーネントを一元管理 ○ ネットワーク(VPC)、ロードバランサ(ELB)、VM(EC2)、データベース (RDS)、モニタリング(CloudWatch) など
Slide 21
Slide 21 text
Dockerもサポート ● Single Container (Docker) ○ 単一のコンテナをデプロイ ● Multi Container (ECS) ○ 依存関係にある複数のコンテナをまとめてデプロイ ○ ECSのTaskとして実行
Slide 22
Slide 22 text
スケーリング ● EC2単位でスケーリング ○ Amazon EC2 Auto Scaling ● コンテナ/Task単位ではスケールできない ○ EC2インスタンスとコンテナ/Taskは1対1の関係 ○ VMなのでスケールの速度はそれなり
Slide 23
Slide 23 text
EBを選択する理由 ● インフラの構築、運用の手間を削減したい ● 頻繁にスケールする必要がない ● 独立したサービスとして完結できる ● コンテナを使い始めたばかり
Slide 24
Slide 24 text
Amazon Elastic Container Service (ECS)
Slide 25
Slide 25 text
ECS ● コンテナオーケストレーションサービス ● コンテナの宣言的管理 ● 柔軟なスケジューリングとスケーリング ● Service → Task → Container というトポロジをとる ○ スケールの最小単位はTask ■ 依存関係にある複数のコンテナをまとめた論理的単位
Slide 26
Slide 26 text
コンテナオーケストレーション? ● コンテナの運用を自動化する
Slide 27
Slide 27 text
コントロールプレーンとデータプレーン ● コントロールプレーン ○ コンテナを管理する場所 ● データプレーン ○ コンテナが稼働する場所 コントロールプレーン デプロイ、スケジューリング、スケーリング、コンテ ナの構成管理 データプレーン コンテナの実行、状態のフィードバック
Slide 28
Slide 28 text
in ECS ● コントロールプレーン ○ ECS ● データプレーン ○ EC2起動タイプ ○ Fargate起動タイプ コントロールプレーン データプレーン
Slide 29
Slide 29 text
EC2起動タイプ ● データプレーンとしてEC2インスタンスによるクラスタを構築する ● EC2インスタンスはユーザーが構築・管理する必要がある ○ キャパシティ管理、セキュリティ対策が必要 ○ ecs-agentのアップデート
Slide 30
Slide 30 text
Fargate起動タイプ ● フルマネージドのデータプレーン ○ コンテナホストの管理不要 ○ コンテナだけに注力できる ● コンテナに直接アタッチできないためデバッグが難しい “また、FargateコンテナにSSHして、内部の情報を確認できるようにするなども予定している” https://www.atmarkit.co.jp/ait/articles/1906/19/news022.html
Slide 31
Slide 31 text
ECSを選択する理由 ● すでにAWSで稼動しているシステムのコンテナ化 ● マイクロサービスも視野に入れている ● コスト最適化
Slide 32
Slide 32 text
EC2起動タイプ vs Fargate起動タイプ
Slide 33
Slide 33 text
EC2起動タイプを選択する理由 ● 大規模ワークロードで実行コストを最適化したい ○ リザーブドインスタンスやスポットインスタンスを活用
Slide 34
Slide 34 text
Fargate起動タイプを選択する理由 ● 大規模ワークロードで運用コストを最適化したい ● 小規模ワークロードでときどき負荷が高くなる ● 負荷が小さい ● バッチ処理
Slide 35
Slide 35 text
Amazon Elastic Kubernetes Service (EKS)
Slide 36
Slide 36 text
EKS ● Kubernetesのマネージドサービス ● フルマネージドのコントロールプレーンを提供 ● データプレーンはユーザーが構築・管理する ○ ECS/EC2起動タイプと同じような感じ ○ Fargate for EKSに期待 https://github.com/aws/containers-roadmap/issues/32
Slide 37
Slide 37 text
コントロールプレーン EKS データプレーン
Slide 38
Slide 38 text
Kubernetes? ● OSSのコンテナオーケストレーションツール ● 高い拡張性 ○ インフラの拡張、APIの拡張 ● 充実したエコシステム
Slide 39
Slide 39 text
ref. Cloud Native Landscape https://github.com/cncf/landscape
Slide 40
Slide 40 text
EKSのバージョンライフサイクル ref. Amazon EKS バージョンライフライクルの更新 https://aws.amazon.com/jp/blogs/news/updates-to-amazon-eks-version-lifecycle/
Slide 41
Slide 41 text
EKSを選択する理由 ● オンプレでKubernetesを運用してい(る|た)が運用負担を減らしたい ● Kubernetesのエコシステムを利用したい ● 運用を積極的に自動化したい ● ベンダーロックインの回避 ● 冗長性、可用性を更に高めたい
Slide 42
Slide 42 text
各サービスの特性
Slide 43
Slide 43 text
Simplicity Convenience Flexibility EB ECS EKS
Slide 44
Slide 44 text
まとめ
Slide 45
Slide 45 text
まとめ ● コンテナはOSを仮想化してリソースを分割する ● コンテナの冗長性、可用性を高めるには運用の自動化が必要 ● AWSには特性の異なる複数のコンテナ運用自動化サービスがある
Slide 46
Slide 46 text
(そもそも) コンテナ運用に至るまでの道のり
Slide 47
Slide 47 text
ref. Cloud Native Landscape https://github.com/cncf/landscape
Slide 48
Slide 48 text
サービス目的と成長、運用を考慮した 無理のないコンテナ運用を。