SonicGardenにおけるherokuでのサービス運用構成

SonicGardenではいくつかのサービスをherokuで本番運用しています。herokuはステージング用途で利用されこそすれ、本番環境として運用されている話はあまり見かけないと思いますので、どんな構成で運用しているのかご紹介したいと思います。

heroku_operation

使用している外部サービス

サービス名 説明
Airbrake Webサービスの障害を検知し、通知を行なってくれるサービス。サービス上で障害情報の管理を行うこともできます。様々なエラーを検知する仕組みを整えることで、障害に対し即時対応できる体制を整えています。
NewRelic Webサービスのパフォーマンスを監視するサービス。1分毎(設定で変更できます)に死活監視する機能がついているため、アイドル時間によるherokuのダウン防止にも役立っています。このサービスにより性能低下の検知やダウンタイムの検知を行なっています。

使用しているherokuアドオン

アドオン名 説明
PG Backups Shared Databaseのバックアップをとってくれるアドオン。このアドオン単体だと最大で1ヶ月分(1年分の保持は有料)しかバックアップを保持してくれませんが、下記のheroku schedulerにより日次でS3に転送し、永続的なバックアップ保持を実現しています。
heroku Scheduler 任意のスクリプトを定期実行してくれるアドオン。このアドオンを利用し、@mat_akiの作成したheroku_backup_taskを日次で実行することでS3への日次バックアップを実現しています。詳細はリンク先の記事を参照のこと。
Loggly サーバログの保存を行なってくれるアドオン。単体だと25MB/Dayかつ1日しかログを保持してくれませんが、S3への保存オプションを設定することで、S3にログを転送してくれます。

様々なデータをheroku内だけでなくAmazonS3に保持することで信頼性を担保しています。DBダンプとログは異なるバケットで保持しています。

まとめ

上記の構成を基本構成として、サービスの特性に応じてパラメータを調節したり、使用するherokuアドオンを追加したりしています。皆さんのherokuにおけるサービス運用のヒントになれば幸いです。