この記事の目的
個人開発におけるサーバ選びって実はコスパやら何やら考えると結構難しいかなと思っています。企業と違ってなにかあった場合、自分で対応しないといけないし、コスパも自腹なので気になる。しかも中途半端に大きいサービスだと適切なプランがないなどなど。そういった個人開発特有のサーバの選び方を仲間とちょっと話したのでまとめてみた。
ちなみにこの記事はどんどん皆からの意見で更新していって個人開発する人がここをみればサーバ選びに困らない状態にしたいので編集リクエスト、意見どんどんください。定期的に更新します。
個人開発特有の悩み
サーバ管理を常に自分で見ないといけない
会社と違ってインフラ担当がいないのでなにかサーバのトラブルが起こったら自分で対応しないといけません。AWSやherokuはそのへんもまるってみてくれるのでその辺の管理コストも計算に入れると良さそう。
正直最初は安くすませたい→最初安くてスケーリングできるのを見つけたい
正直サービスを軽い気持ちでパン!と出したいという場合もかなり多いはず。それなのに月数千円かかるとかだと正直個人開発だと躊躇する人も多いのでは?理想は最初は月数百円、そこからもし大きくなったらスケーリングしたい。そのスケーリングも乗り換えはしたくないと言う人が殆どのはず。
サーバの選択肢
heroku
herokuの魅力はインフラ周りのことを詳しく知らなくても動かせること。デプロイもスムーズ。ただ東京にリージョンがないのでそれがどれくらい表示速度に影響しているのかは分からない。最小構成だと700円とかで動かせる。(独自ドメインでなかったら無料でも)
【使った人の声】
・herokuのautoscaling便利なんですが、performance dyno以上かprivate spaceでないと使えないので個人開発だと余程のアクセスがないと出番がない
・Herokuも東京リージョンは無かったと思いますけど、書き込みがかなり多いとかリアルタイム性が求められるとかじゃなければCDNとか使えば十分そう
・無料だとauto scalingはできないけど、ほとんどの場合手動スケーリングで間に合うような気も。
VPS
最もコスパを考えるとこれにたどり着く。ただ自分でlinuxを使って設定しないといけないのとなにか起こった際に対処しないといけないので学習コスト、運用コストは高い。ただ複数のサービスを10とか20動かすなら1つ借りて突っ込めばいいのでかなりコスパは良くなる。かなりサービス作りたい人は考えたほうが良いかも。代表的なのはさくらとかなのかな?
【使った人の声】
・さくらVPSはDigitalOceanに比べると大分古い感じだったんですが、「ブリッジ接続」というのでVPSのLANとクラウドを接続できるようになったので、固定部分はVPSで安価に、スケールさせたい時はクラウドでみたいな構成が取りやすくなりました。
firebase
結構以外だったんだけど最近firebaseでサーバレスな構成をする人が多い気がする。結構無料の範囲が広いし、websocketを使いたいならRealtime Database、認証もつけることができてたしかに便利。
https://firebase.google.com/pricing/?hl=ja
こんな感じで結構無料範囲広い。
https://firebase.google.com/?hl=ja
【使った人の声】
- 認証機能を実装しやすい
- 認可とvalidationもruleでまあ問題なく実装できる
- websocketでの共同編集が簡単に実装できる
とかの理由でfirebase使い始めました。
AWS
スケーラブルなサーバー。大きくなるとココに移行する所が多いんじゃないでしょうか?ただ設定がけっこう大変だし、課金形態が複雑で結構コントロールするのに苦労する。
GCE
https://cloud.google.com/compute/?hl=ja
【料金について】
https://cloud.google.com/compute/pricing?hl=ja
【使っている人の声】
・永久無料枠があるのでプロジェクトごとにGoogleアカウント作って1サーバー1アプリケーションでやっています。
IBM cloud
無料プランがあったの意外だった。意外と手厚い。
https://www.ibm.com/cloud-computing/bluemix/ja/pricing
【使っている人の声】
・CloudFoundryベースのPaaSやKubernetesを前提にしたコンテナ環境を無料で使えるので私はそこそこ好きです。
Microsoft Azure
https://azure.microsoft.com/ja-jp/
料金プランは下記で無料からも始められる。
https://azure.microsoft.com/ja-jp/offers/ms-azr-0044p/
【使っている人の声】
・コードを投げ入れたらすぐに動かしたい場合は Azure Web Apps、仮想マシンを立ち上げたいなら Azure Virtual Machines、RDB は SQLDB,Azure Database for PostgreSQL, MySQL. NoSQLを選ぶならCosmosDBって感じで一通り揃っています。
ConoHa
情報募集中
考えないといけないこと
rubyは結構限定される
phpが使えるサーバは多いんだけどrubyは少ないなあというイメージ。おそらくwordpressでの用途がレンタルサーバの主な用途のためだと思われる。サーバの選択肢を広げたいならそもそもphpで作るのもありかも。
herokuのリージョンに東京がない
リージョンが遠いのがどれくらいパフォーマンスに影響するのかは分からないですがherokuのリージョンに東京がないのでその分日本だとパフォーマンスは落ちそう。チャットなどリアルタイム性が求められるものに関してはそこの部分だけfirebaseに置き換えるのはあり。
サイト内検索を実装するか?
単語の名寄せ(「見積り」と「見積もり」のどっちもひっかかるようにする)をして検索するなどを導入したい場合、もしそのサービスに検索関連の機能がないと違うサービスに繋がないといけない。検索をつける、そしてそれをスケーラブルにしたい場合でできるだけ同一サービス内で抑えたい場合はAWSなどを考えたほうが良いかも。AWSだとCloudSearchやElasticSearch、herokuだとElasticsearchやSolrなど検索機能が用意されている。
パターン別のサーバの選び方
たくさんサービス作る系でコスパ重視
複数作る場合はアプリごとの課金ではないVPSを借りて全部突っ込むのがコスパは最強。ただし、linuxの知識や管理コストはかかる。
インフラのことを何も考えたくないならheroku
全て任せたい人は最初herokuで大きくなったらawsに移行がよさそう。リアルタイム性が求められる部分だけfirebaseで実装するのもあり。
認証なども簡単に実装したい、アプリなども共通で開発したい場合はfirebaseもあり
認証周りが結構firebase好評だなというイメージ。あと、アプリに展開する場合はアプリで使う機能を色々提供しているので便利そう。firebaseは無料範囲が結構広いのも魅力。
サーバ
と表現しているものにPasS、IaaS、BaaSが入りまじっていてタイトルとかみ合っていない印象を受けました。記事の内容からすると
個人開発者向けサーバ環境の選び方まとめ
の方が適切に思います。確かにそうすね。変更しました!ありがとうございます。
Heroku addon に検索サービスがいくつかありElasticsearchやSolrなどが利用できますね。
https://elements.heroku.com/addons
私はGoogle app scriptで簡単なサービスを作ってます。基本的に無料で色々出来るし、使い易いとは言えないけどWebエディタもあります。どこでもプログラムが出来るので、小規模の個人開発では便利だと思います。基本的にはGsuiteと連動して動くアプリケーションを作る為のものなので、出来る事は限られていますが。ただ、Web Appも作れるしFunction/Lambdaのような事も出来るし、色々工夫すれば面白い事が出来ると思います。Google SheetをDBとして使えますし。もちろんSQLの方が便利ですが、小規模なものだとこれで結構行けたりします。これ単体ではスケールしないですが、特定のお客さんに複数のサービスを提供しているので、GASで出来る所はGASでやって、それ以外はサーバーを作って、DBはfirebaseで共通化、、、みたいな事をしようと考えています(すいません、この部分はあくまで予定です)。
Herokuを考えに入れられるなら、IBM Cloudなども結構いいかもしれません。
CloudFoundryベースのPaaSやKubernetesを前提にしたコンテナ環境を無料で使えるので私はそこそこ好きです。
@hikch
ありがとうございます。検索機能の紹介に追加しました。
@plsplsme
アドバイスありがとうございます。Google SheetをDB代わりに使うの盲点でした。DBの内容をちょいちょい編集したかったり他のスプレッドシートの内容を入れたい時とか便利そうすね。
@tkhm IBM Cloudに無料プランあったのはじめて知りました。なるほどー。
https://www.ibm.com/cloud-computing/bluemix/ja/pricing
「サーバの選択肢」に追加させてもらいました!
疑問点
Azure WebApps を使えば Git, Github から自動で取り込む機能があるためほぼ同じ感じでデプロイできるのでは?
Azure も同様にスケーラブルにできます。
AWS の方が Azure よりスケーラブルであるとは思えません(ほぼ同等だと思う)
Microsoft Azure
https://azure.microsoft.com/ja-jp/
コードを投げ入れたらすぐに動かしたい場合は Azure Web Apps
仮想マシンを立ち上げたいなら Azure Virtual Machines
RDB は SQLDB,Azure Database for PostgreSQL, MySQL. NoSQLを選ぶなら CosmosDB
って感じで一通り揃っています。
また、無料枠も下記の通り揃っています。
https://azure.microsoft.com/ja-jp/offers/ms-azr-0044p/
VPSは勉強に最適だと思う。
仕事で0から構築するなんて無駄の極みだけど、
0から構築して運用するスキルは必要なので個人でVPS借りて修行する。マゾいのは認める。
@fumiya-kume
最もって書き方は良くなかったっすね。変更しました。
Microsoft Azureの情報ありがとうございました!追記しときました。
@nak1114
一度時間取ってその辺がっつり勉強したい欲もあるんすよねえ。(railsもまだまだなので先になりそうですが)
クラウド開発環境PaizaCloudはいかがでしょうか?
はじめて個人で開発する場合につまずくことが多い開発環境設定が必要なく、ブラウザ上で開発や公開ができます。
最初はこの辺りから、簡単にはじめていただくのもいいと思っています。
どんなアプリケーションを展開しようとしているか
ユースケースはどういったものを想定しているか
規模感はどの程度を考えているか
スケールアップ時のダウンタイムはどのあたりまでを許容範囲ととらえるか
といった側面から切り分けてみると最適な環境はどれか検討しやすくなりそな気がします。
また、サーバー環境として考えるのであれば
・SSL証明書
・ドメインの取得、管理
・サポート体制(日本語大丈夫かなども含めて)
・パフォーマンスチューニングの必要性
・無料で使えるIPアドレスの数
・耐障害性
・セキュリティー
あたりも考慮してもよいかもしれません。
あと、さくらのVPSはさくらクラウドやさくら専用サーバーに簡単にスケーリングできるようになっていたような気がします。専用ツールか何か配布していたかと。逆は無理ですが。
それと、VPSはWindowsも使えるのでLinux知ってないとダメということはないです。個人的にはWindowsサーバーの方がLinuxよりよっぽど難しいと思っていますが。
AWSもOSのインストールからサーバーアプリケーションの設定も全部自分でやるパターンもあります。
そして、サーバーアプリを含めたチューニングも考慮する場合、どうしてもサーバー構築を自分でやる必要があります。それもあって実業務レベルでサーバー構築含めてアプリケーションを導入する例はよくあります。
例えばHTTP2.0使うんだ!とか。
さくらのVPSから始めるのは結構おすすめなのですが、一番のボトルネックはセキュリティ面を担保することになります。とりまアプリケーションを構築するためのサーバーの構築は難しくはないと思うのですが、そのサーバーがセキュリティ的に問題ないのか。という点を担保するのはベテランのエンジニアでも難しいように思います。
最後にいくつもアプリケーションを展開することを想定している場合は、WebサーバーとDBサーバーを分けるといったサーバー構成にも配慮しておくと幸せになれるように思います。
@yoshiokatsuneo@github
情報ありがとうございます!もうちょいpaizaの情報集まったら追記します。(ある程度情報集まらないで載せると間違った情報流しそうなので)
@y_miz
本当そうです!
今度はケース別に皆の構成を載せるみたいなのがいいなあと思ってます。例えば画像をよく使うサイトで基本はherokuで画像はS3にしてますーとか。
これはどういう意味でしょうか?
個人開発をする際にいつもReact+ReduxとGraphQLの組み合わせで実装してまして、私にとっては黄金の組み合わせになってます。疑問に思ったのと、どういう意図があるのかとても興味がありましたので質問しました。
@you88
VPSではConoHaもメジャーではないかと思います。
https://www.conoha.jp/
このはちゃんがかわいい、というのはとりあえず置いておくとして、
と、興味深いサービスになっています。
API が完備しているので Vagrant でプロビジョニングするツールも生まれています(便利です)。
https://github.com/hironobu-s/vagrant-conoha
@you88 ありがとうございます! PaizaCloudについて、もし間違いなどがあればまたコメントなどさせていただければと思いますので、よろしくお願いします (^^
@jabba
すみません、これは僕が記載ミスしただけでした。。。ただのミスなので削除しておきます
@corselia
conohaそうですね!もうちょい情報集まったら掲載します!ありがとうございます!