『にじみす.moe』のシステムとかそんなお話

プログラム
この記事は約5分で読めます。

どうも。
なんだかんだで色々バタバタしており全然更新できていませんでした。
ちなみに私自身はコロナの影響はほぼないのですが、
如何せん世の中がこんな状況なのでスケジュールが決められず困っています。

そんな世の中からは少し離れて今回も『にじみす』に関するお話です。
最近は更新ネタに困ったらコレです。
なにせ自分が運営するサービスなので書くネタが生み出しやすいですね。

さて、では今回はなんのお話なのかといいますと
にじみすが動くインフラに関するお話をしようと思います。
Mastodonなどの分散型インスタンスの運営に興味がある人には嬉しい記事かもしれません。
まあそんな人はごく僅かだと思いますが…。

まずは手っ取り早く構成図を見ていただこうかと思います。
といっても元々この業界の人間ではないのでこれが正しいのか私自身さっぱり分かっておりません。
もし変な部分などありましたらコメント欄で優しく教えていただけると今後の参考になります…。

『にじみす.moe』 構成図

まず、にじみすのシステムを支えるのはGoogleが提供しているGoogle Cloud Platformです。
あの天下のGoogle様のインフラ設備で動いております。
多分クラウド最大手であろうAmazon Web Serviceを採用しなかった理由がいくつかあり
管理画面が私にとってあまり使いやすくなかったこと、
同様の構成で試算したときにいくらか高かったこと、
GCPにトライアルのクレジットが多く残っていたことが挙げられます。    

Googleで使い方に関する記事を検索するとやはり圧倒的にAWSの方が多いのですが、
にじみすは個人運営という事もありとにかく安く十分な安定性を確保する必要があると言うことで
他と比べリーズナブルで信頼のあるGCPを採用したという流れになります。
ちなみにAWS, GCPと並んで比較されるAzureに関しては価格が高すぎて対象になりませんでした。

企画当初はユーザー数50人(全体数)程度でアクティブ2割くらいを想定して構成を検討しました。
(実際のところは登録数30に対してアクティブはほぼ私一人なのでもっと低いですが…。)
そしてその前提の元考え出されたのが以下の構成です。

Main Server: Compute Engine (n1-standard-1)
Server Storage: Persistent Disk 64GB
Object Storage: Wasabi Cloud Object Storage
Database: Cloud SQL for Postgres (db-pg-f1-micro)
Storage: HDD: 128GB ~
SSL Cert: JPRS SSL (DV) [Non wildcard]初期構成

これで1ヶ月8,000円くらいの費用といった感じでした。
実際に試験稼働1ヶ月程度はこの構成で動いていたのですが、
実際に動かしてみると少し聞きなる部分があったため若干の変更を加えました。
それがこちら。

Main Server: Compute Engine (vCPU 1Core / RAM 4.75GB)
Server Storage: Persistent Disk 64GB
Object Storage: Wasabi Cloud Object Storage
Database: Cloud SQL for Postgres (db-pg-f1-micro)
Storage: HDD: 128GB ~
SSL Cert: JPRS SSL (DV) [Non wildcard]現状構成

大きな変化はありませが、Compute Engineのメモリ量が3.75GBから4.75GBに増量されました。
というのも検索機能にElasticsearchというプログラムが動いており、
これがしっかりとメモリを消費するので余裕を見て1GBの増量という事になりました。
他にもRedisやNginxなども一緒に動いていますが、
これらはそれほどリソースを消費しないので問題ありません。
この構成で概ね1ヶ月10,000円くらいで収まりました。

見ていただければ分かる通り大変簡素な構成となっています。
というより私個人の力ではこの程度が限界でした。
欲を言うのであればRedisをCloud Memorystoreに置き換え、
NginxをCloud Load BalancingとCloud CDNに置き換えCloud Armorを追加、
Compute Engineを大阪と東京で分散させて…などとしたいところではありますが、
これをやると概ね1ヶ月あたり3万円くらいかかるので資金が確保できるようになるまでは無理です。

ちなみにここまで触れてきませんでしたが、
オブジェクトストレージには1TBまでは基本料金で使用できるWasabi Storageを採用しています。
このストレージの素晴らしいところは転送料が不要なところです。
ストレージそのものの価格も他と比べ安価なため、
データ量が膨らみやすいSNSサービスの運営者としては大変ありがたいプラットフォームです。
アップロードはサーバーを介して行われますが、下りは直接ストレージにアクセスしています。
これによりGCP側の転送量を削減することがてきています。

敢えてデメリットを挙げるのであればリージョンの選択肢です。
まだまだ新しいサービスであることもあり日本にリージョンが存在せず転送速度は遅めです。
この部分が気にならなければ問題ないかと思います。

以上がにじみすを支えるインフラに関する説明となります。
こういったインフラの本職の方から見れば気になるところも多くあるかと思いますが、
私としては個人レベルで対応できる最大限の努力を尽くしたと思っています。
今後ユーザー数が増加しPatreonでの支援などが増えてくれば
さらなるシステム強化と安全性の向上を目標に構成の改善を行っていきたいと考えています。
もし現在の費用から大きく変化しない範囲でより良い選択をご存知の方がいらっしゃいましたら
この記事のコメントや私のメールアドレス、にじみす上でご提案いただけますと幸いです。

まだまだ始まったばかりのサービスでこれからといったところですが、
少しずつ成長していけるよう頑張っていきたいと思いますので応援の程よろしくお願いいたします。
というわけでにじみすに関するお話でした。ではまた。

コメント