Contents
はじめに
近年ではAWSを利用してインフラ環境を構築・運用する機会が多くなってきているかと思いますが、作成するリソースの数によっては構築作業や運用保守でクラウドのメリットを十分に活用できていないという方もいらっしゃるのではないでしょうか。
今回はそのような課題を解消する手段の1つとして「コンテナ技術」やAWSで利用できるコンテナ関連のサービスをご紹介致します。
コンテナ技術とは
コンテナ技術とはOS上に仮想的な複数の独立した領域(コンテナ)を設け、その中でアプリケーションを実行・動作させるようにする仮想化技術です。
コンテナにアプリケーションとランタイム・依存ライブラリなどの実行環境をまとめることで、環境に依存することがなくなり素早いアプリケーション開発が可能です。
コンテナの主な製品としてはオープンソースソフトウェア(OSS)である「Docker」が挙げられることが多いですが、どのような製品か簡単にご説明します。
DockerはDocker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォームです。
Dockerでは、Dockerイメージと呼ばれるイメージファイルを元にして、Dockerコンテナというアプリケーションの実行環境を作成することが可能です。
このDockerイメージはDocker Hubという共有サイトへの共有や圧縮ファイルにしての共有が可能なため、同じDockerコンテナを誰でも作成することが可能です。
Docker HubにはDocker公式イメージなど信頼されるソースからのDockerイメージも多数共有されていますので、一度利用されることをおすすめします。
参考URL:
Docker公式サイト
https://www.docker.com/
Docker Hub
https://hub.docker.com/
AWSでのコンテナ関連サービス
ここからはAWSでのコンテナ関連サービスを3つ紹介致します。
① Amazon Elastic Container Service(ECS)
ECSは、コンテナのデプロイ、管理、スケーリングをサポートするフルマネージドサービスです。
ECSを使うことで、クラスタを使って複数のコンテナを効率よく管理し、アプリケーションの信頼性を向上させることが可能になります。
また、Amazon EC2や後述するAWS Fargateと組み合わせることで、プロビジョニングやスケーリングを自動化することも可能です。
参考URL:
Amazon Elastic Container Service サービスサイト
https://aws.amazon.com/jp/ecs/
② Amazon Elastic Kubernetes Service(EKS)
EKSは、Kubernetesクラスタのデプロイ、管理、スケーリングを支援するマネージドサービスです。
Kubernetesは、コンテナオーケストレーションの標準ツールとして普及していますが、Kubernetesを使用したコンテナの管理には高度な知識と運用技術が必要です。
しかし、EKSを利用すると、Kubernetesの管理部分をAWSが管理・提供するため、運用の負担を軽減させることが可能です。
参考URL:
Amazon Elastic Kubernetes Service サービスサイト
https://aws.amazon.com/jp/eks/
③ AWS Fargate
AWS Fargateは、サーバーレスでコンテナを運用できるサービスです。
AWS Fargateではサーバ側の管理をAWSが担当するため、ユーザー側ではサーバ側の管理・運用を意識せずにコンテナを構築・運用することが可能です。
参考URL:
AWS Fargate サービスサイト
https://aws.amazon.com/jp/fargate/
Amazon EC2とAWS Fargateの比較
コンテナを稼働させることが出来るサービス(データプレーン)にはAmazon EC2とAWS Fargate の2つを選択することが出来ますが、どういった特徴があるのか複数の項目について比較しました。
項目 | EC2 | Fargate |
---|---|---|
セキュリティ | ユーザーにセキュリティグループやキーペアの管理が必要 | AWSが管理するためユーザ側での対応は不要 |
パフォーマンス | インスタンスの起動に多少時間がかかる | 必要な時にすぐコンテナを起動することが可能 |
コスト | インスタンスの実行時間による課金 | メモリとvCPUの使用料はタスク数・コンテナの起動時間による課金 |
カスタマイズ性(自由度) | ユーザ側で細かいカスタマイズが可能で自由度は高い | カスタマイズできる項目が少なく自由度は低い |
インフラストラクチャの運用管理 | ユーザにてパッチ適用などの運用作業が必要 | AWSが管理するためユーザ側での作業は不要 |
今回の比較結果より、インフラ側の運用管理を最小限に抑えたい、またはすぐにコンテナを動かしたい場合はAWS Fargateを選ぶのが良いのではないでしょうか。
カスタマイズ要件やコストメリットを出したいという場合にはAmazon EC2も選択肢になりますが、今後の運用対応や管理コストも含めて検討されることを推奨致します。
おわりに
今回はコンテナ技術およびAWSでのコンテナ関連サービスについてご紹介致しました。
弊社ではAWSやコンテナ技術に力を入れておりますので、AWSやコンテナに関するご相談やご提案の依頼がありましたらお気軽にご連絡頂けますと幸いです。
記事: Y.M