PHPで作っていたサイトをCloudflare Workersに移行した
PHPで構築していたサイトをCloudflare Workersへ移行し、運用負荷と保守コストの削減を実現した事例です。ReactフロントとTypeScriptによるサーバーレス構成への具体的な移行プロセス、AIを活用したAPI移植、Cloudflare Workersが提供する管理の容易さと信頼性について解説します。
※本記事は広告を含みます
初めに
どうも、職業エンジニアです。
最近PHPだったりNode.jsだったり色んな所でてんやわんやしていますね。
特に上記の2言語はプライベート良く触ってたので、プライベートでも仕事みたいなことをする必要があったり。。だるい!
まあ何かを公開している以上運用は必ず発生するわけなのでこれ自体はしょうがないのですが、今回はかなり話が大きくなっていてビックリしましたね。総理まで出てきてPHPの脆弱性周知してたし。
そんな訳で、できるだけ運用負荷を減らすという目的のもとPHPで作っていたサイトをCloudflare Workersに移行してみました。
もともとの構成
まずは移行前の構成を見ていきたいと思います。
フロントエンド:React
バックエンド:PHP
サーバー:スターレンタルサーバー(無料プラン)
とこんな感じの構成になっていました。
PHPの役割としては「APIの提供のみ」という分かりやすい構成ですね。
移行後の構成
移行後の構成はこんな感じ。
フロントエンド(Reactまま):Static Assets
バックエンド(PHP→TypeScript):Worker script
サーバー(ということにする):Cloudflare Workers
Workersに移行時はフロントエンドはそのまま静的アセットとして利用できる形です。なので、主にPHPで書かれたAPI部分をPHPから別の言語に移植する形で進めることにしました。
とは言っても、もともとそんなに処理が多くなく、外部APIのラップとキャッシュ保持がメインの役割だったので、AIにお願いしたらコード自体の修正は一瞬でしたね。すごい。
今回はフロントエンドに合わせWorkersスクリプトをTypeScriptで実装していますが、他にもPython、Rust、Goなんかが選択肢としてあるもようです。
これまでWorkersはエンドポイント作ってAPI的な使い方をする、ってやりかたしか知らなかったんですが、いつの間にか静的アセットも一緒に配布できるようになっているらしく、今回のような構成にするとまるっとCloudflareにデプロイすることができて非常に楽です。
以前はPages × Workersでそれぞれデプロイする感じだったんだけどね。すばらC。
実はいうと
このツールサイトはもともとWordPressにプラグインという単位でツールを作成し公開していました。で、運用していくうちに「そもそもWordPressである必要なくね?」ってことで、脱CMSしたサイトになります。で、今回は脱PHPしました。これも「そもそもPHPである必要なくね?」が一番大きな理由です。
ツールのほとんどがクライアント完結ですし、データベースを使ったツールもないですし。PHPに依存する部分が極小だったので、だったらもっとシンプルな構成にしてしまおうかと。
一番のメリットは運用保守コストの削減
今回のようなサーバーレス構成※ の一番嬉しい点は「サーバー自体の管理・運用を意識せずに済む」点です。まあレンタルサーバーだとこの辺りはレンタルサーバー側がやってくれるんですが、結局運用側でも確認だったり変更だったりの作業は発生するんですよね。1つならいいんですが、それが複数サイトあったりするとまあまあダルい。
もちろんWorkersにしたことで運用コストがゼロになる訳でもないのですが、Cloudflareに乗ってる安心感みたいのは間違いなくある。長年利用してきた信頼もあるし。
てなわけで、今後プライベートでWEB公開するならなるべくCloudflareを使ったサーバーレス構成にしていきたいなと思いました。このブログはVPSに乗ってるので自分でメンテしなきゃですけどね。。
最後に
AIによりWEBページを公開するハードルはとても低くなった、けれど運用するハードルはとても高くなった。法人でも個人でもね。お仕事むずかしい!!
関連記事
ブログにコメント欄を置いてから一ヶ月経過したので、今後どうするかを検討してみた
8月終わるので今月やったことをまとめよう