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 段階的導入

  1. Phase 1: コアツールの実装
  2. Phase 2: 拡張ツールの追加
  3. Phase 3: エンタープライズ機能

9.2 後方互換性

  • APIバージョニング
  • 非推奨機能の段階的廃止
  • マイグレーションツールの提供