SyncCoordinatorDocumentation

DOCUMENTATION / GETTING STARTED

Getting Started

まずデモを起動し、用意されている同期設定を確認・変更します。管理画面の操作と同期の流れをつかんだあと、実際の業務DBを使う構成へ進みます。

QUICK START

デモを起動する

デモでは、Customer Portal、CRM、Field Serviceと3種類の業務DBをまとめて起動します。実際の同期処理と同じ経路を使うため、製品の動きを一通り確認できます。

この手順に必要なもの
  • Windows 11(win-x64)
  • .NET SDK 10.0.301
  • Aspire CLI 13.4.4
  • Docker Desktop
  • PowerShellまたはターミナル

Visual StudioとVS Codeは必須ではありません。

リポジトリのルートで、次のコマンドを実行します。

dotnet tool restore
dotnet restore SyncCoordinator.sln
dotnet build SyncCoordinator.sln --no-restore
dotnet test SyncCoordinator.sln --no-build
aspire run --apphost src/SyncCoordinator.AppHost/SyncCoordinator.AppHost.csproj
起動後に確認できるもの

Aspire Dashboardに、SyncCoordinator Web、Worker、3つのサンプル業務アプリと業務DBが表示されます。

デモでは、業務システムとDB接続、無効な同期ルール、テーブル/列マッピングまで用意されています。同期用テーブルとTriggerはまだ業務DBへ反映されていません。

FIRST LOGIN

管理者を設定してログインする

初回起動時は、Webサーバー自身のブラウザーから管理者パスワードを登録します。初期設定画面は外部PCから開けません。

  1. 1
    初期設定画面を開く

    Webサーバー上でhttp://localhost:<Webのポート>/account/setupを開きます。

  2. 2
    パスワードを登録する

    12文字以上128文字以下のパスワードを設定します。ユーザー名はadmin固定です。

  3. 3
    ログインする

    設定したパスワードでログインすると、ダッシュボードが表示されます。

初期設定とパスワード再設定は、接続元とアクセス先の両方がlocalhostまたはループバックIPの場合だけ利用できます。

DEMO CONFIGURATION

デモの設定を確認・変更する

デモの設定は管理DBへ初期投入されています。まず内容を確認してください。設定を変更するときも、実環境で新しく作るときも同じ管理画面を使います。

SYSTEMS

システムとDB接続

同期元・同期先のDB種別、接続情報、有効状態を管理します。接続先を変えたら、保存前に接続テストを行います。

デモ
3システムを登録済み

RULES

同期ルール

送信元と送信先、片方向・双方向、競合時の扱いを決めます。デモのルールはDB反映前なので無効です。

デモ
ルールを作成済み・無効

MAPPINGS

テーブルと列の対応

両側のテーブル、キー列、同期列を対応付けます。値変換、固定値、削除方法もここで設定します。

デモ
マッピング設定済み
システム管理画面。同期対象システムとDB接続情報を確認・変更
システムDB接続情報と有効状態を管理します。
同期ルール管理画面。送信元、送信先、同期方向を確認・変更
同期ルール同期方向と競合時の扱いを決めます。
テーブルマッピング画面。同期するテーブル、列、キーを確認・変更
テーブルマッピングテーブル、列、キー、値変換を設定します。

DATABASE SETUP

業務DBへ反映して有効化する

デモでもこの操作は必要です。各ルールの「DBへ反映」でSQLを確認し、同期用オブジェクトを両側の業務DBへ反映します。

  1. 1
    変更内容とSQLを確認する

    送信元・送信先それぞれの作成対象と実行SQLを開きます。

  2. 2
    業務DBへ反映する

    デモでは管理画面から反映できます。本番ではDBAがSQLを確認して実行する方法を推奨します。

  3. 3
    すべてのDBを確認する

    補助テーブルとTriggerの存在、定義が一致していることを管理画面から検証します。

  4. 4
    ルールを有効にする

    両側のDBが検証済みになったら、基本設定から同期対象にします。

データベース反映画面。生成SQLの確認、反映、DB構成の検証を実行
データベース反映

追加するのは変更検知と重複防止に必要な補助テーブルとTriggerです。既存の業務アプリケーション、業務テーブル、業務列は変更しません。

VERIFY THE DEMO

データを変更して同期を確認する

ルールを有効にしたら、Customer Portalなど送信元のサンプルデータを1件変更します。初期データはTrigger反映前に作られているため、更新して最初の同期を開始します。

同期先を確認

対応付けた列と値が、同期先のアプリとDBへ反映されたことを確認します。

処理状況を確認

「処理状況」でQueueの読取位置、処理結果、試行回数を確認します。

競合を試す

必要に応じて両側の同じ項目を変更し、設定した競合ポリシーの結果を確認します。

USE WITH EXISTING SYSTEMS

実際の業務DBで使う

デモ用DBを本番へ移すのではなく、CoreモードでWebとWorkerを起動し、実際の業務システムを管理画面から登録します。管理画面の操作とDB反映の流れは、デモで行った手順と同じです。

1. Coordinator管理DBを用意する

管理DBはSyncCoordinatorの設定、処理状態、競合履歴を保存するSQL Serverです。業務データを保存するDBとは別です。

EXTERNAL SQL SERVER

用意済みのSQL Serverを使う

CoordinatorDatabase:UseContainerfalseにし、管理DBの接続文字列を設定します。Dockerは不要です。

DOCKER

管理DBをコンテナで起動する

CoordinatorDatabase:UseContainertrueにします。AspireがSQL Serverコンテナと接続文字列を管理します。

2. AppHostをCoreモードにする

src/SyncCoordinator.AppHost/appsettings.Development.jsonへ次の設定を反映します。以下は外部SQL Serverを使う例です。

{
  "RunMode": "Core",
  "CoordinatorDatabase": {
    "UseContainer": false
  }
}

3. 管理DBの接続文字列を登録する

外部SQL Serverを使う場合は、ConnectionStrings:coordinator-dbをAppHostのUser Secretsへ登録します。パスワードを設定ファイルへ書かないでください。

dotnet user-secrets set --project src/SyncCoordinator.AppHost "ConnectionStrings:coordinator-db" "Server=localhost,1433;Database=SyncCoordinator;User ID=your-user;Password=your-password;Encrypt=True;TrustServerCertificate=True;MultipleActiveResultSets=true"

管理DBをコンテナで起動する場合、この接続文字列の登録は不要です。

4. 起動して実際の業務DBを登録する

aspire run --apphost src/SyncCoordinator.AppHost/SyncCoordinator.AppHost.csproj

Coreモードにはデモの初期設定がありません。初回ログイン後、「システム」で業務DBを登録し、デモで確認した手順と同じようにルール、マッピング、DB反映を進めます。

本番配備で必要になる管理DBマイグレーション

開発環境ではWebが起動時に管理DBを更新します。本番環境では自動更新が無効なので、配備前に最新マイグレーションを適用します。

対象の管理DBはSYNC_COORDINATOR_DESIGN_CONNECTIONで明示します。AppHostのUser Secretsはこのコマンドから参照されません。

$env:SYNC_COORDINATOR_DESIGN_CONNECTION = "Server=localhost,1433;Database=SyncCoordinator;User ID=your-user;Password=your-password;Encrypt=True;TrustServerCertificate=True;MultipleActiveResultSets=true"
dotnet tool restore
dotnet tool run dotnet-ef database update --project src/SyncCoordinator.Infrastructure/SyncCoordinator.Infrastructure.csproj --startup-project src/SyncCoordinator.Worker/SyncCoordinator.Worker.csproj
Remove-Item Env:SYNC_COORDINATOR_DESIGN_CONNECTION

本番運用前の確認

初期データを揃える

SyncCoordinatorは配備後の変更を同期します。既存データは同期開始前に別の手段で揃えます。

HTTPSを使用する

管理画面と認証Cookieを保護するため、本番ではHTTPSで公開します。

暗号鍵を共有・保護する

WebとWorkerを分ける場合は、両方が使えるKey Ringを用意し、アクセス制御とバックアップを行います。

DB権限を分ける

Workerの通常権限と、同期用オブジェクトを作成するDDL権限を分けます。

NEXT

次に読む

Workflow