個人で運用している Web サービスをどう管理しているか 2018年版

r7kamura
r7kamura
Jan 23, 2018 · 6 min read

実験には Heroku を利用

習作につくったアプリやβ版段階のアプリは、Heroku で動かしている。Heroku を使う場合のより具体的な条件としては、データベースが明らかに無料枠に収まりそうで、24時間動いていなくてもまあ誰にも怒られそうないような場合。Slack 用の Bot や、nippo という日報専用サービスのクローズドβ版などを主に置いている。

検証環境にも Heroku を利用

Pull Request ごとに検証環境をつくるために、Heroku の Review Apps を利用している。Review Apps みたいなやつを個人で運用するには相当な労力が居るので、これのおかげでとても助かっている。しかも Review Apps は無料で使えるのですごい。現時点では Review Apps は Docker で動かせないので、本番環境は Docker で動いていても Heroku では Docker で動いていないという状況になってしまっているが、それを鑑みても Review Apps の恩恵は大きい。業務用途でも、可能なら Review Apps を検証環境に使うと思う。

一般向けに公開しているサービスには AWS 利用

一般に向けて公開しているまともなサービスには、すべて AWS を利用している。例えば amakan や wikihub は AWS で動かしていて、nippo もこれから AWS に移す予定。

AWS は Terraform で管理

ドメインの購入以外は Terraform で管理していて、個人の AWS アカウントを管理するための Terraform のコードを置いたプライベートリポジトリが、GitHub に存在している。Circle CI と連携されていて、Pull Request で実行計画が表示されて、master に merge されるとそれが適用される、という仕組みになっている。

通知は個人用 Slack に集約

個人用の (自分しか所属しない) Slack チームを用意して、サービスからの通知はそこにまとめている。例えば、定期的なジョブの実行完了通知や、エラー通知 (Sentry をよく使っている)、お問い合わせやご意見、サービス用のメール、毎日のアクセス数などが通知される。Slack はチャンネルごとにミュートするかどうか切り替えられるので、通知の重要度や、サービスの種類などで分けている。基本的に #general はミュートにしていて、デフォルトでは #general に通知を投げるようにして、数が多かったり、重要なものは別のチャンネルに分けたりしている。


    r7kamura

    Written by

    r7kamura

    やっていきます。

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade