「実践DevOps! SonicGarden流Herokuガチ運用術!」というテーマでCIO安達とHerokuでの運用について話しました

6/24(火)の夜に「実践DevOps! SonicGarden流Herokuガチ運用術!」というテーマで、Herokuでの運用に必要なことについて、CIO安達と一緒にUstreamで勉強会の放送をしました。放送中は約150名の視聴者がおられたとのことで、比較的盛況だったのではないかなと思います。当日は雷だの雹だので外が大変なことになっていたようなので、自宅でゆっくり見られる放送というのはナイスですよね。

そういうわけで、早速お話した内容のまとめを書いておこうと思います。

放送したスライド

「Herokuにデプロイするだけでアプリが立ち上がる!運用もオッケー!」?

昨今を振り返ってみると、Herokuを使ったアプリの立ち上げもかなり一般的になってきたなー、という感じがします。いろんなハンズオンの勉強会を見ても、「アプリのデプロイはHerokuに!」という使われ方をしますしね。他にも様々な個人サービスがHerokuを通じて発信されていると思います。

実際Amazon Web Serviceで同じようにアプリ運用をすることを考えると、Herokuを使えば最初からカバーされているであろう、あらゆる面に気を配らなければなりません。例えばOSやミドルウェアのバージョンアップにも気を配らなければならないですよね。

そういった手軽さゆえに「Herokuにデプロイするだけでアプリが立ち上がる!運用もオッケー!」と思われがちですが、一方、アプリを運用する上での監視という観点で見てみると、下の表を見てもわかる通り、Herokuがサポートしていない、まだまだ自分で考えなければならない観点が残っているのです。

sgstudy9_heroku運用_pptx

今回はそういった観点別の対策を含め、開発者がHerokuで確実に運用するためのエッセンスをお伝えしました。

Herokuアプリ運用の全体図

sgstudy9_heroku運用_pptx 2

では、実際にSonicGardenがどのような構成で監視を行っているかというと、全体像は上記の図のようになります(以前の構成はこんな感じでした:2013年12月版)。監視観点で言うと、下記の表のような形でHerokuでサポートしていない観点を埋めています。

特にデータ保全には細心の注意をはらっているため、内製のチェックツールを利用してバックアップのチェックを行っています。

監視観点 利用サービス 補足
サービス監視 Nagios AWSとは別の日本国内サーバに配備。別業者サーバを利用することで監視サーバの相互監視も行っている。
リソース監視 NewRelic
パフォーマンス監視 NewRelic
エラー監視 Bugsnag
バックアップ監視 Backup Checker SonicGarden内製。バックアップ取得チェック、DBダンプの別リージョンコピー(ディザスタ・リカバリ対応)を行う。

運用=監視ではない。現状把握(監視)+リスク低減(リカバリ)=運用である。

今「データ保全に細心の注意をはらっている」と言いましたが、単純に「バックアップが行われているか?」「コピーしたDBダンプが保存されているか?」をチェックするだけでは運用とは言えません。運用=監視ではないんですね。

監視観点を網羅することでしっかりと現状把握をするのと同時に、いざ問題が起こったときに速やかにリカバリできる必要があります。

sgstudy9_heroku運用_pptx 3

SonicGardenでは主に以下のリスクを念頭に置き、問題が起こったときに速やかにリカバリできるようにしています。

  • アプリケーションデータの一部が破損するリスク
    • ログファイルを一定期間保存(デフォルト3年分)し、ログからのリカバリを行えるようにする。
  • データベース内のデータの一部が消滅するリスク
    • リージョンをまたいだ冗長化バックアップを行い、もしもの場合には別リージョンを利用したサービス復旧も行えるようにする。
  • 予期せぬサービスダウンが発生するリスク
    • サービスダウン時のフェイルオーバーをDNSレベルで配備する。

それぞれのリスクに対してどのように対応するのがベストかは、運用しているサービスの特性によって変わってくるので、万人にとってこれがベストな答えとは言えないです。リスクに対する備えも、運用時のコストですからね。このコストを抑えて別の部分に投資する考えも、当然あると思います。ただ、我々がお預かりしているサービスには、漏れなく上記の観点でのリスク低減策が実施されています。

まとめ

sgstudy9_heroku運用_pptx 4

そういうわけで、この放送では「開発者がHerokuで確実に運用するためのエッセンス」をお伝えしました。エッセンスとしては、以下の3点がありました。

  • Herokuがサポートしていない監視観点を理解すること。
  • サポートされていない監視観点に対してどのような対応が必要か、SonicGardenの例を参考に考えられること。
  • 運用は現状把握+リスク低減と考え、リスク低減策を適切に実施できること。

ぜひ今回の放送を参考に、便利なHerokuをもっともっと活用していって頂ければと思います。

その他にも放送でいろいろ話したので、ぜひ放送の録画もご覧ください

DoorkeeperのSonicGarden Studyイベントに参加登録いただいた方には後日資料と録画のURLが届くと思うのですが、参加登録を忘れていた!という方も、Doorkeeperよりお問い合わせいただければ録画のURLをお渡しすることができます。お気軽に以下のリンクから「録画のURLを欲しい!」とお問い合わせください。

SonicGarden Studyお問い合わせ窓口

また、このような運用の話をもっと聞きたい!という方はぜひ、SonicGardenまでお問い合わせください!個別にセミナー、ワークショップを企画させていただきます。情報交換も大歓迎ですので、まずはお気軽にお問い合せください。

SonicGardenお問い合わせ窓口