同じサービスをECSとOpsWorksで運用してみた
-
Upload
jun-ichikawa -
Category
Engineering
-
view
1.023 -
download
0
Transcript of 同じサービスをECSとOpsWorksで運用してみた
自己紹介
市川 純リクルートマーケティングパートナーズ
@sparkgene
担当サービス• リクナビ進学アプリ• 料理サプリ• その他新規サービス
業務内容• AWS を使ったサービスのインフラ構築・運用• サーバサイドの開発
開発環境開発環境では docker-compose を使ってるサーバサイドエンジニアもフロントエンジニアも、数行のコマンドで環境構築が出来る
$ docker-compose build$ docker-compose run rails rake db:create$ docker-compose run rails rake db:migrate$ docker-compse up
ECS のいいところDocker 使える!
開発環境も本番も同じ Docker イメージが使える(一部は)
Docker イメージからコンテナを起動するので速い
最近、クラスタ、サービスの単位でメトリクスが見れるようになった
ECS のつらいところDocker イメージを管理する Docker レジストリが必要デプロイ(コンテナの入れ替え)を自動化させるのが大変
コンテナの起動監視、ロールバックなど自前でスクリプト書かないとダメ
そもそも、 docker build 、 docker push 、 docker pullが遅い pull した後はコンテナの起動は早いけど、そこまでが結構掛かる
ECS の悩み (1)ELB にぶら下げられるのはインスタンス単位の為、 ECS でコンテナを起動する時は、ポートを固定する必要があり、同じインスタンス内に同じ役割のコンテナを複数立てられない
安全にデプロイさせるために、インスタンスのリソースの空きを確保するしておく必要があり、 1 インスタンス多く立ち上げておく必要がある。
docker-compose を利用してコンテナを起動できない。task defenition をゴリゴリ書かないとダメ
ECS の悩み (2)バグった Docker イメージをリリースすると、 Service Update で無限にコンテナを立ててくれる
ECS インスタンスをオートスケールさせることはできるが、サービスで動かすタスクは自動で増えてくれない
コンテナのメトリクスは自前で監視する必要がある
結局どっちが良いのか今のやり方だと費用的に安く済むのは OpsWorks
ECS は private registry とリソース確保のために、インスタンス多く立ててる
開発環境と Amazon Linux の差異の影響を受けないのは ECS
正直どっちが良いか、まだ結論は出てない。。