monoの開発ブログ

日曜WebプログラマのVPS選び

(Updated on )

趣味で開発したWebアプリを動かしているVPSをDigitalOceanに変えたので、選んだ理由を紹介します。

今回は、1インスタンスに複数のWebアプリを詰め込んで、安定稼働させつつ料金を安く抑えるという目標でサーバVPSを選択しました。私のサイトのようにアクセスが少ない場合、サーバプロセスを立ち上げておくことによるメモリの消費がサーバのスペック上の最大のネックになります。しかし、単純にメモリを増やしてしまうと、メモリ以外の資源を持て余すにもかかわらず、料金が高くなってしまいがちです。

そこで、今回は持て余しがちなCPUとストレージを活用してメモリ不足を補い、安価に集積度を高めるアプローチを採用しました。

zram

CPUを活用してメモリ不足を補うために利用するのが、zramです。zramは、データを圧縮して格納する仮想的なブロックデバイスをメモリ上に構築するLinuxカーネルの機能です。構築したブロックデバイスをスワップ領域として使うことで、メモリ上により情報を圧縮してより多く格納できるようになります。圧縮と展開のためのCPU負荷の上昇と引き換えに、メモリ上に格納できる情報量を増やしているというわけですね。

詳細については、以前書いた記事をご覧ください。

スワップ

ストレージを活用してメモリ不足を補うと言えば、スワップですね。しかし、スワップを使うと極端に性能が低下し、捌き切れなくなったタスクが積み上がる悪循環に陥りがちです。そこで、スワップを使うことによる性能低下を抑えるために、ストレージにSSDを選択します。普通にストレージとして使う上でもSSDは優秀ですが、スワップとして使った場合の性能はハードディスクとは比べ物になりません。また、自分の管理するハードウェアでは、あまりスワップさせない運用をしたくなるところですが、VPSであれば気兼ねなくSSDに対して読み書きしまくれます。

VPS選び

これらの点を踏まえ、SSDが使えて性能低めで安いVPSということで、私は冒頭に書いたようにDigitalOceanを選択しました。と言っても、学生だとGitHub Student Developer Packのおかげでなんと$100分を無料で使えるので、他を選ぶ理由がないのですが。

ちなみに、GitHub Student Developer Packはac.jpなどの教育機関のメールアドレスさえあればOKなので、大学生であれば使わない手はありません。さらに、こちらの招待リンクから登録すると$10チャージされるので、合計で$110無料で使えます。ぜひぜひ。招待リンクとGitHub Student Developer Packは併用できないようなので、招待なしで普通に登録してください。

学生でない場合、DigitalOceanでもいいですし、VultrさくらのVPSなんかも選択肢に入ると思います。Vultrは海外のサービスですが、東京リージョンを選択できます。それに加えて、メモリ768MBで$5/month、1GBで$7/monthと少し相場より安いようです。ただ、私は使ったことがないので性能や安定性については何とも言えません。さくらのVPSは日本人としては選びやすい選択肢だと思います。しかし、初期費用が必要だったり、解約のタイミングが固定されていて、1ヶ月以上前に申請しないと解約できないという点に使いにくさを感じます。

その他にも、DigitalOceanとVultrは2要素認証に対応しているのに対して、さくらのVPSは非対応というのも気になる人は気になるポイントでしょうか。

おわりに

正直なところ、ここまでの内容はほとんど机上の空論です。この通りにVPSを選んで、zramとスワップをガンガン使う運用でこれから先やっていけるかどうかはまだわかりません。何ヶ月か動かしてみて、その様子を記事にできたらいいですね。