Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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
サービス目的と成長、運用を考慮した 無理のないコンテナ運用を。