がんばらないマストドン運営(コストにまつわる少しだけ技術的な話)

この記事は、「分散SNS Advent Calendar 2019」の19日目用に書いたものです。

こんにちは、くまかんです。
今日は、銀河丼の運営コストと、それにまつわるちょっと技術的な話を書こうと思います。

と言っても私自身は非技術者なので、技術担当のけんちきにヒアリングしたものを、私が文章にまとめるといったかたちになります。
なので平易すぎるというか、逆に専門分野のみなさんからすると回りくどい表現も多いと思いますが、何卒ご了承ください。

コストの話、興味あったんですが乗り遅れてしまい、2周遅れくらいな感じですが、よかったら読んでね!

コストと手間を抑えてがんばらない

銀河丼の技術面は、コストと手間を抑えることを主眼にしています。こだわりやチャレンジングなことはあまりありません。

2017年以降はバージョンアップ以外ほとんど手を入れていません。なので少々つまらない内容になるかもしれません。それに、今のほうがもっとコスパの良い方法があるかもしれません。

ただ、コストを抑えすぎると重くなったり、使い勝手が悪くなるので、そのあたりのバランスは多少考慮されているのではないかと思います。そのへんの兼ね合いが伝わればいいなと思います。

ちなみに銀河丼は、一週間あたりのアクティブユーザーは50~60人くらいらしい(ダッシュボードによれば)。LTLの流速は、数時間誰も来ないこともあれば、わりと盛り上がることもあるといった規模感のサーバです。

SSDじゃなくHDD

銀河丼はさくらVPSの2Gプランで運営しています。そして今はなき、ハードディスクのプランです。理由は料金と容量です。同じ料金でSSDの4倍の200G使えるからです。

しかし今はこのHDDは廃止され、SSDの容量が倍になっているらしい。
→ さくらのVPS リニューアル 新プラン提供開始のお知らせ

新プラン、いいなぁ。

一度オプション費用を払えば月額変わらずに200Gにできるらしいので、いずれ変更するかもしれません。AWSもVPSが出てるとのことで、今は2017年当時よりコストを抑える選択肢は増えてるかな?

ともあれ今は、サーバとドメイン費合わせて月1,900円ほどで運営しています。当初は1Gのプランで運営していましたが、やはり1Gでは無理があったように思います。

軽くするためにしたこと

サーバがHDDということもあって、なるべく軽くするためにいくつか試行錯誤しました。

Mackerelの無料プラン
最初はZabbixを入れてましたが、今はMackerelの無料プランで監視しています。(本来は別サーバにZabbix入れるようですが、同じサーバに入れるという無茶をして圧迫していた。)

毎日自動で再起動
cronで毎日早朝に再起動しています。自動化で手間もはぶきました。

非Docker
これは最初から非Dockerで運営しているのですが、Dockerを挟むことで若干のオーバーヘッドがあるのではないかということで、HDDのデメリットを埋めるためにも非Dockerで続行しています。
あと、Dockerのほうがバージョンアップは楽ですが、Docker由来のエラーに悩まされることがない、エラーの原因を追究しやすいという理由で非Dockerにしているようです。(あと、ちょっと凝ったことをしたくなった場合、Dockerだとやりにくい場合もあるらしい。)

日本リージョン
銀河フォリオという別のサービスで、海外の安いサーバやAWS S3(間違えて海外リージョンにしていまった)を試したことがあるのですが、画像の読み込みはやはり遅いので、今は銀河丼も銀河フォリオも日本リージョンのサーバです。

容量を長持ちさせるためにしていること

外部サーバから流れてきた画像を削除
外部サーバから流れてきた画像を24時間後に削除しています。マストドンのAPIにコマンドが用意されているので、それをcronで実行しています。

手間を省くためにしていること

cronで自動化
画像の削除、サーバの再起動、あとSSL証明書(Let’s Encrypt)も自動で更新しています。(Let’s Encryptの有効期限は90日ですが、一度失敗して更新できていなかったことがあるので、90日より短い周期の間隔に設定しているとのこと。)

気が向いたときにまとめてバージョンアップ
がんばらないの真骨頂!気が向いたとき、まとめてやる!そんな感じなので、管理人自身がマストドンの新機能を把握していなかったりします。

マストドン本体に手を入れない
銀河丼を立ち上げたときから一貫して、マストドン本体をカスタマイズすることをけんちきに拒まれてきました。理由は、バージョンアップが大変になったり、齟齬が出てくる可能性があるからとのこと。
(でもGEMでできる範囲なら機能追加してもいいということで実現したのが、銀河丼おみくじや大阪弁変換機能です。)

容量にまつわる懸案事項と今後やりたいこと

上記のように、コストと手間を抑えることを考えて設計していますが、そのために心配なこともいくつかあります。

DBのバックアップをもっと丁寧にとりたい(AWSに移行?)
今時点でDBが7GBほどあります。できれば3世代ほどDBバックアップをとりたいけど、そうすると本チャンと合わせてDBだけで28GB圧迫することになる。となると、AWSへの移行も視野に入ってきます。(当然、コストも上がる。そしてDBの容量は増える一方。)

Mackerelでメール通知設定
これは設定すればすぐできます。
(Mackerelはグラフ化できたり便利なので、もっと使いこなしたいとのこと。)

PNG画像を自動でJPEG化
これ書いてる最中にけんちきが、ドン・ゴロツキさんところがこれをやってると知り、「うちもやりたい!」と言い出しました。画像の容量はずっと懸案だったからね。
ライスには塩をさんのこちらの記事を読んだらしい。参考にさせていただきます!
鯖缶工場に弟子入りし、超小規模インスタンス「ドン・ゴロツキ」をつくった
(※バージョンによってはコードを変更しないと適用できないかもと、ライスには塩をさんに教えていただきました。ちょっとがんばってみる?)

以上、けんちきがやりたいことらしいです。

いずれにせよ、今のペースでいけば、早ければ1年半後には今の200GBの容量がいっぱいになるので、AWSも考慮せねばなりませんが、それはそのときに考えよう!(逆に考えれば、1年半はがんばらずに運営できそうです。)


ということで、コストも手間も、がんばらずに長く運営することだけを考えて、けんちきがいろいろ工夫してくれています。

ひとつのコミュニティとして、なるべく長く存続させられればそれで良い。銀河に来てくれるみんながハッピーならそれで良い。3年目の今は、けんちきも私もそんな気持ちで、今後もそんな感じでやっていけたらと思います。

この記事が気に入ったらサポートをしてみませんか?