このブログの記事を管理しているバックエンドAPIが、今まではRuby on Railsで作られていたけど、リプレースした。
- Before
- APIサーバ: Ruby on Rails
- ホスティング: Heroku
- 記事保存場所: MySQL
- After
- APIサーバ: FastAPI
- ホスティング: Azure Container Apps
- 記事保存場所: Markdown静的ファイル(Git管理)
動機
ブログ記事を書くにあたって、今まではRailsのWebアプリケーション上で記事を書いていた。 けどこのWebアプリケーションの出来が良くなく、記事を書きやすく作りこんでいくモチベーションも沸かなかった。 今の自分の使い方であれば、ローカルでMarkdownで記事を書いてGit管理し、静的ファイルとして配信するような仕組みの方が合っていると思っていた。
そんな中にちょうどHerokuの有料化のニュースが来て、有料化するんだったらもっと使いやすいサービスに乗り換えようか、と考えた。 以前AWS AppRunnerを使おうとして断念したけど、今回はAzure Container Appsにした。当たり前だけどAzure Container Appsは普通に使うことができた。
構成
記事をMarkdownの静的ファイルで配置し、FastAPIでJSONとして返すようにする。 フロントエンドの構成は変えないので、JSONを返すAPIを作って差し替えれば移管できる。
Rails上にMarkdownで保存されている既存記事をすべてHTMLで吸い出し、Markdownに変換して保存し、HTMLに変換するFastAPIサーバを作って、RailsのAPIの返り値と付き合わせて検証した。改行の連続した時の挙動など細かい仕様の差異があって面倒だったけど吸収し切ることが出来た。
この記事が移行後の1発目で、旧システム上には存在せず新システムにしか無いので、この記事が正常に表示されていれば移行は成功した事になる。