---
title: 同じサービスをECSとOpsWorksで運用してみた
tags: 
author: [Jun Ichikawa](https://www.docswell.com/user/sparkgene)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/Y765R46ZEV.jpg?width=480
description: 社内向けのサービスで、OpsWorksとECSを使ってみた感想
published: September 15, 15
canonical: https://www.docswell.com/s/sparkgene/K1JM37-opsworks-vs-ecs
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/Y765R46ZEV.jpg)

同じサービスを
ECSとOpsWorksで
運用してみた
JAWS-UGコンテナ支部 #2


# Page. 2

![Page Image](https://bcdn.docswell.com/page/G75Y8Q6974.jpg)

自己紹介
市川 純
リクルートマーケティングパートナーズ
@sparkgene
担当サービス
• リクナビ進学アプリ
• 料理サプリ
• その他新規サービス
業務内容
• AWSを使ったサービスのインフラ構築・運用
• サーバサイドの開発


# Page. 3

![Page Image](https://bcdn.docswell.com/page/9J2GKPM5JR.jpg)

社内向けの知見共有サービス


# Page. 4

![Page Image](https://bcdn.docswell.com/page/DEYVN5X6EM.jpg)

システム構成
Amazon S3
Elastic
Transcoder
ELB
EC2
インスタンス
RDS
開発環境を用意
ElastiCache


# Page. 5

![Page Image](https://bcdn.docswell.com/page/VJNMXN5178.jpg)

開発環境
 開発環境ではdocker-composeを使ってる
 サーバサイドエンジニアもフロントエンジニアも、数行のコマ
ンドで環境構築が出来る
$ docker-compose build
$ docker-compose run rails rake db:create
$ docker-compose run rails rake db:migrate
$ docker-compse up


# Page. 6

![Page Image](https://bcdn.docswell.com/page/YE9N8RYYE3.jpg)

開発環境
 Nginx、Rails、Redis、ストレージのコンテナが起動する


# Page. 7

![Page Image](https://bcdn.docswell.com/page/GE8K8W6K7D.jpg)

本番環境
Amazon S3
Elastic
Transcoder
ELB
EC2
インスタンス
RDS
ここどうするか
ElastiCache


# Page. 8

![Page Image](https://bcdn.docswell.com/page/LELZRN9PJR.jpg)

AWSでDockerならECSでしょ！


# Page. 9

![Page Image](https://bcdn.docswell.com/page/4JMVRXZ2JW.jpg)

ECSちょっとツラそう。。
 そもそもDocker初心者
 ECSでステージングの構築を進めてたが、本番運用にはま
だ作りこみが必要
 最初のリリースは使い慣れたOpsWorksで行こう


# Page. 10

![Page Image](https://bcdn.docswell.com/page/PJR2RN65E9.jpg)

OpsWorksのいいところ
 recipeを書けば同じサーバを簡単に立ち上げられる
 デプロイがボタンひとつで簡単
 専用のモニタリングがある
 ライフサイクルイベントを使っていい感じに管理出来る


# Page. 11

![Page Image](https://bcdn.docswell.com/page/PEXDRNMX7X.jpg)

本番環境
Amazon S3
Elastic
Transcoder
ELB
EC2
インスタンス
RDS
AWS OpsWorks
ElastiCache


# Page. 12

![Page Image](https://bcdn.docswell.com/page/3EKXRNG97D.jpg)

Amazon ECS使うよ！


# Page. 13

![Page Image](https://bcdn.docswell.com/page/L7358VN9E5.jpg)

ECSのいいところ
 Docker使える！
 開発環境も本番も同じDockerイメージが使える（一部は）
 Dockerイメージからコンテナを起動するので速い
 最近、クラスタ、サービスの単位でメトリクスが見れるように
なった


# Page. 14

![Page Image](https://bcdn.docswell.com/page/87DDM8W87G.jpg)

ECSのつらいところ
 Dockerイメージを管理するDockerレジストリが必要
 デプロイ（コンテナの入れ替え）を自動化させるのが大変
 コンテナの起動監視、ロールバックなど自前でスクリプト書かないと
ダメ
 そもそも、docker build、docker push、docker pullが遅い
 pullした後はコンテナの起動は早いけど、そこまでが結構掛かる


# Page. 15

![Page Image](https://bcdn.docswell.com/page/VJPXR89W78.jpg)

デプロイはJenkinsさんにまかせた


# Page. 16

![Page Image](https://bcdn.docswell.com/page/2EVLRNM9JQ.jpg)

Build
hook
Push
Update
Service
Private Registry
自動化
ECS


# Page. 17

![Page Image](https://bcdn.docswell.com/page/57GXMKG4EL.jpg)

まとめ


# Page. 18

![Page Image](https://bcdn.docswell.com/page/4EQ8RNXRJP.jpg)

ECSの悩み(1)
 ELBにぶら下げられるのはインスタンス単位の為、ECSで
コンテナを起動する時は、ポートを固定する必要があり、同
じインスタンス内に同じ役割のコンテナを複数立てられない
 安全にデプロイさせるために、インスタンスのリソースの空
きを確保するしておく必要があり、1インスタンス多く立ち上
げておく必要がある。
 docker-composeを利用してコンテナを起動できない。
 task defenitionをゴリゴリ書かないとダメ


# Page. 19

![Page Image](https://bcdn.docswell.com/page/KJ428G6QE1.jpg)

ECSの悩み(2)
 バグったDockerイメージをリリースすると、Service
Updateで無限にコンテナを立ててくれる
 ECSインスタンスをオートスケールさせることはできるが、
サービスで動かすタスクは自動で増えてくれない
 コンテナのメトリクスは自前で監視する必要がある


# Page. 20

![Page Image](https://bcdn.docswell.com/page/LE1M2DVL7G.jpg)

結局どっちが良いのか
 今のやり方だと費用的に安く済むのはOpsWorks
 ECSはprivate registryとリソース確保のために、インスタン
ス多く立ててる
 開発環境とAmazon Linuxの差異の影響を受けないのは
ECS
 正直どっちが良いか、まだ結論は出てない。。


# Page. 21

![Page Image](https://bcdn.docswell.com/page/GEW3RYLQE2.jpg)

ご静聴ありがとうございました


