オンライン英会話サービスの本番環境で使うAddOnを公開


[Heroku Advent Calendar 2015](http://qiita.com/advent-calendar/2015/heroku)5日めとして、4年以上Herokuで運用しているを会社のウェブサービスで、実際に利用しているアドオンを紹介したい

## サービス紹介

![](http://s3.amazonaws.com/best-teacher/image/bt_public/logo-ver8.png)
[オンライン英会話サービスベストティーチャー](http://www.best-teacher-inc.com/)

ライティングレッスンとSkypeレッスンを組み合わせて、「読む、書く、聞く、話す」の語学習得に必要な4技能を学習することが出来るサービス

Rails4.2で運用されています。


## はじめに

弊社サービスで利用しているアドオンは以下のとおりであり、そのアドオン一つ一つの紹介をしていきます。
ざっくり言うとこれを真似ると商用サービスの運用可能なアドオンのセットリストとなるのです。

<img src="https://qiita-image-store.s3.amazonaws.com/0/5390/adc336c6-2344-8e94-97e4-0b85655f8916.png" width="250" />

* Adept Scale
* Airbrake Bug Tracker
* Deploy Hooks
* Fastly
* Heroku Postgures
* Librato
* MemCachier
* New Relic
* PaperTrail
* Redis Cloud
* Heroku Scheduler
* SearchBox Elasticsearch
* SendGrid


## Adept Scale
https://elements.heroku.com/addons/adept-scale

Dyno(仮想サーバ)をオートスケースすることが出来るアドオン

レスポンス速度がx秒以上になったらDynoを増やす、レスポンス速度が早くなっていくと自動でDyno数を下げる事ができる。

一日の最大アクセスに合わせてDyno数を設定する必要がなく費用を抑えることが出来る


## Airbrake Bug Tracker
Airbrake Bug Tracker
バグトラッカー、具体的には500エラーが発生した際にバックトレースを通知してくれる。
また同じ内容のバグまとめてくれるし

Slackへの通知やgithubと連携してバグをIssueとして書き込んでくれる

## Deploy Hooks
https://elements.heroku.com/addons/deployhooks

デプロイ完了した場合にSlack(等)へ通知してくれるサービス

## Fastly
https://elements.heroku.com/addons/fastly

CDNサービス、静的ファイルのアクセスをDynoからではなくCDNを通すことでサーバ負荷を下げることが出来る。
設定も簡単
HerokuのDynoはいくつかプランがあるが、商用サービスではStandard-2を使うことが多いだろう
Standard-2自体はかなりサーバのスペックが高いわけではないが、このように正しくアドオンを選択してやることで
商用環境でも十分に耐えうることが出来る。


## Heroku Postgres
https://elements.heroku.com/addons/heroku-postgresql

PostgreSQLのHeroku向けに最適化されている(らしい)
Heroku自体はPostgresのコミッターを雇っていたりしてPosgres推し

基本的にデイリーのバックアップをしてくれ、バックアップもレストアもコマンド一発で実施することが出来る

また、DBを2台設定することでホットスタンバイの設定することが出来、Premiumプランだと自動でフェイルオーバーしてくれる


## Librato
https://elements.heroku.com/addons/librato

Herokuシステムのメトリクスを表示してくれるアドオン
自前でいろいろメトリクスツール入れるより断然楽

## MemCachier
https://elements.heroku.com/addons/memcachier

memcachedのアドオン、キャッシュ機能として使っています

## New Relic
https://elements.heroku.com/addons/newrelic

パフォーマンス監視サービスの定番New Relicも当然Herokuのアドオンとして使える


## PaperTrail
https://elements.heroku.com/addons/papertrail

N台のDynoのログを一箇所に表示してくれる
定期的にログをS3に固めておいてくれるし、プランにより期間は変わるがリアルタイムにログの検索ができる
弊社で使用している7ドルのプランでも、1週間分のログをWebコンソール画面から正規表現を使ったり賢く検索することが出来る

特定のログが出たら、メール送信、Slack通知など設定することが出来る。
サービスダウン時や、クリティカルなバグが発生した場合にいち早く開発メンバーに通知することが出来る

## Redis Cloud
https://elements.heroku.com/addons/rediscloud

Redisサービスのアドオン、セッションストアとして利用している
現在のところHeroku独自のRedisアドオンより安い


## Heroku Scheduler
https://elements.heroku.com/addons/scheduler

CronデーモンのAddon、バッチ処理の呼び出しに使う。
ちょっと癖があって設定時間を細かく設定することが出来ない、10分毎、1時間(10分単位)、1日(30分単位)
そのため曜日の設定とか、5分毎に実行などは出来ないのでバッチのアプリケーションで工夫する必要がある。


## SearchBox Elasticsearch
https://elements.heroku.com/addons/searchbox

検索エンジンElasticsearchのアドオン

Elasticsearchのアドオンはいくつかあるが、最小のプランで無料で使える、Elasticsearchのアドオンにkuromojiが使えるのが選定理由


## SendGrid
https://elements.heroku.com/addons/sendgrid

定番メール送信サービス
バウンスメールの管理や、メールの送信ロジックを追うことが出来る

他のメール送信サービスのアドオンより若干高い。


## まとめ
いかがだっただろうか、Herokuは無料で使ったことはあるけど本格的にサービスで使ったことがある人はそんなに居ないのではないだろうか？
実際に商用サービスで利用できるHerokuの構成をみたら、新規サービスではHerokuを使ってみたいと思ってもらえたら幸いである。

AWSは大変良いサービスだけど監視やバックアップを含んでサービスをちゃんと使いこなすにかなりのコストがかかるが、Herokuは若干金額が張るものの人的コスト考えたらかなりお得なサービスだと思う。
AWSに乗せただけの構成のセキュリティやバックアップ、監視設定をしていないサービスがけっこう多い。これはいかんと思いませんか？

さぁHerokuやベストティーチャーに興味が出てきたあなた

弊社ではRailsエンジニアを募集しています。気になったから下記WantedlyのURLへアクセス！
https://www.wantedly.com/projects/27659