本文へ移動
NOT SO BADなブログ

ぼっちスタートアップが日々がんばっています。

Herokuの無料プランで月間100万PVをさばく(さばかない)話

  • 個人開発論
  • 技術系
  • Heroku

「Heroku Meetup #19 Heroku Trust!」でLTさせてもらってきました!

Heroku Meetup #19 Heroku Trust!

2018-02-02(金)19:00 - 22:00 2018年一回目のHeroku Meetupです! 2月2日はWikipedia曰く情報セキュリティの日 だそうなので、Heroku Trust!!ということで、気軽に使えてセキュリティもバッチリなHerokuでサービス開発するために必要な情報を皆さんで共有しましょう。 プログラムは現在調整中ですが、まずは皆様スケジュールの確保を宜しくお願い致します。 プログラム ドアオープン(18:45 〜 19:00) 18:30から会場入れますが、会場準備しているため、バタバタしているかもしれません。 45分以降ぐらいに来ていただけると...

herokujp.doorkeeper.jp

せっかくなので、LTのスライドを一部修正して掲載しておきます。

Heroku Meetupはずっと行きたかったけど今まで都合がつかず、初参加できてよかったです。

ピザごちそうさまでした🍕

LT内容

というわけで発表したスライドはこちら。

Herokuの無料プランで月間100万PVをさばく(さばかない)話

speakerdeck.com

3行で要約

  • それなりにアクセスが多いサイトでも、場合によってはHerokuのFreeDynoだけでさばけるよ
  • Herokuは更新系に集中して、アクセスが多い閲覧系のコンテンツはGoogleCloudStorage(GCS)とかS3に置いちゃえばいいんだよ
  • 最近だとFastlyとか使うのがいいらしいけど、GCS/S3も安くて手軽にできるからおすすめだよ

補足とか言い訳とか

ちょうど発表の数日前に、似た内容の話がはてぶでバズってました。

実はHerokuで充分なのでは問題|konpyu

Herokuはwebアプリをインターネット上にデプロイする場所として広く使われている。web業界の人は誰もが一度は触った事があると思う。 何が便利なのかというと、デプロイ作業が極めて簡単なことだ。コマンド一発でサーバーが用意され、これまたコマンド一発でデプロイが出来る。一般に、webアプリは依存するライブラリが多種多様あり、それらを漏れなくインストールしないとデプロイ出来ないのだが、代表的なwebアプリケーションの作り方に添って作っている限り、後は構成を検知してよしなにやってくれるのだ。noteのリリース時の検証にも大活躍してくれた。 別にHerokuの回し者ではないのだが、一旦こ

note.mu

またさらに前に話題になったdev.toもHeroku/Railsであの爆速を実現してて、その速さのコアな部分はFastlyによるCDN配信だったと理解しています。

今回発表した内容も考え方はほぼ同じなんですが、Fastlyとかを使うんじゃなくてGCS使ってるところが違う点です。

またメリット/デメリットの比較に関して、今回は配信速度の追求よりも、大量のアクセスをちゃんとさばくというところに重点を置いているため、その点もご了承ください。

個人的にはdev.toの爆速っぷりに驚いた一人なので、今後Fastly(もしくは類似サービス)を使うのはもっと主流になっていくんじゃないかと思っています。

ただ現時点でまだCDNでの動的コンテンツキャッシュをよく把握できておらず、自分の力量を考えると本番で試すのは怖いなーという感じです。

あと金額的にもFastlyは多少高いのかなーと思っていて、個人のWebサービスなんかで使うにはまだハードルが高いという印象です。

※そもそもFastly使ったことないので、違うよっていうご意見あればぜひ教えてほしいです。

その点GCS方式は、ベストプラクティスではないかもしれないけど、わたし程度のエンジニアレベルで3年運用してて、お安くてトラブルもなく、今のところ超快適です。

なので少なくとも現時点で、お手軽に試す分にはおすすめできるんじゃないかなーという話でした。

ちなみに、LTのあと懇親会で色んな方に話しかけてもらったのですが、ちゃんとした開発会社さんからS3で似た仕組みを運用してるよ、という話を聞きました。

4年前に試行錯誤してこのやり方にたどり着いたのですが、まぁ間違ってなかったんだなーと思えてうれしい限りです。

まとめというか、余談

せっかくLTまでしたんですが、THE TOURNAMENTは現在、Rails/HerokuからFirebase/Riot.jsに絶賛リニューアル中です。

しかしFirebaseにインフラが変わっても、このGCS方式の仕組み自体は続けています。

いままでHTML出力は、Herokuのschedulerアドオンでバッチ処理していたのですが、CloudFunctionでFirestoreの更新をトリガーに動かすように変えたくらいですね。CloudFunction超便利。

安定稼働してきたらFirebase版のやり方もまとめてみたいと思います。

余談の余談

Herokuからの移行を決めたのには色々理由があるのですが、Herokuがだめだからというわけではなく、作ってるサービスとの相性が大きいです。

トーナメントだとデータ構造がほぼjsonで、フロントでうにょうにょ動かすのがメインになることを考えたときに、Heroku/Railsである必然性がなくてですね。。(気付くのが遅い)

個人的にいまでもHerokuは大好きです。

現状Herokuの無料プランでずっと動かせるのは1アプリだけなので、トーナメントの枠が空いたら、4年ぶりにHerokuで新しいアプリを動かせるのが楽しみだったりします。

おしまい。

(2018年4月1日追記)

Firebaseへのお引っ越しが完了したので記事にまとめました。

http://blog.notsobad.jp/entry/2018/03/31/132507

blog.notsobad.jp

さようなら、Heroku。また会う日まで。。