GitHub Pages → Cloudflare Workersに移行したので、失敗したこととか書く
tadeku-tools という、小説創作を支援するツールをまとめているサイトを運営しているのですが、これをGitHub PagesからCloudflare Workersに移行しました。
主なモチベーションは以下のとおり。
- GitHub Pagesを無料で使うためにパブリックリポジトリで運営していたが、そろそろプライベートリポジトリにしたくなった
- 今後、有料機能を提供するために、サーバー側も用意したいと思った
現状では静的なページしかないのですが、Cloudflareに移行したことで、サーバーサイドのコードも書いたり、DBも置いたりしたいなと思っています。
さて、このサーバー移行について、個人サービスということもあって事前の下調べもそこそこにノリで始めてしまったのですが、いくつか失敗したこともありました。
失敗したこと
①一部のユーザーさんの環境で404が出るようになってしまった
Cloudflare Workersへの移行を終えた直後にGitHub Pagesでの公開を停止したのですが、一部のユーザーさんにはGitHub Pagesの404ページが表示されるようになってしまいました。なお、自分の手元の端末でアクセスした場合も全部404になってしまったので、僕が一番困りました。
DNSを1.1.1.1に切り替えることで自分はCloudflare Workersで公開されている本番環境にアクセスできるようになったのですが、ユーザーの方々全員にこれをやってもらうわけにもいきません。アクセス解析などを見ている限り、20%くらいのユーザーさんには404が表示されているようで、とても申し訳なく思っています。
しかし、これは時間経過とともにCloudflare Workersのページが表示されるようになるはずなので、積極的に策を講じることはしませんでした。今後は同じ轍を踏まないようにしたいと思います。
②サブドメインのサイトが表示されなくなった
蓼食う本の虫では、 tools.tadeku.net 以外にも、サブドメインで運営しているサイトがいくつかあります。たとえば、 shusak.tadeku.net や、first-books.tadeku.net などです。
今回の移行と同時にDNSサーバーをCloudflareに切り替えたのですが、そのときにサブドメインのDNSレコードを登録するのをうっかり忘れてしまっていました。そのため、上記のサブドメインで運営しているサイトが一時的に表示できなくなってしまいました。
すぐに気づけたのであまり大きな問題にはなりませんでしたが、大規模なサービスでこれをやっていたら影響範囲が大きかっただろうと思うので、まだ小規模なサービスで失敗経験を積めてよかったな……と思うことにします。
移行してみての感想
Cloudflare Workersに移行してみて、何が変わったのか?
まず、GitHubの当該リポジトリをプライベートにすることができました。今後のサービス運営の方針的に、これは達成しておきたかったので、とりあえず一安心。
また、有料会員登録の機能も作り始めました。これはサーバーサイドとDBが必要なので、Cloudflare Workersに移行したからこそ始められたことです。どのくらい無料で運営できるんだろうとドキドキしています。
なお、Cloudflare Workersでは、静的なアセットを返すだけであれば無料で使えるそうです。また、1日10万リクエストまでは無料枠の中で実行できるっぽいので、いろいろ動かして実験してみたいと思います。ちなみに今のところ、1日に40リクエストくらいしか実行していないっぽいです。まだまだ伸びしろがある。
オブジェクトストレージやDBも無料枠がそこそこ大きそうで、一体どうしてこれが無料で……?という気持ちになっています。
静的サイトを最初に公開する手段としてはGitHub Pagesが楽そうですが、少し慣れてきたら全部Cloudflare Workersにする方が良いのではないかという気がしてきました。サイトが大きくなってきたときに、後付けでサーバー側のコードも書いてアプリケーション化できたりするし。
Profile
あとーす(atohs), 伊藤祥太(ITO SHOTA) Born on November 13, 1993 🎉 / Live in Kumamoto 🧸 Website Development / Web Marketing / Writing / Editing
熊本大学文学部文学科卒。印刷会社で営業・Webディレクター、IT系ベンチャー企業でPdM・カスタマーサポートとして勤務した後に独立。ことばや文章に関することを中心に、企画・制作を担当します。