# インフラ構成図

## システム全体構成図

```mermaid
graph TB
    subgraph "管理クライアント層"
        SSMS[SQL Server Management Studio]
        ADS[Azure Data Studio]
        SQLCMD[sqlcmd CLI]
        PS[PowerShell + SqlServer Module]
    end

    subgraph "ネットワーク層"
        TDS[TDS Protocol<br/>TCP/1433]
    end

    subgraph "SQL Server インスタンス層"
        subgraph "SQL Server Instance"
            subgraph "master Database"
                sp_Blitz[sp_Blitz]
                sp_BlitzCache[sp_BlitzCache]
                sp_BlitzFirst[sp_BlitzFirst]
                sp_BlitzIndex[sp_BlitzIndex]
                sp_BlitzLock[sp_BlitzLock]
                sp_BlitzWho[sp_BlitzWho]
                sp_BlitzBackups[sp_BlitzBackups]
                sp_BlitzAnalysis[sp_BlitzAnalysis]
                sp_DatabaseRestore[sp_DatabaseRestore]
                sp_ineachdb[sp_ineachdb]
            end

            subgraph "DBAtools Database (推奨)"
                BlitzFirst[(BlitzFirst)]
                BlitzCache[(BlitzCache)]
                BlitzWho[(BlitzWho)]
                FileStats[(BlitzFirst_FileStats)]
                PerfmonStats[(BlitzFirst_PerfmonStats)]
                WaitStats[(BlitzFirst_WaitStats)]
            end

            subgraph "System DMVs"
                DMV_QueryStats[sys.dm_exec_query_stats]
                DMV_WaitStats[sys.dm_os_wait_stats]
                DMV_FileStats[sys.dm_io_virtual_file_stats]
                DMV_ExecPlans[sys.dm_exec_query_plan]
                DMV_Sessions[sys.dm_exec_sessions]
            end
        end
    end

    SSMS --> TDS
    ADS --> TDS
    SQLCMD --> TDS
    PS --> TDS
    TDS --> sp_Blitz
    TDS --> sp_BlitzCache
    TDS --> sp_BlitzFirst

    sp_Blitz --> DMV_QueryStats
    sp_BlitzCache --> DMV_QueryStats
    sp_BlitzCache --> DMV_ExecPlans
    sp_BlitzFirst --> DMV_WaitStats
    sp_BlitzFirst --> DMV_FileStats
    sp_BlitzWho --> DMV_Sessions

    sp_BlitzFirst --> BlitzFirst
    sp_BlitzFirst --> BlitzCache
    sp_BlitzFirst --> BlitzWho
    sp_BlitzFirst --> FileStats
    sp_BlitzFirst --> PerfmonStats
    sp_BlitzFirst --> WaitStats
```

## CI/CD パイプライン構成図

```mermaid
graph LR
    subgraph "ソースコード管理"
        GH[GitHub Repository]
    end

    subgraph "トリガー"
        Push[Push Event]
        PR[Pull Request]
        Manual[Manual Dispatch]
    end

    subgraph "GitHub Actions"
        subgraph "Matrix Strategy"
            SQL2017[SQL Server 2017]
            SQL2019[SQL Server 2019]
            SQL2022[SQL Server 2022]
        end

        subgraph "Build Steps"
            Checkout[Checkout Code]
            InstallModule[Install SqlServer Module]
            InstallSQL[Install SQL Server<br/>mssqlsuite Action]
            DeployFRK[Deploy FRK Scripts]
            RunTests[Run Pester Tests]
        end
    end

    GH --> Push
    GH --> PR
    GH --> Manual

    Push --> SQL2017
    Push --> SQL2019
    Push --> SQL2022
    PR --> SQL2017
    PR --> SQL2019
    PR --> SQL2022
    Manual --> SQL2017
    Manual --> SQL2019
    Manual --> SQL2022

    SQL2017 --> Checkout
    SQL2019 --> Checkout
    SQL2022 --> Checkout

    Checkout --> InstallModule
    InstallModule --> InstallSQL
    InstallSQL --> DeployFRK
    DeployFRK --> RunTests
```

## サポートプラットフォーム構成図

```mermaid
graph TB
    subgraph "First Responder Kit"
        FRK[SQL Server First Responder Kit<br/>ストアドプロシージャ集]
    end

    subgraph "完全サポート"
        WinSQL[SQL Server on Windows<br/>2017 / 2019 / 2022 / 2025]
        RDS[Amazon RDS SQL Server]
    end

    subgraph "制限付きサポート"
        LinuxSQL[SQL Server on Linux<br/>sp_DatabaseRestore 非対応]
        AzureSQL[Azure SQL DB<br/>Install-Azure.sql 使用<br/>一部機能のみ]
    end

    subgraph "非サポート（Deprecated）"
        SQL2005[SQL Server 2005]
        SQL2000[SQL Server 2000]
    end

    FRK --> WinSQL
    FRK --> RDS
    FRK --> LinuxSQL
    FRK --> AzureSQL
    FRK -.->|Deprecated フォルダ| SQL2005
    FRK -.->|Deprecated フォルダ| SQL2000
```

## 高可用性構成図

```mermaid
graph TB
    subgraph "Always On Availability Group"
        subgraph "Primary Replica"
            PrimaryDB[(master Database<br/>+ FRK Procedures)]
            PrimaryData[(User Databases)]
        end

        subgraph "Secondary Replica 1"
            SecondaryDB1[(master Database<br/>+ FRK Procedures)]
            SecondaryData1[(User Databases<br/>Read-Only)]
        end

        subgraph "Secondary Replica 2"
            SecondaryDB2[(master Database<br/>+ FRK Procedures)]
            SecondaryData2[(User Databases<br/>Read-Only)]
        end
    end

    subgraph "AG Listener"
        Listener[AG Listener<br/>仮想ネットワーク名]
    end

    subgraph "管理クライアント"
        Client[SSMS / Azure Data Studio]
    end

    subgraph "バックアップ履歴集約"
        LinkedServer[Linked Server]
        CentralMSDB[(集中 MSDB<br/>backupset データ)]
    end

    Client --> Listener
    Listener --> PrimaryDB
    Listener --> SecondaryDB1
    Listener --> SecondaryDB2

    PrimaryDB --> PrimaryData
    SecondaryDB1 --> SecondaryData1
    SecondaryDB2 --> SecondaryData2

    PrimaryDB --> LinkedServer
    LinkedServer --> CentralMSDB
```

## 診断データフロー図

```mermaid
sequenceDiagram
    participant Admin as 管理者
    participant Job as SQL Agent Job
    participant FRK as FRK Procedures
    participant DMV as System DMVs
    participant Output as Output Tables
    participant Analysis as sp_BlitzAnalysis

    Note over Admin,Analysis: 定期監視フロー（15分ごと）

    Job->>FRK: EXEC sp_BlitzFirst @OutputTableName=...
    FRK->>DMV: Query sys.dm_os_wait_stats
    FRK->>DMV: Query sys.dm_io_virtual_file_stats
    FRK->>DMV: Query sys.dm_exec_query_stats
    DMV-->>FRK: 統計データ
    FRK->>Output: INSERT INTO BlitzFirst
    FRK->>Output: INSERT INTO BlitzFirst_WaitStats
    FRK->>Output: INSERT INTO BlitzFirst_FileStats
    FRK->>Output: INSERT INTO BlitzFirst_PerfmonStats

    Note over Admin,Analysis: 分析フロー（オンデマンド）

    Admin->>Analysis: EXEC sp_BlitzAnalysis @StartDate=...
    Analysis->>Output: SELECT FROM BlitzFirst
    Analysis->>Output: SELECT FROM BlitzFirst_WaitStats
    Analysis->>Output: SELECT FROM BlitzCache
    Output-->>Analysis: 履歴データ
    Analysis-->>Admin: 分析結果レポート
```

## ネットワークポート構成図

```mermaid
graph LR
    subgraph "クライアント"
        Client[管理クライアント]
    end

    subgraph "ファイアウォール"
        FW[Firewall Rules]
    end

    subgraph "SQL Server"
        SQLPort[TCP/1433<br/>既定インスタンス]
        SQLDyn[TCP/動的ポート<br/>名前付きインスタンス]
        DAC[TCP/1434<br/>専用管理者接続]
        Browser[UDP/1434<br/>SQL Browser]
    end

    Client -->|TDS over TLS| FW
    FW -->|Allow 1433| SQLPort
    FW -->|Allow 動的ポート| SQLDyn
    FW -->|Allow 1434 TCP| DAC
    FW -->|Allow 1434 UDP| Browser
```

## 備考

- 上記の構成図はMermaid形式で記述されており、GitHub、Azure DevOps、各種Markdownビューアで表示可能です
- 実際の構成は環境に応じてカスタマイズが必要です
- 高可用性構成はSQL Server Enterprise Editionが必要な機能を含みます
