個人開発におけるサーバ選びって実はコスパやら何やら考えると結構難しいかなと思っています。企業と違ってなにかあった場合、自分で対応しないといけないし、コスパも自腹なので気になる。しかも中途半端に大きいサービスだと適切なプランがないなどなど。そういった個人開発特有のサーバの選び方を仲間とちょっと話したのでまとめてみた。
ちなみにこの記事はどんどん皆からの意見で更新していって個人開発する人がここをみればサーバ選びに困らない状態にしたいので意見どんどんください。定期的に更新します。
ちなみに個人開発やプロダクトマネージャーとしての組織論などプロダクト開発に関することを結構つぶやいているので知り合いじゃない人も気軽にフォローしてください。開発に関連してそうな人はフォロー返ししちゃいます。
個人開発特有の悩み
個人開発する上でのインフラ周りは会社でサービス運営するのとはまた違った悩みが出てきます。そもそも人手がそんなにないですし、趣味的なサービスもあるのでコスト抑えたいしなど。
サーバ管理を常に自分で見ないといけない
会社と違ってインフラ担当がいないのでなにかサーバのトラブルが起こったら自分で対応しないといけません。AWSやHerokuはそのへんもまるっとみてくれるのでその辺の管理コストも計算に入れると良さそう。
正直最初は安くすませたい→最初安くてスケーリングできるのを見つけたい
正直サービスを軽い気持ちでパン!と出したいという場合もかなり多いはず。それなのに月数千円かかるとかだと正直個人開発だと躊躇する人も多いのでは?理想は最初は月数百円、そこからもし大きくなったらスケーリングしたい。そのスケーリングも乗り換えはしたくないと言う人が殆どのはず。
サーバーの選択肢
Heroku
Herokuの魅力はインフラ周りのことを詳しく知らなくても動かせること。デプロイもスムーズ。ただ東京にリージョンがないのでそれがどれくらい表示速度に影響しているのかは分からない。最小構成だと700円とかで動かせる。(独自ドメインでなかったら無料でも)
Herokuを使った人の声
- HerokuのAutoscaling便利なんですが、Performance dyno以上かPrivate Spacesでないと使えないので個人開発だと余程のアクセスがないと出番がない
- Herokuも東京リージョンは無かったと思いますけど、書き込みがかなり多いとかリアルタイム性が求められるとかじゃなければCDNとか使えば十分そう
- 無料だとAutoscalingはできないけど、ほとんどの場合手動スケーリングで間に合うような気も。
- nuxtでSSRしたいときにもnodeが入っているので対応可能。
さくらのVPS
最もコスパを考えるとこれにたどり着く。ただ自分でLinuxを使って設定しないといけないのとなにか起こった際に対処しないといけないので学習コスト、運用コストは高い。ただ複数のサービスを10とか20動かすなら1つ借りて突っ込めばいいのでかなりコスパは良くなる。かなりサービス作りたい人は考えたほうが良いかも。代表的なのはさくらとかなのかな?
さくらVPSを使った人の声
- さくらVPSはDigitalOceanに比べると大分古い感じだったんですが、「ブリッジ接続」というのでVPSのLANとクラウドを接続できるようになったので、固定部分はVPSで安価に、スケールさせたい時はクラウドでみたいな構成が取りやすくなりました。
GCP(firebase)
結構意外だったんだけど最近Firebaseでサーバレスな構成をする人が多い気がする。結構無料の範囲が広いし、WebSocketを使いたいならRealtime Database、認証もつけることができてたしかに便利。
https://firebase.google.com/pricing/?hl=ja
こんな感じで結構無料範囲広い。
https://firebase.google.com/?hl=ja
GCP(firebase)を使った人の声
- 認証機能を実装しやすい
- 認可とValidationもRuleでまあ問題なく実装できる
- WebSocketでの共同編集が簡単に実装できる
僕自身使ってみてやはりSPAで作るときにバックエンドを丸投げできるのがいい。authとstoreを連携しやすいのでauth認証された人のみ書き込み可などの条件が簡単にできるのも魅力。
AWS
スケーラブルなサーバー。大きくなるとココに移行する所が多いんじゃないでしょうか?ただ設定がけっこう大変だし、課金形態が複雑で結構コントロールするのに苦労する。
GCE
https://cloud.google.com/compute/?hl=ja
料金は下記
https://cloud.google.com/compute/pricing?hl=ja
GCEを使っている人の声
- 永久無料枠があるのでプロジェクトごとにGoogleアカウント作って1サーバー1アプリケーションでやっています。
IBM Cloud
無料プランがあったの意外だった。意外と手厚い。
https://www.ibm.com/cloud-computing/bluemix/ja/pricing
IBMcloud
- CloudFoundryベースのPaaSやKubernetesを前提にしたコンテナ環境を無料で使えるので私はそこそこ好きです。
Microsoft Azure
https://azure.microsoft.com/ja-jp/
料金プランは下記で無料からも始められる。
https://azure.microsoft.com/ja-jp/offers/ms-azr-0044p/
Microsoft Azureを使っている人の声
- コードを投げ入れたらすぐに動かしたい場合は Azure Web Apps、仮想マシンを立ち上げたいなら Azure Virtual Machines、RDB は SQLDB,Azure Database for PostgreSQL, MySQL, NoSQLを選ぶならCosmosDBって感じで一通り揃っています。
Conoha
Dokkuアプリケーションイメージを利用してプライベートなHeroku環境を作ることが出来て便利。
Dokkuアプリケーションイメージの使い方|ConoHa VPSサポート
https://support.conoha.jp/v/dokku/
個人開発において考えないといけないこと
Rubyは結構限定される
PHPが使えるサーバは多いんだけどRubyは少ないなあというイメージ。おそらくWordPressでの用途がレンタルサーバの主な用途のためだと思われる。サーバの選択肢を広げたいならそもそもPHPで作るのもありかも。
Herokuのリージョンに東京がない
リージョンが遠いのがどれくらいパフォーマンスに影響するのかは分からないですがHerokuのリージョンに東京がないのでその分日本だとパフォーマンスは落ちそう。チャットなどリアルタイム性が求められるものに関してはそこの部分だけFirebaseに置き換えるのはあり。
サイト内検索を実装するか?
単語の名寄せ(「見積り」と「見積もり」のどっちもひっかかるようにする)をして検索するなどを導入したい場合、もしそのサービスに検索関連の機能がないと違うサービスに繋がないといけない。検索をつける、そしてそれをスケーラブルにしたい場合でできるだけ同一サービス内で抑えたい場合はAWSなどを考えたほうが良いかも。AWSだとCloudSearchやElasticSearch、HerokuだとElasticsearchやSolrなど検索機能が用意されている。
パターン別のサーバの選び方
たくさんサービス作る系でコスパ重視
複数作る場合はアプリごとの課金ではないVPSを借りて全部突っ込むのがコスパは最強。ただし、Linuxの知識や管理コストはかかる。
インフラのことを何も考えたくないならHeroku
全て任せたい人は最初Herokuで大きくなったらAWSに移行がよさそう。リアルタイム性が求められる部分だけFirebaseで実装するのもあり。
認証なども簡単に実装したい、アプリなども共通で開発したい場合はFirebaseもあり
認証周りが結構Firebase好評だなというイメージ。あと、アプリに展開する場合はアプリで使う機能を色々提供しているので便利そう。Firebaseは無料範囲が結構広いのも魅力。