#fedibird #fedibird_info メディアの保持とコストの話です。
はじめに言っておきますが、fedibird.comの利用者がアップロードしている画像は、保持している画像のほんの一部。
全体の6%未満です。
ほとんどリモートから取得した画像のキャッシュです。
使ってもらってナンボです。くれぐれも遠慮しないように。
さて、本題。
基本的に、VPSなどで借りているサーバに割り当てられているストレージでは容量が不足しますし、データ破損やバックアップが大変なので、オブジェクトストレージというサービスに保持しています。
AWSのS3が鉄板で、大容量を保持していても保持コストはそれほど高くはないのですが、S3はデータの操作や転送量に対しても費用がかかり、こちらが莫大な金額になりがちです。
対策として、Amazon Lightsailを経由させることで無料転送枠を組み合わせて安価に対応してきたのですが、利用が増えたことでそれすらも超過するようになり、このところエグい課金が適用されることが続いていました。
そこで、S3はあきらめて、Wasabiの利用に切り替えました。
既存画像の転送もかなりの時間とコストが掛かったのですが、やるだけの価値はありました(なお、まだ完了してません)。
#fedibird #fedibird_info Wasabiは転送量課金はされないのですが、最近、Mastodonで利用するときのように、公開アドレスでどこからでも参照できるような利用形態が禁止されてしまいましたので、一工夫する必要がありました。
S3にしろ、Wasabiにしろ、オブジェクトストレージを直接参照させるのではなく、実際には画像をキャッシュして再配送する、メディアサーバを立てて、そこを経由してアクセスしてもらっています。
また、さらにCloudflareやCloudFrontのようなCDNをはさみ、そこでのキャッシュや分散配置の恩恵も受けられるように構成しています。
キャッシュサーバは、安価なVPSとnginxの組みあわせで、Lightsailにおくことで、S3との内部転送コスト無料、外部転送コスト固定の恩恵を受けたり、今回のWasabiの公開利用できない制約を回避するために代理で認証アクセスして実質的に公開利用出来るようにするなど、副次的なメリットも得られています。
また、オブジェクトストレージを変更しても同じURLでアクセスできるようになるメリットも大きいです。
規模が小さくても、サービス本体と同居させておく構成にメリットはあります(Cloudflareだけでもいける)。
#fedibird #fedibird_info で、最終的にはWasabiとキャッシュサーバの組み合わせで月額1万円未満の運用を目指し、だいたい実現できたかなというところです。
ここまでは(超過料金が嵩むなどして)10万かかったり20万かかったりしてたので、ようやく落ち着いた感じですね。
#fedibird #fedibird_info ああ、それと、低解像度サムネイルの生成で保存容量が増えてるんですが、別のサムネイルの形式をWebPに切り替えるなどして、全体に増えないよう手を打っています。
オブジェクトストレージや画像キャッシュサーバだけでなく、Mastodon本体を置いているVPSやベアメタルサーバについても、無料転送枠があって、これも超過するとエグい課金がやってきます
メールサーバも通数超過すると……ということがあり、SendGridの有料サービスで枠をとり、Mailgunをサブに使っています。
いろんなところで節約を考えないといくらでも費用増えていくので、ちょっとご不便お掛けしたりしてますが、いろんな工夫をしているという次第です。
#fedibird #fedibird_info 当初のメディアの話からそれてきてますが、むりやりからめて……
この話の中で出てきた超過料金というやつが、非常にヤバイです。無料枠や通常枠を越えると、すごく単価の高い課金が襲ってきます。
いまメール廻りは余裕をもって6,000円ぐらいでまわってますが、これがある日の請求で14万きたことがあります。ものすごい大量のメール送信が発生したのが原因で、たしかに使った料金なんですが、まー危ないわけです。
メディアもそうで、ベアメタルサーバやVPSもそうです。それぞれ爆発したことがあります。
量に対する課金があって、それが爆発的に増えることがあるのです。そして、ユーザーが急増するとこれが全部くる。
なので、通常の運営費が払える状態なのは必須ですが、ある程度の余力をもってないと行き詰まりやすいのではないかと思います。
サーバトラブル・追い出されたなどで他事業者に移転するようなことになったら、通常時の3倍ぐらいは見込んでおかないと厳しいかな。
まあ、アクティブ7千〜1万、登録3万人規模のMastodonサーバの実例として、参考にしてください。