AWSのコンテナ関連サービスを調べる
概要
AWSのコンテナ関連サービスを調べた。
AWSのコンテナ関連サービス
ECS/EKS/Fargate/EC2
コントロールプレーン
コンテナの管理:クラスターで Docker コンテナを簡単に実行、停止、管理できる
ECS
Cluster > Service > Task difinition > Container definition という概念がある。
Kubernetes の Cluster(Node) > Ingress(Service) > Deployment > Pod とよく似た概念と思われる。
EKS
Kubernetes を使用する場合はこれ。
標準的な Kubernetes 環境で実行されるアプリケーションは EKS と完全な互換性がある。
データプレーン
EC2(Fargate) を使用して ECSを使う、EC2を使用して EKS を使うという形になる。
Fargate
サーバーやクラスターの管理の必要なしにコンテナを実行できる。
-> コンテナを実行するために仮想マシンのクラスターをプロビジョニング、設定、スケールする必要がない。
-> 従来のEC2の場合は、「これ以上コンテナを増やしたらメモリが不足しそうだから、EC2のインスタンスタイプを変えようかな」がある。
2019年2月現時点ではEKSには対応していない。
EC2
高スペックのEC2を事前に選んでおけば、Fargate より速度が向上できることもある。
Elastic Beanstalk
Elastic Beanstalk Multi-container Docker
Elastic Beanstalk は Amazon Elastic Container Service (Amazon ECS) を使用して、マルチコンテナ Docker 環境へのコンテナのデプロイを調整します。Amazon ECS には、Docker コンテナを実行するインスタンスのクラスターを管理するためのツールが用意されています。Elastic Beanstalk は、クラスターの作成やタスクの定義と実行などの Amazon ECS タスクを処理します。
Elastic Beanstalk でも ECS を使っている
EC2でDocker
EC2 インスタンスに Docker をインストールして、Docker コンテナを実行することも可能。
GCE で Docker コンテナを実行できるのと同様。
所感
AWS でコンテナを実行する(k8sでない)なら ECS + Fargate が良さそう。
インフラを意識せず済み、冗長化・スケールなども問題なさそう。
で、Beanstalk Multi-container Docker がどうなのか...
ECS+Fargate vs ElasticBeanstalk
ネットより
http://labs.septeni.co.jp/entry/2016/04/05/105249
何がどう違うの?というところが解らなかったので、AWSのソリューションアーキテクトの方に弊社へ来ていただいてサービスのご紹介を頂きました。 Beanstalkの中でECSが動いているので大きな違いはありませんが、Beanstalkの方は元々PaaSなので、色々元々組み込まれて便利に使え、.ebextensionsというYAMLで管理できるようになっていいます。 ECSはdockerに特化したもので、最新機能はECSの方が組み込まれるのが早いそうです。 .ebextensionsを使っていくと何でもできちゃうので運用めっちゃ大変そうだなーと思って、シンプルにECSを試しました。
https://qiita.com/naomichi-y/items/d933867127f27524686a
Beanstalk Multi-container Dockerは、ECSを抽象化してRDSやログ管理の機能を合わせて提供してくれる。ボタンを何度か押すだけでRubyやNode.jsのアプリケーションが起動してしまう。 一見楽に見えるが、ブラックボックスな部分もありトラブルシュートでハマりやすいので、素直にECSを使った方が良いと思う
https://www.wantedly.com/companies/pring/post_articles/124469
両方試した
両方試してみて、最初、
- ElasticBeanstalk の方が環境構築、デプロイが楽。
- ElasticBeanstalk のコンソール画面で一括で確認できるのも良さそう。
と思ったが、、、
ecs-deployを使ってみたところ、ElasticBeanstalk のデプロイ面での優位はなくなった...
環境構築の手間もそんなに変わらないし、
ElasticBeanstalk のコンソール画面で一括で確認できる点、コード量が若干少ない点もどうだろう...
ECS Fargate を使うのが良さそうと思った。