Amazon FargateとKubernetesについて|AWS(Amazon Web Services)
はじめに
昨今、多くの企業がITシステムを活用するようになり、その中でもクラウド化に対応するものが増えています。クラウド化を支える基盤技術の1つである「仮想化技術」も日々進化しており、そのなかでも近年、注目を集めているのが「コンテナ」です。
最近なにかとよく耳にするAWS(Amazon Web Services) もコンテナを稼働させるサービスを提供しており、主要なものは「Amazon Fargate」「Amazon ECS」「Amazon EKS」などがあります。
この記事では「Fargate(ファーゲート)」の概要と、コンテナオーケストレーションエンジンで知られるKubernetesとの関係を解説していきます。
AWSのコンテナサービス
まず、AWSが提供するコンテナサービスは大きく3種類に分類されます。
- レジストリ(コンテナイメージを一元管理する)…「Amazon ECR」
- コントロールプレーン(コンテナを管理する)…「Amazon Fargate」、「Amazon EC2」
- データプレーン(コンテナが動く場所)…「Amazon ECS」、「Amazon EKS」
この3種類はそれぞれが孤立したサービスというわけではなく、”レジストリ”にあるコンテナイメージが、”データプレーン”上でコンテナとして実行され、”コントロールプレーン”に管理されるといった構造となっています。
「Fargate」とは何か?
上記分類の”データプレーン”として提供されているのが、「Fargate(ファーゲート)」であり、コンテナを実行するサーバーレスサービスとして知られています。この「Fargate」は、AWS側がインスタンスを管理する方式であり、ホストマシンの管理・運用が不要で気にする必要がない点が最大の特長です。そのため、利用者はコンテナを登録するだけでよいわけです。また、同じくデータプレーンとして提供されている「Amazon EC2(Amazon Elastic Compute Cloud)」というサービスと比較すると、インフラレイヤーの管理が完全にマネージドであり、EC2インスタンスが不要なコンテナベースのサービスであるため、サーバのインスタンスタイプの選択やクラスタ管理がいらず、利用者はアプリケーションレイヤーのみに集中することができるという大きなメリットがあります。また、リソースの使用量による料金設定のため、無駄なコストが発生しない点でコストパフォーマンスに優れていることも特長の1つです。
「Kubernetes」とは何か?
まず、Kubernetesとは、コンテナの運用管理と自動化を目的に設計されたオープンソースのシステムです。
何故、ここでいきなりKubernetesが出てくるかというと、 実はAWSがコンテナサービスの”コントロールプレーン”として提供する「EKS」は”Elastic Kubernetes Service”の略で、「K」はKubernetesの「K」であるというわけです。「EKS」は、”独自の Kubernetes コントロールプレーンまたはノードをインストール、操作、維持することなく、AWS で Kubernetes を簡単に実行できるようにするマネージド型サービス”と定義されています。もちろんオープンソースのシステムではありますので、Kubernetesを単体で利用することはできますが「EKS」を利用することでAWS内の他のサービスとの連携がとりやすくなることは間違いありません。
コンテナオーケストレーションエンジンであるKubernetesを利用することによって、コンテナ運用における課題はそれぞれを詳細に作り込むことなく、解決することができます。
- コンテナのスケジューリング
- ローリングアップデート
- スケーリング/オートスケーリング
- コンテナの死活監視
- 障害時のセルフヒーリング
- サービスディスカバリ
- ロードバランシング
- データの管理
- ワークロードの管理
- ログの管理
- Infrastructure as Code
- その他エコシステムとの連携や拡張
「Fargate」と「Kubernetes」の関係
「Fargate」とAWSからEKSとして提供されている「Kubernetes」を組み合わせて利用することによって、リソースのプロビジョニングと管理なしでコンテナを実行できる場所とアプリケーションのローリングアップデート、コンテナ内での障害の自動ヒーリング、死活監視・ログ管理など、コンテナ運用を総合的に管理できる環境をそろえることができることになります。したがって、コンテナ化されたシステムを比較的容易に導入することができるようになります。
まとめ
今回紹介したサービスは、AWS内で提供されているため、そのほかのAWSサービスとも連携することが可能でありコンテナ運用におけるトータルサポートが実現できます。また、マネージドのサービスを活用することで新しい技術を導入するまでの学習コストやインフラ面の運用コストを低く抑えることができるのも利点といえるでしょう。