Skip to content

Latest commit

 

History

History
468 lines (342 loc) · 13.8 KB

File metadata and controls

468 lines (342 loc) · 13.8 KB

デモシナリオ

このドキュメントでは、Azure Relay デモアプリケーションの説明・実演シナリオを提供します。

デモの目的

このデモを通じて、以下を理解できます:

  1. Azure Relay の価値: VPN なしでオンプレミスとクラウドを安全に接続
  2. ハイブリッドクラウドの実現: 既存のオンプレミス資産を活用
  3. シンプルな実装: 最小限のコードで実現できる
  4. セキュリティ: 多層防御の重要性

デモ環境の構成

[デモ担当者のPC]
    ↓
    ├─ onprem-api (localhost:5000)
    │   └─ プロセス情報を提供
    │
    └─ azure-web (localhost:5001)
        └─ プロセス情報を表示

シナリオ1: ローカル環境での動作確認

所要時間: 5分

目的

Azure Relay なしで、ローカル環境でアプリケーションの基本動作を確認します。

手順

1. 状況説明(1分)

「まず、オンプレミス側の API が何を提供するか見てみましょう。
このプロジェクトは、ローカルマシンのプロセス一覧を取得する API です。」

2. onprem-api の起動(1分)

# ターミナル1
cd C:\works\azure-relay-demo\src\onprem-api
dotnet run

説明ポイント:

  • 「ローカルマシンのポート 5000 で API が起動しました」
  • 「このように、通常の ASP.NET Core Web API です」

3. API の直接呼び出し(1分)

# ターミナル2
# 認証なしでリクエスト
curl http://localhost:5000/api/processes

# 結果: 401 Unauthorized

説明ポイント:

  • 「認証なしではアクセスできません」
  • 「Azure Relay があっても、API レベルの認証は必須です」
# 認証ありでリクエスト
curl -H "X-API-Key: demo-api-key-12345" http://localhost:5000/api/processes

# 結果: プロセス一覧の JSON が返却される

説明ポイント:

  • 「API キーを指定すると、プロセス一覧が取得できます」
  • 「このマシンで実行中のプロセス情報ですね」

4. azure-web の起動(1分)

# ターミナル3
cd C:\works\azure-relay-demo\src\azure-web
dotnet run --urls "http://localhost:5001"

説明ポイント:

  • 「Azure 側のアプリケーションを起動します」
  • 「設定では localhost:5000 を呼び出すようになっています」

5. ブラウザで確認(1分)

ブラウザで http://localhost:5001 を開く

説明ポイント:

  • 「このように、プロセス一覧が見やすく表示されます」
  • 「メモリ使用量の多い順に上位 50 件を表示しています」
  • 「azure-web が onprem-api を呼び出し、結果を表示しています」

まとめ

「現在はローカル環境で直接通信していますが、
本番環境では Azure Relay を経由して安全に接続します。
次に、Azure Relay の仕組みを見てみましょう。」

シナリオ2: Azure Relay の仕組みの説明

所要時間: 5分

目的

Azure Relay がどのように動作するかを説明し、従来の方法との違いを明確にします。

1. 従来の課題(2分)

スライドまたはホワイトボード:

❌ 従来の方法: VPN 接続

┌─────────────┐         ┌─────────────┐
│   Azure     │         │ On-Premises │
│   Web App   │◀───VPN──│   API       │
└─────────────┘         └─────────────┘

課題:
- 複雑なネットワーク設定
- ファイアウォールの設定変更が必要
- セキュリティリスク
- 高コスト
- 管理負荷が大きい

説明ポイント:

  • 「VPN を設定するには、ネットワークエンジニアの協力が必要です」
  • 「ファイアウォールにインバウンドルールを追加する必要があります」
  • 「セキュリティ部門の承認が必要で、時間がかかります」

2. Azure Relay の利点(3分)

スライドまたはホワイトボード:

✅ Azure Relay の方法

┌─────────────┐         ┌─────────────┐         ┌─────────────┐
│   Azure     │         │   Azure     │         │ On-Premises │
│   Web App   │──HTTPS─→│   Relay     │◀──WSS───│   Listener  │
└─────────────┘         └─────────────┘         └─────────────┘
                                                        │
                                                        ↓
                                                  ┌─────────────┐
                                                  │     API     │
                                                  └─────────────┘

利点:
- VPN 不要
- アウトバウンド接続のみ(ポート 443)
- ファイアウォール設定変更不要
- マネージドサービス
- 従量課金で低コスト

説明ポイント:

  • 「オンプレミス側からクラウドに接続します(アウトバウンド)」
  • 「インバウンドのファイアウォールルールは不要です」
  • 「HTTPS (443) のみで、既存のファイアウォール設定で動作します」
  • 「Azure がサービスを管理してくれるので、運用負荷が低いです」

通信フローの説明

1. [Listener] Azure Relay に接続を確立(WebSocket)
   ↓
2. [Client] Azure Relay にリクエストを送信
   ↓
3. [Relay] 接続中の Listener にリクエストを転送
   ↓
4. [Listener] ローカル API にリクエストを転送
   ↓
5. [API] レスポンスを生成
   ↓
6. [Listener] レスポンスを Relay 経由で返却

説明ポイント:

  • 「Listener が常に接続を維持しています」
  • 「インバウンドの接続は一切発生しません」
  • 「すべての通信は TLS で暗号化されています」

シナリオ3: セキュリティの説明

所要時間: 3分

目的

多層防御の重要性を説明します。

多層防御の説明

Layer 1: Azure AD 認証(オプション)
    ↓
Layer 2: Azure Relay 認証(SAS トークン)
    ↓
Layer 3: API キー認証

説明ポイント:

  • 「Azure Relay があるからといって、API の認証を省略してはいけません」
  • 「Relay は通信経路のセキュリティ、API は認可を担当します」
  • 「責任の分離が重要です」

デモ: 認証の重要性

# API キーなしでリクエスト
curl http://localhost:5000/api/processes

# 結果: 401 Unauthorized

説明ポイント:

  • 「このように、API レベルでの認証は必須です」
  • 「Relay を通過しても、API が拒否します」

シナリオ4: スケーラビリティの説明

所要時間: 3分

目的

Azure Relay の高可用性とスケーラビリティを説明します。

複数 Listener の接続

スライドまたはホワイトボード:

                    ┌──────────────┐
                 ┌─→│  Listener 1  │─→ API Server 1
                 │  └──────────────┘
                 │
┌──────────────┐ │  ┌──────────────┐
│ Azure Relay  │─┼─→│  Listener 2  │─→ API Server 2
└──────────────┘ │  └──────────────┘
                 │
                 │  ┌──────────────┐
                 └─→│  Listener 3  │─→ API Server 3
                    └──────────────┘

特徴:
- 自動負荷分散(ラウンドロビン)
- 高可用性(フェイルオーバー)
- 水平スケール

説明ポイント:

  • 「複数の Listener を接続するだけで、自動的に負荷分散されます」
  • 「1つの Listener がダウンしても、他が処理を継続します」
  • 「アプリケーション側の変更は不要です」

シナリオ5: ユースケースの紹介

所要時間: 5分

目的

Azure Relay の実践的なユースケースを紹介します。

ユースケース1: レガシーシステムとの統合

【課題】
- 20年前のメインフレームシステム
- クラウド移行が困難
- でも、Web アプリから呼び出したい

【解決策】
Azure Relay でブリッジを構築
- メインフレームは変更不要
- Listener だけをデプロイ
- Web アプリから安全にアクセス

ユースケース2: IoT デバイスの管理

【課題】
- 工場内の IoT デバイスにアクセスしたい
- デバイスはインターネットに公開できない
- リアルタイムでデータを取得したい

【解決策】
Azure Relay で安全に接続
- デバイス側から接続(アウトバウンド)
- Azure からコマンド送信可能
- セキュアな双方向通信

ユースケース3: ハイブリッドクラウド

【課題】
- 一部のシステムだけクラウド化
- オンプレミスとの連携が必要
- 段階的な移行を進めたい

【解決策】
Azure Relay で共存
- クラウドとオンプレミスを接続
- 段階的な移行が可能
- 既存システムの変更を最小化

シナリオ6: デモのまとめ

所要時間: 2分

まとめポイント

1. シンプルさ

「このデモで見たように、Azure Relay は非常にシンプルです。
- VPN 設定不要
- ファイアウォール変更不要
- 既存の API に最小限の変更
」

2. セキュリティ

「セキュリティも確保されています。
- TLS 暗号化
- SAS 認証
- API レベルの認証
- 多層防御
」

3. スケーラビリティ

「本番環境でも安心です。
- 自動負荷分散
- 高可用性
- 水平スケール
- マネージドサービス
」

4. コスト効率

「コストも効率的です。
- 従量課金
- 無料枠あり
- VPN より低コスト
- 管理負荷が少ない
」

Q&A 想定

Q1: レイテンシはどれくらいですか?

A: 「通常の HTTP 通信に比べて、50-100ms 程度のオーバーヘッドがあります。 リアルタイム性が重要な場合は検討が必要ですが、 通常の業務アプリケーションであれば十分な性能です。」

Q2: データサイズの制限はありますか?

A: 「HTTP モードでは 64KB、WebSocket モードでは 256KB までです。 大きなデータを扱う場合は、分割送信や Azure Blob Storage を経由する方法を検討してください。」

Q3: 料金はいくらですか?

A: 「Standard プランで月額約 10 ドル、 加えてメッセージ数に応じた従量課金です。 無料枠が 500 万メッセージ/月あるので、 小規模な利用であれば基本料金のみで運用できます。」

Q4: VPN と比較してどうですか?

A: 「VPN は専用線的な接続で、すべてのトラフィックが通ります。 Azure Relay は特定のアプリケーション間の通信に特化しています。 用途に応じて使い分けることをお勧めします。」

Q5: 障害時はどうなりますか?

A: 「Azure Relay は SLA 99.9% で高可用性が保証されています。 また、複数の Listener を接続しておくことで、 オンプレミス側の障害にも対応できます。」


デモの準備チェックリスト

事前準備

  • .NET 10 SDK がインストールされている
  • プロジェクトがビルドできる
  • ポート 5000, 5001 が空いている
  • インターネット接続がある(Azure 説明用)
  • ブラウザが用意されている

デモ当日

  • ターミナルを3つ開いておく
  • プロジェクトのパスに移動しておく
  • デモ用のスライドを準備
  • タイムキーパーを設定

トラブルシューティング

  • ポート競合時の対処法を把握
  • ビルドエラー時の対処法を把握
  • バックアップの計画(動画など)

参考タイムテーブル

0:00 - 0:05  シナリオ1: ローカル環境での動作確認
0:05 - 0:10  シナリオ2: Azure Relay の仕組み説明
0:10 - 0:13  シナリオ3: セキュリティの説明
0:13 - 0:16  シナリオ4: スケーラビリティの説明
0:16 - 0:21  シナリオ5: ユースケースの紹介
0:21 - 0:23  シナリオ6: まとめ
0:23 - 0:30  Q&A

合計: 30分

次のステップ

デモを実施した後、参加者に以下を案内してください:

  1. GitHub リポジトリ
  2. セットアップガイドで実際に試す
  3. Azure Relay ドキュメントで詳細を学ぶ
  4. 自社のユースケースを検討する