プレゼンテーション向けのストアをエッジに乗せつつクラサバの差分更新や同期を自動化したい妄想
#Redux #Cloudflare_D1 #Web_Standard_>_ReadableStream #メッセージング #キャッシュ管理
from
マイクロフロントエンドとキャッシュを前提としたCQSアーキテクチャを考える
#思考実験 #WIP
前提
ドメインイベントとEvent Sourcingは永続化の設計判断を遅らせることができる
単方向データフローにサーバーを含めるの続き #Dan_Abramov
クライアントがtsなのでサーバもtsで書くこと前提
関連
SVO型のパッケージングで機能的凝集を目指すオニオンアーキテクチャ
---
概要
プレゼンテーション向けのストアとは?
BFFとも言うが、概念スキーマをフロントエンドの欲しいデータ構造向けに最適化したもの
通信を排除し、フロントエンドの応答性を高めるためのServer Stateのキャッシュだったり
GraphQLだったり
主体がフロントエンドにあるサーバーサイドのデータ
クライアント専用のローカルステートとかは載せない
3層スキーマ > 概念スキーマと3層スキーマ > 外部スキーマは異なる
DBのデータ構造が正規化されていたとしても、UIでは非正規化されるというのはよくある
それにより概念スキーマを外部スキーマに変換する層が必要になる
2023になると、ある程度技術の螺旋が回ってきた
Vercel Ship started May 1st — Live Keynote May 4th
Cloudflare Workers
GraphQL
ここのペインは、現代的な技術スタックではどのように解決可能なのか、というところを深ぼる
例えばDurable Objects を Actor と捉えるなど
---
検討案
App Router
AppRouter / RSCの差分更新をサーバーサイドで完結させたい
Superflare
Cloudflare WorkersでStreamが使える
GraphQL
GraphQL Yoga > Subscriptions
GraphQL Yoga > Defer and Stream
GrapQL Mesh > Live Queries
Recoil
Recoil > Recoil Syncはフロントエンドの中でGraphQLを構築するようなもの
これやるなら最初からGraphQLでええやん感は...?koushisa.icon
後方互換性に強いので、Firebaseのスキーママイグレーション用途としてはピッタリ
---
メモ
なるべく標準化された仕様にのっかりたい
技術的負債を防ぐ
アプリのレイヤだと、GraphQL Serving Over HTTP準拠なGraphQL Yogaが一番理想に近いかも
認証関連