Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

エンタープライズ AI アプリケーションのレイヤードアーキテクチャ設計

エンタープライズ AI を「LLM + チャット UI」として導入する時代は終わった。本番環境で信頼性・拡張性・ガバナンスを両立させるには、明確なレイヤー分離に基づくアーキテクチャ設計が不可欠である。本稿では、インフラストラクチャ層・プラットフォーム層・アプリケーション層・プレゼンテーション層の4層モデルを提示し、Dify がどの層に位置づけられるか、各層間の統合パターンをどう設計すべきかを解説する。

全体アーキテクチャの概観

graph TB
    subgraph PL["プレゼンテーション層(ユーザー層)"]
        WEB["Web UI / チャット"]
        MOBILE["モバイルアプリ"]
        INTERNAL["社内ポータル連携"]
        API_GW["API Gateway"]
    end

    subgraph AL["アプリケーション層"]
        APP1["契約レビュー Assistant"]
        APP2["社内 FAQ Bot"]
        APP3["稟議ドラフト生成"]
        APP4["製造品質分析"]
        APP5["文書処理パイプライン"]
    end

    subgraph PLAT["プラットフォーム層 ← Dify"]
        MODEL["モデル管理・ルーティング"]
        KB["Knowledge Base"]
        WF["Workflow エンジン"]
        AGT["Agent フレームワーク"]
        GOV["権限・ログ・監査"]
        TOOL["Tool / Plugin 管理"]
    end

    subgraph INFRA["インフラストラクチャ層"]
        K8S["Kubernetes / コンテナ基盤"]
        DB["PostgreSQL / RDS"]
        REDIS["Redis / ElastiCache"]
        S3["S3 / オブジェクトストレージ"]
        VDB["ベクトルDB(Weaviate / Qdrant)"]
        NET["ネットワーク / Ingress / WAF"]
    end

    PL --> AL
    AL --> PLAT
    PLAT --> INFRA

なぜレイヤードアーキテクチャが必要なのか

責務分離の原則

エンタープライズ AI 基盤に関わるステークホルダーは多岐にわたる。

ステークホルダー関心事対応レイヤー
インフラチーム(SRE)可用性、スケーリング、コストインフラストラクチャ層
AI プラットフォームチームモデル管理、RAG 品質、ガバナンスプラットフォーム層
業務開発チームビジネスロジック、UXアプリケーション層
エンドユーザー / 外部システム使いやすさ、応答速度プレゼンテーション層

レイヤーが分離されていなければ、モデル変更がインフラ構成に波及し、業務アプリの改修がプラットフォーム全体のリリースサイクルに縛られる。金融業界の大手企業では、この分離が不十分だったために、LLM のバージョンアップが全社システムテストを誘発した事例がある。

日本のエンタープライズ固有の考慮事項

  • データ主権: 個人情報保護法と金融庁ガイドラインへの準拠。モデル推論とデータ保管のレイヤーを分けることで、データの越境問題を局所化できる
  • マルチベンダー戦略: 日本企業に多い SI 分担体制と相性が良い。インフラは A 社、プラットフォーム運用は B 社、アプリ開発は内製という切り分けが可能
  • 段階的導入: PoC から本番までの段階で、レイヤーごとに成熟度を上げられる

インフラストラクチャ層の設計指針

構成要素と推奨構成

コンポーネント開発/検証環境本番環境(中規模)本番環境(大規模)
Kubernetesシングルノード / Docker Compose3+ Worker Nodes5+ Worker Nodes, マルチ AZ
PostgreSQLシングルインスタンスRDS Multi-AZAurora PostgreSQL
RedisシングルインスタンスElastiCache (Replica)Redis Sentinel / Cluster
オブジェクトストレージローカルボリュームS3S3 + CloudFront
ベクトルDBWeaviate シングルWeaviate クラスタQdrant Distributed / pgvector
ネットワークNodePortALB + IngressALB + WAF + Private Link

インフラ層の設計原則

  1. ステートレス/ステートフル分離: Dify の API Server や Worker はステートレスに設計されているため、水平スケーリングが容易。ステートフルなデータストア(PostgreSQL, Redis, ベクトルDB)はマネージドサービスに委譲することが望ましい
  2. リソース予約: GPU ノード(モデル推論を自社ホストする場合)とCPU ノードを NodePool で分離する
  3. Secret 管理: API キー、DB 認証情報は Kubernetes Secrets または HashiCorp Vault で一元管理

プラットフォーム層の設計指針 – Dify の位置づけ

Dify がカバーする領域

Dify はエンタープライズ AI アプリケーション基盤のプラットフォーム層に位置する。具体的には以下の機能を提供する。

graph LR
    subgraph DifyPlatform["Dify プラットフォーム層"]
        direction TB
        MP["Model Provider 管理<br/>OpenAI / Azure / Anthropic / 国産LLM"]
        KB2["Knowledge Base<br/>ベクトル検索 / 全文検索 / Hybrid"]
        WF2["Workflow Designer<br/>条件分岐 / ループ / 外部API呼出"]
        AG2["Agent<br/>Tool 呼び出し / ReAct / Function Calling"]
        PERM["Workspace 権限管理<br/>メンバー / ロール / API キー"]
        LOG["ログ・可観測性<br/>実行履歴 / トークン使用量"]
    end

プラットフォーム層がアプリケーション層に提供するインターフェース

Dify は以下の方式で上位のアプリケーション層に機能を公開する。

インターフェース用途典型的な利用シーン
REST APIアプリケーションからの呼び出し社内システムからの Chatbot / Completion 呼び出し
Webhookイベント駆動連携Workflow 完了通知を Slack / Teams に送信
Embed WidgetWeb ページ埋め込み社内ポータルへのチャット UI 埋め込み
Workflow as API複雑な処理パイプラインの API 化文書取込→分類→要約→通知の一連処理

プラットフォーム層の設計上の注意点

  • モデルルーティング戦略: 全アプリが同一モデルを使うのではなく、タスク特性に応じて GPT-4o / Claude / 軽量モデルを切り替える。Dify の Model Provider 設定でワークスペース単位の制御が可能
  • Knowledge Base の分割統治: 部門別・業務ドメイン別に Knowledge Base を分割し、アプリごとに参照先を限定する(詳細は「ナレッジベーススケーラブル設計」を参照)
  • ガバナンスポリシー: トークン使用量の上限設定、モデルアクセスの承認フロー、プロンプトテンプレートの管理

アプリケーション層の設計指針

アプリケーションのパターン分類

パターン特徴Dify での実装方式業界事例
対話型 Assistantユーザーとの自然言語対話Chatbot アプリ + Knowledge Base金融: 行内問い合わせ Bot
文書処理パイプライン大量文書のバッチ処理Workflow(HTTP + LLM ノード連鎖)製造: 品質報告書の自動要約
意思決定支援複数情報源からの分析・レコメンドAgent + Tool(DB検索 / API呼出)小売: 需要予測レポート生成
コード生成・レビューソフトウェア開発支援Completion アプリ + カスタムプロンプトIT: コードレビュー支援
マルチモーダル処理画像・PDF・音声の理解Workflow + Vision Model保険: 損害査定書の画像解析

アプリケーション層と他レイヤーの境界

アプリケーション層が持つべきもの:

  • ビジネスロジック(承認フロー、通知ルール、出力フォーマット)
  • ユーザー認証・認可(SSO 連携、API キー管理)
  • 業務固有の前処理・後処理

アプリケーション層が持つべきでないもの:

  • モデルの直接呼び出し(プラットフォーム層を介する)
  • ベクトルDB への直接アクセス(Knowledge Base API を使う)
  • インフラの構成管理

プレゼンテーション層の設計指針

接続パターン

graph LR
    U1["エンドユーザー"] --> WEB2["Dify Web UI"]
    U2["社内ユーザー"] --> PORTAL["社内ポータル<br/>(iframe / API)"]
    U3["モバイルユーザー"] --> MAPP["モバイルアプリ<br/>(REST API)"]
    U4["外部システム"] --> APIGW["API Gateway<br/>(認証 + レート制限)"]
    
    WEB2 --> DIFY["Dify Platform"]
    PORTAL --> DIFY
    MAPP --> DIFY
    APIGW --> DIFY

日本企業での典型的な統合先

統合先接続方式注意点
Microsoft TeamsBot Framework + Dify APIAzure AD との SSO 連携が必要
SlackSlack App + WebhookEnterprise Grid ではセキュリティレビュー必須
ServiceNowREST API 連携チケット作成・更新のフロー設計
SAPRFC/BAPI → 中間 API → Difyデータ変換レイヤーが必要
kintoneWebhook + REST APIカスタマイズ JS からの API 呼び出し

レイヤー間の統合パターン

パターン1: 同期 API 呼び出し

最もシンプルなパターン。応答時間が SLA に収まる場合に適用。

ユーザー → API Gateway → Dify REST API → LLM → 応答返却

レイテンシ目安: 1-10秒(モデル・プロンプト長による)

パターン2: 非同期 Workflow

長時間処理やバッチ処理に適用。Dify Workflow をキューイング的に活用。

外部トリガー → Dify Workflow API → 処理実行 → Webhook 通知 → 結果格納

パターン3: イベント駆動連携

ドキュメント登録・更新をトリガーに Knowledge Base を自動更新。

文書管理システム → Webhook → Dify Knowledge Base API → 自動インデックス更新

導入ロードマップの推奨

フェーズ期間アクションレイヤー成熟度
Phase 1: PoC1-2ヶ月Docker Compose で Dify 検証、1-2アプリ試作インフラ: 最低限 / プラットフォーム: 検証中
Phase 2: パイロット2-3ヶ月Kubernetes 移行、本番級インフラ構築、3-5アプリ展開インフラ: 本番級 / プラットフォーム: 安定化
Phase 3: 全社展開3-6ヶ月マルチワークスペース、ガバナンス確立、10+アプリ全レイヤー本番運用
Phase 4: 最適化継続的コスト最適化、モデル戦略見直し、新規ユースケース全レイヤー成熟

アンチパターン

以下のアーキテクチャ判断は、エンタープライズ運用で問題を引き起こしやすい。

アンチパターン問題点推奨アプローチ
モノリシック AI アプリモデル変更が全体に波及レイヤー分離 + API 抽象化
各部門が独自に LLM 基盤を構築コスト増大、ガバナンス不能共通プラットフォーム層の設置
プラットフォーム層を飛ばして LLM 直接呼出監査ログ欠如、プロンプト管理不能Dify 経由でのモデルアクセスを標準化
インフラ層とアプリ層の密結合スケーリング困難、移行コスト増マネージドサービス活用 + IaC

まとめ

エンタープライズ AI アプリケーションのレイヤードアーキテクチャは、単なる概念整理ではなく、チーム間の責任分界点を明確にし、変更影響を局所化するための実践的な設計方針である。Dify をプラットフォーム層に位置づけることで、インフラチームはインフラに、業務チームはビジネスロジックに集中でき、AI 基盤全体のガバナンスと拡張性を両立できる。

特に日本の大企業において、SI パートナーとの分担体制や段階的導入プロセスと親和性が高く、既存の IT ガバナンス体制を活かしながら AI 活用を加速する現実的なアプローチとなる。


参考資料