まるまるこふこふ

数々の次元が崩壊し、全ての生命が塵と化すのを見てきた。私ほどの闇の心の持ち主でも、そこには何の喜びも無かった。

IDCFクラウドを使った個人Webサービス構築

さいです。先日、東方Project の二次創作同人誌の感想を投稿・共有できる 香霖堂書店というのをリリースしました。(※ 2019/03/29 閉鎖しました)
現状、ユーザー数約50名、PV/1day 約200程度で
運営させていただいてます。

個人でWebサービスを作ることについては後日またお話させていただく
として、今回はサーバ構成についての話をさせていただきたいと思います。

サーバ構成

プロキシサーバー
Nginx です。sai-chan.com ドメイン香霖堂書店と一緒に
自分のポートフォリオサイトも運営しているため、
ユーザーのアクセスは、バーチャルホスト機能で、
www.sai-chan.com を ひまわり鎮痛剤 サーバーに、
korindo.sai-chan.com を 香霖堂書店に振り分けています。

個人ポートフォリオサイトAPサーバー
自分の自己紹介サイトです。⇛ ひまわり鎮痛剤
Apacheです。香霖堂書店とはまた別のサイトとして、
静的ファイルだけで構成されています。

香霖堂書店APサーバー
Node.js で動くアプリケーションサーバーです。
香霖堂書店に関わる動的ファイル、静的ファイル両方を配信しています。
またユーザーがアップロードした画像はAPサーバーに保存されています。

香霖堂書店DBサーバー
MySQL, Redis, ElasticSearch が同居して稼働しています。
データは基本的にMySQLに保存し、場合に応じて
キャッシュをRedisに、全文検索に必要なデータをElasticSearch に、
二重に保存しています。

開発用サーバー
開発は全てsshでこの開発用サーバーに入ってやってます。
本番環境と同じ環境を構築してるので、動作確認などが容易です。

クラウドサービス

全てのサーバーは IDCFクラウド のS1で構成されています。
個人Webサービスにおいて、レンタルサーバーや VPS、herokuのような IaaS を使わず、
クラウドサービスを利用する利点は、スケールアウトが容易なことだと思います。

クラウドサービスはサーバーの追加・削除が容易なので、Webサイトの負荷が増えたときに、
サーバのスペックを上げる方法だけでなく、サーバーを増やすことでも対応することができます。

IDCFクラウドはサーバーの追加・削除ができるAPIも公開してますので、
コマンド1つでAPサーバーの追加、あるいはアクセス数を監視して自動で
APサーバーの追加・削除を行う仕組みなんかも作れます。

IDCF クラウド

クラウドサービスだと有名ドコロに AWS や さくらクラウドなどあると思いますが、
IDCF クラウドを選択した理由は3点あって、

・日本語
・料金体系が明確

です。管理画面、マニュアルやドキュメントが全て日本語なので、
英語の苦手な私でも容易に触れます。

また最小スペックのS1だと料金が月々最大500円とおそらく類似のクラウドサービスの中で
一番安く また最大500円と謳っているのはクラウド初心者の私にとって

「サーバーをつけっぱなしにするとどれだけお金をとられるのかわからない」

みたいな不安がなく安心でした。

IDCFクラウドのS1で構築する際のポイント

先程も書きましたが、全てのサーバーはIDCFクラウドの中で一番安いS1(1台辺り月500円)で
構成されています。 S1のスペックは CPU1コア、メモリ1GB、ディスク15GBと最低辺です。

ネックになるのはCPUとメモリです。CPUやメモリ不足でサービスがダウンしないよう、
香霖堂書店ではキャッシュ処理やNodeによる非同期処理を避けて、レスポンスが遅くても
確実にページを返すようにしています。

一応、今のところそのような問題は起きてなく、一番処理の重そうなElasticSearchによる
全文検索処理でも 約0.025 秒 でレスポンスを返せてます。

またディスクについては15GBと割りと容量が余るので、ユーザーのアップロードした画像は、
各サイズのサムネイルを作ってディスクに保存し、リクエストのたびにサムネイルを作ることを
避けています。

その他IDCFクラウドの便利な点

新規サーバー作成がだいたい30秒もあれば終わります。サーバーのテンプレート機能もあるので、
ミドルウェアの性能検証なんかでサーバーを作ったり潰したりすることが多いので助かってます。

あとサーバー監視に Mackerel のFreeプランを使ってますが、IDCFクラウドのユーザーは
監視できるホスト数が無限だったり、グラフを1週間分表示できたりするので良いです。

終わり

というわけでみなさま、よいクラウドライフを。