アーキテクチャ
システムはどう組み合わさるのか
システムを設計する際に、私たちが最初に描く図です。それぞれがレイヤーまたはフローと、負荷を担うコンポーネントを示します。
これらは一般化したパターンです。実際の設計はお客様の要件と制約から出発し、多くの場合、少なくとも1つの重要な点でパターンから離れます。
本番AIアプリケーションの構造
ユーザー
- Webアプリ
- モバイルアプリ
- チャットUI
- 社内ツール
アプリケーション層
ID、権限、ユーザー体験を担う層
- セッション管理
- アクセス制御
- レスポンスストリーミング
- フィードバック収集
AIオーケストレーション層
プロンプト、ツール、ポリシーをバージョン管理しテストする層
- プロンプト管理
- ツール呼び出し
- ガードレール
- モデルルーティング
モデル / エージェント
- ホスト型LLM
- セルフホストモデル
- タスクエージェント
- 埋め込みモデル
ナレッジ・データ層
検索は呼び出し元の権限に従う
- ベクトルインデックス
- ドキュメントストア
- リレーショナルデータ
- セマンティックキャッシュ
業務システム / API
- ERP・CRM
- IDプロバイダー
- 社内API
- ドキュメントリポジトリ
インフラ・オブザーバビリティ
トレース、コスト、品質をリクエスト単位で計測
- Kubernetes
- GPU・APIキャパシティ
- トレーシングと評価
- コスト監視
AIエンジニアリングのライフサイクル
- 01
データ
ソースの収集・整備・ラベル付け・統制
- 02
モデル
モデルの選定・適応・バージョン管理
- 03
オーケストレーション
プロンプト、検索、ツール、ガードレール
- 04
アプリケーション
プロダクト画面とシステム統合
- 05
評価
オフラインテストセットとオンラインレビュー
- 06
オブザーバビリティ
トレース、コスト、レイテンシ、ドリフト
検索拡張生成(RAG)パイプライン
取り込み
- 01
ソース
ドキュメント、データベース、社内API
- 02
パースとチャンク化
構造を保ったままテキストを抽出
- 03
埋め込み
バッチ処理、モデルはバージョン管理
- 04
インデックス化
ACL付きのベクトル・キーワードインデックス
クエリ
- 01
質問
認証済みユーザーとそのアクセス範囲
- 02
検索
ベクトルとキーワードのハイブリッド検索
- 03
リランキング
最も関連性の高いパッセージのみ残す
- 04
生成
引用付きの根拠ある回答
- 05
評価と記録
トレース、スコア、フィードバックを記録
人による承認を組み込んだエージェント型ワークフロー
推論
- 01
トリガー
イベント、スケジュール、ユーザー要求
- 02
計画
目標を範囲の限られたステップに分解
- 03
ツール呼び出し
型付きツールによる読み取り専用の参照
- 04
アクション案
根拠を添えた変更の提案
統制下の実行
- 01
ポリシーチェック
上限、権限、リスク評価
- 02
人による承認
影響の大きいアクションで必須
- 03
実行
対象システムへの冪等な書き込み
- 04
検証
結果を確認し、再試行またはロールバック
- 05
監査
全ステップを記録し、再生可能に
マイクロサービスアーキテクチャ
クライアント
- Webアプリ
- モバイルアプリ
- パートナー連携
APIゲートウェイ / BFF
- ルーティング
- 認証
- レート制限
- レスポンス整形
ドメインサービス
各サービスが1つの境界づけられたコンテキストを担う
- 注文
- 決済
- カタログ
- アカウント
- 通知
非同期メッセージング
- Kafkaトピック
- アウトボックス発行
- イベントコンシューマー
- デッドレターキュー
データストア
サービスごとにデータベースを持ち、テーブルは共有しない
- サービス別PostgreSQL
- Redisキャッシュ
- 検索インデックス
- オブジェクトストレージ
プラットフォーム
- トレーシングとメトリクス
- ログの集中管理
- CI/CDパイプライン
- サービス設定
イベント駆動アーキテクチャ
プロデューサー
- 01
コマンド
サービスがリクエストを処理
- 02
ローカルトランザクション
状態とアウトボックス行を同時にコミット
- 03
アウトボックスリレー
ポーリングかログ追跡で取得し発行
- 04
発行
スキーマバージョン付きのキー付きイベント
ブローカー
- 01
トピック
イベント種別または集約ごとに1つ
- 02
パーティション
キー単位で順序を保証
- 03
保持
過去のオフセットから再生可能
- 04
デッドレターキュー
失敗し続けるイベントを保持
コンシューマー
- 01
コンシューマーグループ
パーティションをまたいでスケールアウト
- 02
冪等ハンドラー
適用前にイベントIDで重複排除
- 03
バックオフ付きリトライ
一時的な障害に限定
- 04
オフセットコミット
副作用の成功後に実行
- 05
状態の投影
リードモデルとキャッシュを更新
フロントエンドのレンダリング戦略
ビルド時(SSG)
- 01
コンテンツとデータ
ビルド時にCMS、Markdown、APIを読む
- 02
静的生成
ページを一度だけHTMLにレンダリング
- 03
CDN
キャッシュしてエッジから配信
- 04
再検証
変更時または一定間隔で再生成
リクエスト時(SSR)
- 01
リクエスト
ユーザー別または最新のデータが必要
- 02
サーバーレンダリング
データを取得しコンポーネントを描画
- 03
ストリーミング
シェルを先に送り、遅い部分は後続
- 04
ハイドレーション
ブラウザでハンドラーをアタッチ
クライアント(SPA)
- 01
クライアント状態
UI状態と楽観的更新
- 02
API呼び出し
バックエンドへの型付きリクエスト
- 03
キャッシュ
重複排除、再検証、無効化
- 04
ナビゲーション
プリフェッチ付きクライアントルーティング
モバイルアプリケーションのバックエンド
モバイルアプリ
- iOS (Swift)
- Android (Kotlin)
- Flutter
- オフラインデータストア
エッジ
- CDN
- APIゲートウェイ
- 認証
- レート制限
BFF / モバイルAPI
可能な限り1画面を1往復で取得
- 画面単位のレスポンス
- APIバージョニング
- 同期エンドポイント
- フィーチャーフラグ
サービス
- アカウント
- コンテンツ
- 決済
- メディア処理
データ・通知
- PostgreSQL
- Redis
- オブジェクトストレージ
- APNs・FCMプッシュ
オブザーバビリティ
- クラッシュレポート
- APIトレーシング
- リリースヘルス
- クライアント分析
クラウドプラットフォームアーキテクチャ
エッジ
- DNS
- CDN
- WAF
- DDoS対策
ネットワーク
ワークロードとデータはプライベートサブネットに配置
- VPC
- 公開・非公開サブネット
- ロードバランサー
- NAT・ピアリング
コンピュート
- Kubernetes
- コンテナ
- サーバーレス関数
- オートスケーリング
データ
- マネージドデータベース
- キャッシュ
- オブジェクトストレージ
- メッセージキュー
プラットフォームサービス
- シークレット管理
- IAM
- Infrastructure as Code
- コンテナレジストリ
オブザーバビリティ・DR
リストアは想定で済ませず、実際に演習する
- メトリクスとログ
- トレーシング
- バックアップ
- ゾーン間フェイルオーバー
セキュリティゲートを備えたCI/CDパイプライン
ビルドと検証
- 01
コミット
mainブランチへのレビュー済みマージ
- 02
ビルド
再現可能、依存関係はバージョン固定
- 03
テスト
単体・結合・コントラクトテスト
- 04
SAST・依存関係スキャン
静的解析と依存関係の監査
- 05
イメージスキャンと署名
レイヤーをスキャンし署名、SBOMを添付
リリース
- 01
ステージング
同一アーティファクト、本番相当のデータ
- 02
カナリア
一部のトラフィックでシグナルを監視
- 03
本番
ゲート付きの段階的ロールアウト
- 04
モニタリング
SLOで昇格かロールバックかを判断
セキュリティアーキテクチャ:多層防御
アイデンティティ
すべてのリクエストを認証・認可する
- SSO・MFA
- ロールベースアクセス制御
- サービスID
- セッションポリシー
エッジ
- WAF
- DDoS対策
- TLS終端
- レート制限
アプリケーション
- 入力検証
- 認可チェック
- セキュアSDLC
- 依存関係スキャン
データ
- 保存時の暗号化
- 転送時の暗号化
- 鍵管理
- データ分類
インフラ
- ネットワーク分離
- ハードニング済みイメージ
- シークレット管理
- パッチ管理
検知・対応
統制は破られる前提で備える
- 監査ログの集中管理
- アラートルール
- インシデント対応手順書
- フォレンジック用の保持
Web3・デジタルアセットインフラ
アプリケーション・API
- クライアントアプリ
- APIゲートウェイ
- パートナーAPI
- 運用コンソール
ウォレット・トランザクション
- アドレス管理
- トランザクション構築
- ナンス・手数料制御
- ポリシーエンジン
鍵管理
鍵は署名境界の外に出ない
- HSM
- MPC署名
- 承認クォーラム
- 鍵ローテーション
ノード / RPC層
- フルノード
- RPCプロバイダー
- フェイルオーバー経路制御
- メモリプールアクセス
インデックス・分析
チェーンデータはファイナリティに達するまで暫定扱い
- ブロック取り込み
- イベントデコード
- リオーグ(再編成)処理
- クエリAPI
監視・コンプライアンス
- トランザクション監視
- アドレススクリーニング
- 監査証跡
- アラート
モダンデータプラットフォーム
取り込みと保存
- 01
ソース
データベース、SaaS、イベント、ファイル
- 02
取り込み
バッチ、CDC、ストリーミング
- 03
生データストレージ
不変のランディングゾーン
- 04
レイクハウス
オープンテーブル形式またはウェアハウス
- 05
カタログ
スキーマ、リネージ、オーナーシップ
変換と提供
- 01
変換
バージョン管理しテストしたSQLモデル
- 02
品質チェック
鮮度、件数、スキーマのテスト
- 03
BIへの提供
ダッシュボードと統制された指標
- 04
APIでの提供
アプリケーション向けデータプロダクト
- 05
MLと埋め込み
特徴量とベクトルインデックス
- 06
ガバナンス
アクセスポリシー、マスキング、監査
高性能トランザクションプラットフォーム
チャネル
- Web
- モバイル
- パートナーAPI
- バッチファイル
APIゲートウェイ
- 認証
- レート制限
- 冪等性キー
- リクエスト署名
トランザクションサービス
JavaとSpring Boot、ステートレス、水平スケール
- 支払い開始
- オーソリゼーション
- 台帳への記帳
- 限度額とリスク
Kafkaイベント基盤
- トランザクションイベント
- アウトボックスリレー
- パーティション分割トピック
- デッドレタートピック
台帳DB・Redis
正となるのは台帳であり、キャッシュではない
- 複式簿記台帳
- リードレプリカ
- 残高キャッシュ
- 分散ロック
照合(リコンサイル)・監査
- 決済照合
- 不一致の検出
- 不変の監査ログ
- レポート出力
モニタリング
- レイテンシ・エラーのSLO
- コンシューマーラグ
- トレーシング
- ビジネスアラート
マルチテナントSaaSアーキテクチャ
テナント対応エッジ
- カスタムドメイン
- テナント解決
- WAF
- テナント別レート制限
アイデンティティ・SSO
- SAML・OIDC
- SCIMプロビジョニング
- ロールと権限
- MFA
コントロールプレーン
テナントを管理し、テナントのトラフィックは処理しない
- テナントライフサイクル
- プランとエンタイトルメント
- 課金とメータリング
- フィーチャーフラグ
アプリケーションプレーン
- ステートレスサービス
- バックグラウンドジョブ
- テナントコンテキスト
- Webhook
データ分離
分離モデルはプラン階層ごとに選択
- 行レベルセキュリティ
- テナント別スキーマ
- 専用データベース
- テナント別の鍵
テナント別オブザーバビリティ
- 利用状況メトリクス
- テナントタグ付きトレース
- ノイジーネイバーアラート
- 監査ログ
現実資産(RWA)トークン化のフロー
オフチェーン
- 01
資産オンボーディング
法的ストラクチャーと関連文書
- 02
投資家KYC
本人確認と適格性の確認
- 03
資産レジストリ
所有権と権利の記録
- 04
照合(リコンサイル)
レジストリとチェーン状態を突合
- 05
レポーティング
明細、監査、開示
オンチェーン
- 01
トークン発行
登録済み資産に対してミント
- 02
許可リスト
確認済みウォレットのみ保有可能
- 03
移転制御
コントラクト内でルールを強制
- 04
決済
支払いと引き換えのアトミックな移転
- 05
ライフサイクルイベント
分配、償還、バーン
