Architecture - You-keitou/dify-template-maker GitHub Wiki
アーキテクチャ設計書
1. システム概要
1.1 アーキテクチャビジョン
Dify Template Generatorは、モジュラーでスケーラブルなマイクロサービスアーキテクチャを採用します。各ツールは独立したコンポーネントとして動作し、明確なインターフェースで連携します。
1.2 アーキテクチャ原則
- 疎結合: 各コンポーネントは独立して開発・デプロイ可能
- 高凝集: 関連する機能は同一コンポーネントに集約
- 拡張性: 新しい機能を既存システムに影響なく追加可能
- 回復性: 一部の障害が全体に波及しない
2. システムアーキテクチャ
graph TB
subgraph "ユーザーインターフェース"
UI[Webインターフェース]
CLI[CLIツール]
API[REST API]
end
subgraph "コアツール層"
AR[analyze_request]
GWS[generate_workflow_structure]
CDY[create_dsl_yaml]
VD[validate_dsl]
OD[optimize_dsl]
end
subgraph "拡張ツール層"
RM[retrieve_memory]
CE[cost_estimator]
SS[security_scan]
PES[parse_external_schema]
TL[telemetry_logger]
end
subgraph "基盤サービス"
LLM[LLM Service]
KB[Knowledge Base]
MDB[Memory Database]
TR[Template Repository]
end
UI --> AR
CLI --> AR
API --> AR
AR --> GWS
GWS --> CDY
CDY --> VD
VD --> OD
AR -.-> RM
GWS -.-> CE
VD -.-> SS
AR -.-> PES
OD -.-> TL
AR --> LLM
RM --> MDB
GWS --> KB
OD --> TR
3. コンポーネント設計
3.1 コアツール層
analyze_request
- 責務: 自然言語の解析と要件抽出
- 技術: NLP、意図分類、エンティティ抽出
- 依存: LLM Service、retrieve_memory
generate_workflow_structure
- 責務: ワークフローグラフの構築
- 技術: グラフアルゴリズム、レイアウト最適化
- 依存: Knowledge Base、cost_estimator
create_dsl_yaml
- 責務: DSL YAML生成
- 技術: テンプレートエンジン、YAML生成
- 依存: なし(純粋関数)
validate_dsl
- 責務: DSL検証
- 技術: スキーマ検証、静的解析
- 依存: security_scan
optimize_dsl
- 責務: DSL最適化
- 技術: パターンマッチング、ヒューリスティック
- 依存: telemetry_logger、cost_estimator
3.2 拡張ツール層
retrieve_memory
- 責務: 知識の検索と活用
- 技術: ベクトル検索、類似度計算
- データストア:
- ベクトルDB(Pinecone/Weaviate)
- キャッシュ(Redis)
cost_estimator
- 責務: コストとパフォーマンス推定
- 技術: 統計モデル、ベンチマークデータ
- データソース:
- プロバイダー料金表
- 実行履歴データ
security_scan
- 責務: セキュリティ脆弱性検出
- 技術: パターンマッチング、SAST
- ルールセット:
- OWASP Top 10
- CWE
- カスタムルール
parse_external_schema
- 責務: 外部スキーマ解析
- 技術: パーサー、スキーマ変換
- 対応形式:
- OpenAPI 3.0
- GraphQL SDL
- SQL DDL
telemetry_logger
- 責務: メトリクス収集と分析
- 技術: 時系列データベース、統計分析
- ストレージ:
- Prometheus/InfluxDB
- S3(長期保存)
4. データフロー
4.1 基本フロー
1. ユーザー入力
↓
2. analyze_request (+ retrieve_memory)
↓
3. generate_workflow_structure (+ cost_estimator)
↓
4. create_dsl_yaml
↓
5. validate_dsl (+ security_scan)
↓
6. optimize_dsl (+ telemetry_logger)
↓
7. DSL出力
4.2 エラーハンドリングフロー
検証エラー発生
↓
エラー分析
↓
自動修正可能?
├─ Yes → 修正適用 → 再検証
└─ No → ユーザーフィードバック要求
5. デプロイメントアーキテクチャ
5.1 コンテナ化戦略
- 各ツールは独立したDockerコンテナ
- Kubernetes上でオーケストレーション
- 水平スケーリング対応
5.2 サービスメッシュ
- Istio/Linkerdでサービス間通信を管理
- サーキットブレーカー
- リトライとタイムアウト
- 分散トレーシング
6. 非機能要件の実現
6.1 パフォーマンス
- キャッシング: 頻繁なパターンをRedisでキャッシュ
- 並列処理: 独立したツールは並列実行
- リソース最適化: GPUインスタンスをLLM専用に
6.2 可用性
- 冗長性: 各サービスは最低3レプリカ
- ヘルスチェック: 定期的な死活監視
- 自動復旧: 障害時の自動再起動
6.3 セキュリティ
- 認証: OAuth2/JWT
- 認可: RBAC
- 暗号化: TLS 1.3、保存時暗号化
- 監査: 全操作のロギング
7. 技術スタック
7.1 バックエンド
- 言語: Python 3.10+
- フレームワーク: FastAPI
- 非同期処理: asyncio、Celery
7.2 データストア
- プライマリDB: PostgreSQL
- キャッシュ: Redis
- ベクトルDB: Pinecone
- オブジェクトストレージ: S3互換
7.3 インフラ
- コンテナ: Docker
- オーケストレーション: Kubernetes
- CI/CD: GitHub Actions
- モニタリング: Prometheus + Grafana
8. 拡張ポイント
8.1 プラグインアーキテクチャ
- カスタムバリデーターの追加
- 新しい最適化ルールの定義
- 外部サービス連携の拡張
8.2 イベントドリブン
- ツール間のイベントバス
- 非同期処理の連鎖
- リアルタイム通知
9. 移行戦略
9.1 段階的導入
- Phase 1: コアツールの実装
- Phase 2: 拡張ツールの追加
- Phase 3: エンタープライズ機能
9.2 後方互換性
- APIバージョニング
- 非推奨機能の段階的廃止
- マイグレーションツールの提供