Fastifyで環境作る時に参考にした資料置き場

とりあえず一番はじめによむ

とりあえずRedisサーバは軽量そうで、DIが簡単にできそうなioredisを導入

DBはできるだけ直でSQLが書きたいので軽量なkyselyをセレクト
もっと軽いORMでも個人的にはいいだけどね...できるだけ無駄な処理にリソースを消費したくないから

もちろんDI大好きなのでDIコンテナは入れます!!!
DI使ったほうが遅延読み込みされるからメモリも節約できるし、いいことしかない
ただ、このDIコンテナ少しクセがあるので、後々記事にしたい

そして一番理解するのに苦しんだFastifyのJSON Schemaについて参考にした記事を貼っていく
JSON Schemaほんとに日本人で開発している人はFastifyでTypeScript使って書いてるのか?って疑いたくなるくらい資料が少なくて、困った
最終的にはGitHubで検索して実際に書いている人の実装を見て理解した...()
- fastify Schemaとかでまずは検索
- この記事でfastify-type-provider-typeboxというプラグイン?を発見して一気にTypeScritpで型厳格なSchemaを書けそうな未来が見えてくる
- そしてこのパッケージ最近名前が変わって公式のリポジトリに加わったらしくそこにも古い情報と新しい情報に乖離があり、はまりどころ満載である
- 私はどうやら色々探してこの記事に辿り着いたらしい(たどり着けてよかった)
- fastify-type-provider-typebox typescript とかで検索していた
そして、このプラグインを使うと決めたはいいものの、なかなか日本語の情報は出てこず、もう諦めて英語で検索していたけど、どの情報も触りだけで辛かったのでGitHubで誰か書いとるやろ!!!
ってことでこの謎のリポジトリをとても参考にさせてもらった
- あとは中身はただのtypeboxなので、typeの種類は公式のリポジトリを見るのが良いと思う

そして、routerは別のファイルで管理したかったので、 PluginとDecoratorsを使いたかったが、自分の思い描く使い方をする方法が全く転がってなくてとても困った
また、ログインの認証にMiddlewareを使いたかったが、そういう使い方もあまりサンプルがなくて苦労した
とりあえず参考になったサイトを並べておく
- Fastify decorate typescriptとかで検索

一応、WebSocketも扱う予定があったので、HTTP/2にするか迷ったのでそれ関連の記事も貼っておく
結局、client <- HTTP/2 -> nginx <- HTTP/1.1 -> node の構成にする方向で落ち着いた
ローカルネット内で特定のサーバ間の通信なら HTTP/1.1で十分そう

運用することを考えるとJavascriptはシングルプロセスなので、複数のプロセスを立ち上げないとCPUをフルに使えない問題があるPM2を使うと実現できるらしい
- pm2 multi processとかで検索する