✨
SolarSystemDB - Universal Serverless Database | アーキテクチャ
導入
今回はSolarSystemDBのアーキテクチャについて解説していきたいと思います。
技術スタック
- SvelteKit(TypeScript)(フロントエンド・バックエンド)
- TailwindCSS(スタイリング)
- Cloudflare D1(SolarCoreDB、SolarSystemDB)
- Cloudfalre Pages(ホスティング)
- AWS Lambda(Time Travel ロールバック)
ドメイン
- auth.solarsystemdb.com(Auth0認証用)
- app.solarsystemdb.com(アプリケーションサイト)
- api.solarsystemdb.com(APIサーバー)
- solarsystemdb.com(エントランスサイト)
アーキテクチャ
SolarSystemDBでは、各ブランチをCloudflare D1データベースにマッピングします。
そして、各ブランチのステージングを可能にするユニットのグループをクラスタとして扱います。
クラスタにはStarSystemバックエンドを介して WebConsole か HTTP APIによってアクセスできます。
また、SolarCoreDBという分離したDBに各種システム情報を保管しています。
StarSystem
StarSystemはSvelteKit上に構成された、主にブランチのステージングを扱うロジックです。
以下のようなSQLコマンドによって、tableのdiffを計算しています。
PRAGMA table_info("TABLE_NAME")
PRAGMA index_list("TABLE_NAME")
後々オープンソース化する予定です。
TimeTravel ロールバック
インフラを含めたTimeTravelロールバックの仕組みは以下のようになっています。
TimeTravelはHTTP APIを提供しておらず、wrangler経由でしかロールバックできないので、AWS Lambdaを使用してwranglerコマンドを送信しています。Lambdaは関数URLを使用して各種バックエンドから叩かれる仕組みになっています。
また、素のLambda上ではnpm i -g wrangler
が使用できないので、ECRにwranglerをインストール済みのイメージをデプロイして使用しています。
まとめ
意外と書くことが少なくなりましたが、SolarSystemDBのアーキテクチャ解説は以上になります。
不明点や質問等ありましたら、遠慮なくコメントください!
Discussion