$30 off During Our Annual Pro Sale. View Details »

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

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

Hayato Imai

June 22, 2019
Tweet

More Decks by Hayato Imai

Other Decks in Technology

Transcript

  1. AWSコンテナサービス入門

    NDS第60回 JAWS-UG長岡第3回



    View Slide

  2. 自己紹介

    ● @hayajo (id:hayajo_77)

    ● 株式会社はてな

    ● Mackerelチーム SRE


    View Slide

  3. 今日のゴール

    ● コンテナとは何かを理解する

    ● AWSのコンテナサービスの特性を理解する


    View Slide

  4. 話すこと

    ● コンテナの基礎知識

    ● コンテナ運用の課題

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


    View Slide

  5. 話さないこと

    ● アプリケーションのコンテナ化の手順

    ● コンテナ実行環境の構築、運用方法


    View Slide

  6. コンテナとは?


    View Slide

  7. コンテナ

    ● OSリソースを隔離・制限したプロセス

    ● 仮想マシンのようなサンドボックスを実現


    View Slide

  8. コンテナが隔離・制限するもの

    ● PID、マウントテーブル、ネットワークなどを隔離

    ● CPU、メモリ、I/Oなどを制限

    ● 権限を細分化して制限

    see also. 「コンテナ技術入門 - 仮想化との違いを知り、要素技術を触って学ぼう」 

    https://employment.en-japan.com/engineerhub/entry/2019/02/05/103000 


    View Slide

  9. Docker

    ● 複数コンテナのライフサイクル管理

    ● Dockerイメージの管理

    ○ アプリケーションと依存関係をパッケージ化

    ○ コンテナのルートファイルシステムとして利用

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


    View Slide

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


    View Slide

  11. View Slide

  12. なぜコンテナか

    ● Consistency

    ● Portability

    ● Isolation

    ● Efficiency


    View Slide

  13. コンテナの運用


    View Slide

  14. Dockerのスコープ

    ● シングルホストのコンテナ

    ○ ホストがダウンしたらそれまで

    ● 冗長性、可用性を高めるには

    ○ 複数ホストでのコンテナ運用が必要

    ○ Dockerのスコープ外


    View Slide

  15. コンテナの運用

    ● ライフサイクル管理

    ● デプロイ

    ● ヘルスチェック

    ● モニタリング

    ● スケーリング

    ● スケジューリング

    ● ネットワーキング

    ● 構成管理

    etc.


    View Slide

  16. 運用の自動化が必要

    ● 信頼性の向上

    ● 運用負荷の軽減


    View Slide

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


    View Slide

  18. コンテナ運用を自動化するAWSサービス

    ● AWS Elastic Beanstalk (EB)

    ● Amazon Elastic Container Service (ECS)

    ● Amazon Elastic Kubernetes Service (EKS)


    View Slide

  19. AWS Elastic Beanstalk (EB)


    View Slide

  20. EB

    ● PaaS

    ○ インフラの手間を削減し、サービス開発に注力する

    ● ウェブサービスを提供するために必要なコンポーネントを一元管理

    ○ ネットワーク(VPC)、ロードバランサ(ELB)、VM(EC2)、データベース
    (RDS)、モニタリング(CloudWatch) など


    View Slide

  21. Dockerもサポート

    ● Single Container (Docker)

    ○ 単一のコンテナをデプロイ

    ● Multi Container (ECS)

    ○ 依存関係にある複数のコンテナをまとめてデプロイ

    ○ ECSのTaskとして実行


    View Slide

  22. スケーリング

    ● EC2単位でスケーリング

    ○ Amazon EC2 Auto Scaling

    ● コンテナ/Task単位ではスケールできない

    ○ EC2インスタンスとコンテナ/Taskは1対1の関係

    ○ VMなのでスケールの速度はそれなり


    View Slide

  23. EBを選択する理由

    ● インフラの構築、運用の手間を削減したい

    ● 頻繁にスケールする必要がない

    ● 独立したサービスとして完結できる

    ● コンテナを使い始めたばかり


    View Slide

  24. Amazon Elastic Container Service (ECS)


    View Slide

  25. ECS

    ● コンテナオーケストレーションサービス

    ● コンテナの宣言的管理

    ● 柔軟なスケジューリングとスケーリング

    ● Service → Task → Container というトポロジをとる

    ○ スケールの最小単位はTask

    ■ 依存関係にある複数のコンテナをまとめた論理的単位


    View Slide

  26. コンテナオーケストレーション?

    ● コンテナの運用を自動化する


    View Slide

  27. コントロールプレーンとデータプレーン

    ● コントロールプレーン

    ○ コンテナを管理する場所

    ● データプレーン

    ○ コンテナが稼働する場所

    コントロールプレーン
    デプロイ、スケジューリング、スケーリング、コンテ
    ナの構成管理
    データプレーン
    コンテナの実行、状態のフィードバック

    View Slide

  28. in ECS

    ● コントロールプレーン

    ○ ECS

    ● データプレーン

    ○ EC2起動タイプ

    ○ Fargate起動タイプ

    コントロールプレーン
    データプレーン

    View Slide

  29. EC2起動タイプ

    ● データプレーンとしてEC2インスタンスによるクラスタを構築する

    ● EC2インスタンスはユーザーが構築・管理する必要がある

    ○ キャパシティ管理、セキュリティ対策が必要

    ○ ecs-agentのアップデート


    View Slide

  30. Fargate起動タイプ

    ● フルマネージドのデータプレーン

    ○ コンテナホストの管理不要

    ○ コンテナだけに注力できる

    ● コンテナに直接アタッチできないためデバッグが難しい

    “また、FargateコンテナにSSHして、内部の情報を確認できるようにするなども予定している” 

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


    View Slide

  31. ECSを選択する理由

    ● すでにAWSで稼動しているシステムのコンテナ化

    ● マイクロサービスも視野に入れている

    ● コスト最適化


    View Slide

  32. EC2起動タイプ

    vs

    Fargate起動タイプ


    View Slide

  33. EC2起動タイプを選択する理由

    ● 大規模ワークロードで実行コストを最適化したい

    ○ リザーブドインスタンスやスポットインスタンスを活用


    View Slide

  34. Fargate起動タイプを選択する理由

    ● 大規模ワークロードで運用コストを最適化したい

    ● 小規模ワークロードでときどき負荷が高くなる

    ● 負荷が小さい

    ● バッチ処理


    View Slide

  35. Amazon Elastic Kubernetes Service (EKS)


    View Slide

  36. EKS

    ● Kubernetesのマネージドサービス

    ● フルマネージドのコントロールプレーンを提供

    ● データプレーンはユーザーが構築・管理する

    ○ ECS/EC2起動タイプと同じような感じ

    ○ Fargate for EKSに期待

    https://github.com/aws/containers-roadmap/issues/32 


    View Slide

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

    データプレーン

    View Slide

  38. Kubernetes?

    ● OSSのコンテナオーケストレーションツール

    ● 高い拡張性

    ○ インフラの拡張、APIの拡張

    ● 充実したエコシステム


    View Slide

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


    View Slide

  40. EKSのバージョンライフサイクル

    ref. Amazon EKS バージョンライフライクルの更新 

    https://aws.amazon.com/jp/blogs/news/updates-to-amazon-eks-version-lifecycle/ 


    View Slide

  41. EKSを選択する理由

    ● オンプレでKubernetesを運用してい(る|た)が運用負担を減らしたい

    ● Kubernetesのエコシステムを利用したい

    ● 運用を積極的に自動化したい

    ● ベンダーロックインの回避

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


    View Slide

  42. 各サービスの特性


    View Slide

  43. Simplicity

    Convenience
 Flexibility

    EB
 ECS

    EKS


    View Slide

  44. まとめ


    View Slide

  45. まとめ

    ● コンテナはOSを仮想化してリソースを分割する

    ● コンテナの冗長性、可用性を高めるには運用の自動化が必要

    ● AWSには特性の異なる複数のコンテナ運用自動化サービスがある


    View Slide

  46. (そもそも)

    コンテナ運用に至るまでの道のり


    View Slide

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


    View Slide

  48. サービス目的と成長、運用を考慮した

    無理のないコンテナ運用を。


    View Slide