AWSコンテナサービス入門 / nds60-jaws-ug

AWSコンテナサービス入門 / nds60-jaws-ug

87425b9ed1c97009802d66c6aebbfcdb?s=128

Hayato Imai

June 22, 2019
Tweet

Transcript

  1. AWSコンテナサービス入門
 NDS第60回 JAWS-UG長岡第3回
 
 


  2. 自己紹介
 • @hayajo (id:hayajo_77)
 • 株式会社はてな
 • Mackerelチーム SRE


  3. 今日のゴール
 • コンテナとは何かを理解する
 • AWSのコンテナサービスの特性を理解する


  4. 話すこと
 • コンテナの基礎知識
 • コンテナ運用の課題
 • AWSコンテナサービスの紹介


  5. 話さないこと
 • アプリケーションのコンテナ化の手順
 • コンテナ実行環境の構築、運用方法


  6. コンテナとは?


  7. コンテナ
 • OSリソースを隔離・制限したプロセス
 • 仮想マシンのようなサンドボックスを実現


  8. コンテナが隔離・制限するもの
 • PID、マウントテーブル、ネットワークなどを隔離
 • CPU、メモリ、I/Oなどを制限
 • 権限を細分化して制限
 see also. 「コンテナ技術入門

    - 仮想化との違いを知り、要素技術を触って学ぼう」 
 https://employment.en-japan.com/engineerhub/entry/2019/02/05/103000 

  9. Docker
 • 複数コンテナのライフサイクル管理
 • Dockerイメージの管理
 ◦ アプリケーションと依存関係をパッケージ化
 ◦ コンテナのルートファイルシステムとして利用
 ◦

    環境の一貫性、再現性を実現

  10. プロセス コンテナ VM 仮想化 メモリ OS ハードウェア Isolation 低 高

    フットプリント 小 大 プロセス・コンテナ・VM

  11. None
  12. なぜコンテナか
 • Consistency
 • Portability
 • Isolation
 • Efficiency


  13. コンテナの運用


  14. Dockerのスコープ
 • シングルホストのコンテナ
 ◦ ホストがダウンしたらそれまで
 • 冗長性、可用性を高めるには
 ◦ 複数ホストでのコンテナ運用が必要
 ◦

    Dockerのスコープ外

  15. コンテナの運用
 • ライフサイクル管理
 • デプロイ
 • ヘルスチェック
 • モニタリング
 •

    スケーリング
 • スケジューリング
 • ネットワーキング
 • 構成管理
 etc.

  16. 運用の自動化が必要
 • 信頼性の向上
 • 運用負荷の軽減


  17. AWSのコンテナサービス


  18. コンテナ運用を自動化するAWSサービス
 • AWS Elastic Beanstalk (EB)
 • Amazon Elastic Container

    Service (ECS)
 • Amazon Elastic Kubernetes Service (EKS)

  19. AWS Elastic Beanstalk (EB)


  20. EB
 • PaaS
 ◦ インフラの手間を削減し、サービス開発に注力する
 • ウェブサービスを提供するために必要なコンポーネントを一元管理
 ◦ ネットワーク(VPC)、ロードバランサ(ELB)、VM(EC2)、データベース (RDS)、モニタリング(CloudWatch)

    など

  21. Dockerもサポート
 • Single Container (Docker)
 ◦ 単一のコンテナをデプロイ
 • Multi Container

    (ECS)
 ◦ 依存関係にある複数のコンテナをまとめてデプロイ
 ◦ ECSのTaskとして実行
 

  22. スケーリング
 • EC2単位でスケーリング
 ◦ Amazon EC2 Auto Scaling
 • コンテナ/Task単位ではスケールできない


    ◦ EC2インスタンスとコンテナ/Taskは1対1の関係
 ◦ VMなのでスケールの速度はそれなり

  23. EBを選択する理由
 • インフラの構築、運用の手間を削減したい
 • 頻繁にスケールする必要がない
 • 独立したサービスとして完結できる
 • コンテナを使い始めたばかり


  24. Amazon Elastic Container Service (ECS)


  25. ECS
 • コンテナオーケストレーションサービス
 • コンテナの宣言的管理
 • 柔軟なスケジューリングとスケーリング
 • Service →

    Task → Container というトポロジをとる
 ◦ スケールの最小単位はTask
 ▪ 依存関係にある複数のコンテナをまとめた論理的単位

  26. コンテナオーケストレーション?
 • コンテナの運用を自動化する


  27. コントロールプレーンとデータプレーン
 • コントロールプレーン
 ◦ コンテナを管理する場所
 • データプレーン
 ◦ コンテナが稼働する場所
 コントロールプレーン

    デプロイ、スケジューリング、スケーリング、コンテ ナの構成管理 データプレーン コンテナの実行、状態のフィードバック
  28. in ECS
 • コントロールプレーン
 ◦ ECS
 • データプレーン
 ◦ EC2起動タイプ


    ◦ Fargate起動タイプ
 コントロールプレーン データプレーン
  29. EC2起動タイプ
 • データプレーンとしてEC2インスタンスによるクラスタを構築する
 • EC2インスタンスはユーザーが構築・管理する必要がある
 ◦ キャパシティ管理、セキュリティ対策が必要
 ◦ ecs-agentのアップデート


  30. Fargate起動タイプ
 • フルマネージドのデータプレーン
 ◦ コンテナホストの管理不要
 ◦ コンテナだけに注力できる
 • コンテナに直接アタッチできないためデバッグが難しい
 “また、FargateコンテナにSSHして、内部の情報を確認できるようにするなども予定している”

    
 https://www.atmarkit.co.jp/ait/articles/1906/19/news022.html 

  31. ECSを選択する理由
 • すでにAWSで稼動しているシステムのコンテナ化
 • マイクロサービスも視野に入れている
 • コスト最適化


  32. EC2起動タイプ
 vs
 Fargate起動タイプ


  33. EC2起動タイプを選択する理由
 • 大規模ワークロードで実行コストを最適化したい
 ◦ リザーブドインスタンスやスポットインスタンスを活用


  34. Fargate起動タイプを選択する理由
 • 大規模ワークロードで運用コストを最適化したい
 • 小規模ワークロードでときどき負荷が高くなる
 • 負荷が小さい
 • バッチ処理


  35. Amazon Elastic Kubernetes Service (EKS)


  36. EKS
 • Kubernetesのマネージドサービス
 • フルマネージドのコントロールプレーンを提供
 • データプレーンはユーザーが構築・管理する
 ◦ ECS/EC2起動タイプと同じような感じ
 ◦

    Fargate for EKSに期待
 https://github.com/aws/containers-roadmap/issues/32 

  37. コントロールプレーン EKS
 データプレーン

  38. Kubernetes?
 • OSSのコンテナオーケストレーションツール
 • 高い拡張性
 ◦ インフラの拡張、APIの拡張
 • 充実したエコシステム


  39. ref. Cloud Native Landscape https://github.com/cncf/landscape 


  40. EKSのバージョンライフサイクル
 ref. Amazon EKS バージョンライフライクルの更新 
 https://aws.amazon.com/jp/blogs/news/updates-to-amazon-eks-version-lifecycle/ 


  41. EKSを選択する理由
 • オンプレでKubernetesを運用してい(る|た)が運用負担を減らしたい
 • Kubernetesのエコシステムを利用したい
 • 運用を積極的に自動化したい
 • ベンダーロックインの回避
 •

    冗長性、可用性を更に高めたい

  42. 各サービスの特性


  43. Simplicity
 Convenience
 Flexibility
 EB
 ECS
 EKS


  44. まとめ


  45. まとめ
 • コンテナはOSを仮想化してリソースを分割する
 • コンテナの冗長性、可用性を高めるには運用の自動化が必要
 • AWSには特性の異なる複数のコンテナ運用自動化サービスがある


  46. (そもそも)
 コンテナ運用に至るまでの道のり


  47. ref. Cloud Native Landscape https://github.com/cncf/landscape 


  48. サービス目的と成長、運用を考慮した
 無理のないコンテナ運用を。