deploying-on-azure について
Azure アプリケーションを設計・実装する開発者やアーキテクト向けのスキルです。Well-Architected Framework に沿って、サービス選定、セキュリティ、コスト、ガバナンス、IaC の設計パターンを扱います。
主な機能
- 01Azure サービス選定ガイド
- 02コンピューティング・ストレージ・DB のパターン
- 03セキュリティと ID 管理の指針
- 04コスト最適化とガバナンス
- 05Bicep と Terraform の例
活用シーン
- 01Azure アプリの構成を計画
- 02コンピューティングやコンテナサービスを比較
- 03ストレージとデータベースを設計
- 04ネットワークセキュリティとコスト方針を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ancoleman/ ai-design-components --skill deploying-on-azureインストール後、Claude Code で/deploying-on-azureを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
outputs.yamlexamples/bicep/container-apps/main.bicepexamples/sdk/python/azure-openai-rag.pyreferences/ai-integration.mdcompute-services.mddatabase-selection.mdgovernance-compliance.mdidentity-access.mdmessaging-patterns.mdnetworking-architecture.mdsecurity-architecture.mdstorage-patterns.mdwell-architected.md詳細
Azure パターン
Microsoft の Well-Architected Framework と、サービス選定、コスト最適化、セキュリティに関するベストプラクティスに沿って、Azure クラウドアーキテクチャを設計、実装します。
使用する場面
次の場合にこのスキルを使用します。
- Azure クラウド向けの新しいアプリケーションを設計する
- Azure のコンピューティングサービス(Container Apps、AKS、Functions、App Service)を選定する
- ストレージソリューション(Blob Storage、Files、Cosmos DB)を設計する
- Azure OpenAI または Cognitive Services を統合する
- メッセージングパターン(Service Bus、Event Grid、Event Hubs)を実装する
- Private Endpoints を使用したセキュアなネットワークを設計する
- Azure のガバナンスおよびコンプライアンスポリシーを適用する
- Azure のコストとパフォーマンスを最適化する
主な概念
サービス選定の考え方
Azure には 200 以上のサービスがあります。次の点を基準に選定してください。
- マネージドサービスか IaaS か - 運用負荷を軽減できるフルマネージドサービスを優先します
- コストモデル - 従量課金か専用キャパシティか
- 統合要件 - Microsoft 365、Active Directory、ハイブリッドクラウド
- 制御性かシンプルさか - 制御性が高いほど運用負荷も増します
Azure Well-Architected Framework(5 つの柱)
| 柱 | 重点分野 | 主なプラクティス |
|---|---|---|
| コスト最適化 | 予算内で価値を最大化する | Reserved Instances、自動スケーリング、ライフサイクル管理 |
| オペレーショナルエクセレンス | 信頼性の高いシステムを運用する | Azure Policy、自動化、監視 |
| パフォーマンス効率 | 需要に応じてスケールする | 自動スケーリング、キャッシュ、CDN |
| 信頼性 | 障害から復旧する | Availability Zones、マルチリージョン、バックアップ |
| セキュリティ | データと資産を保護する | Managed Identity、Private Endpoints、Key Vault |
各柱の実装パターンの詳細については、references/well-architected.md を参照してください。
コンピューティングサービスの選定
判断フレームワーク
Container-based workload?
YES → Need Kubernetes control plane?
YES → Azure Kubernetes Service (AKS)
NO → Azure Container Apps (recommended)
NO → Event-driven function?
YES → Azure Functions
NO → Web application?
YES → Azure App Service
NO → Legacy/specialized → Virtual Machines
サービスの比較
| サービス | 最適な用途 | 料金モデル | 運用負荷 |
|---|---|---|---|
| Container Apps | マイクロサービス、API、バックグラウンドジョブ | 従量課金または専用 | 低 |
| AKS | 複雑な K8s ワークロード、サービスメッシュ | ノードベース | 高 |
| Functions | イベント駆動型、短時間のタスク(10 分未満) | 従量課金または Premium | 低 |
| App Service | Web アプリ、シンプルな API | 専用プラン | 低 |
| Virtual Machines | レガシーアプリ、特殊なソフトウェア | VM ベース | 高 |
推奨事項: コンテナー化されたワークロードの 80% では、まず Azure Container Apps を使用してください(AKS よりもシンプルで低コストです)。
Bicep および Terraform の例を含む詳細な比較については、references/compute-services.md を参照してください。
ストレージアーキテクチャ
Blob Storage のティア選定
| ティア | アクセスパターン | コスト/GB/月 | 最小保存期間 |
|---|---|---|---|
| Hot | 毎日アクセス | $0.018 | なし |
| Cool | 1 か月あたり 1 回未満のアクセス | $0.010 | 30 日 |
| Cold | 90 日未満のアクセス | $0.0045 | 90 日 |
| Archive | まれにアクセス | $0.00099 | 180 日 |
パターン: ライフサイクル管理ポリシーを使用して、データを低コストのティアへ自動的に移動します。
ストレージサービスの選定
File system interface required?
YES → Protocol?
SMB → Azure Files (or NetApp Files for high performance)
NFS → Azure Files (NFS 4.1)
NO → Object storage → Blob Storage
Block storage → Managed Disks (Standard/Premium SSD/Ultra)
Analytics → Data Lake Storage Gen2
ライフサイクルポリシー、冗長性オプション、パフォーマンスチューニングについては、references/storage-patterns.md を参照してください。
データベースサービスの選定
判断フレームワーク
Relational data?
YES → SQL Server compatible?
YES → Need VM-level access?
YES → SQL Managed Instance
NO → Azure SQL Database
NO → Open source?
PostgreSQL → PostgreSQL Flexible Server
MySQL → MySQL Flexible Server
NO → Data model?
Document/JSON → Cosmos DB (NoSQL API)
Graph → Cosmos DB (Gremlin API)
Wide-column → Cosmos DB (Cassandra API)
Key-value cache → Azure Cache for Redis
Time-series → Azure Data Explorer
Cosmos DB の整合性レベル
| レベル | ユースケース | レイテンシ | スループット |
|---|---|---|---|
| Strong | 金融取引、在庫管理 | 最高 | 最低 |
| Bounded Staleness | 許容可能な遅延を伴うリアルタイムランキング | 高 | 低 |
| Session | ショッピングカート、ユーザーセッション(デフォルト) | 中 | 中 |
| Consistent Prefix | ソーシャルフィード、IoT テレメトリ | 低 | 高 |
| Eventual | 分析、ML トレーニングデータ | 最低 | 最高 |
キャパシティプランニング、インデックス戦略、移行パターンについては、references/database-selection.md を参照してください。
AI と機械学習の統合
Azure OpenAI Service
ユースケース:
- チャットボットと会話型 AI(GPT-4)
- コンテンツの生成と要約
- エンベディングを使ったセマンティック検索(RAG パターン)
- コードの生成と補完
- 構造化出力のための関数呼び出し
主な利点:
- エンタープライズレベルのデータプライバシー(顧客データを使ったモデルのトレーニングなし)
- データ所在地の要件に対応するリージョン別のデプロイ
- Microsoft のエンタープライズ SLA
- 組み込みのコンテンツフィルタリング
統合パターン:
from openai import AzureOpenAI
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
client = AzureOpenAI(
azure_endpoint="https://myopenai.openai.azure.com",
azure_ad_token_provider=token_provider,
api_version="2024-02-15-preview"
)
response = client.chat.completions.create(
model="gpt-4-turbo",
messages=[{"role": "user", "content": "Hello!"}]
)
その他の AI サービス
| サービス | 目的 | 一般的なユースケース |
|---|---|---|
| Cognitive Services | 事前構築済みの AI モデル | ビジョン、音声、言語、意思決定 |
| Azure Machine Learning | カスタムモデルのトレーニング | MLOps、モデルのデプロイ、特徴量エンジニアリング |
| Azure AI Search | セマンティック検索エンジン | RAG パターン、ドキュメント検索 |
RAG アーキテクチャ、関数呼び出し、ファインチューニングのパターンについては、references/ai-integration.md を参照してください。
メッセージングと統合
サービス選択マトリックス
| サービス | パターン | メッセージサイズ | 順序保証 | トランザクション | 最適な用途 |
|---|---|---|---|---|---|
| Service Bus | キュー/トピック | 256 KB - 100 MB | はい(セッション) | はい | エンタープライズメッセージング |
| Event Grid | パブリッシュ/サブスクライブ | 1 MB | いいえ | いいえ | イベント駆動型アーキテクチャ |
| Event Hubs | ストリーミング | 1 MB | はい(パーティション) | いいえ | ビッグデータの取り込み、テレメトリ |
| Storage Queues | シンプルなキュー | 64 KB | いいえ | いいえ | 非同期処理、毎秒 50 万件未満のメッセージ |
どのサービスを使うべきか:
- Service Bus: トランザクションを伴う信頼性の高いメッセージング(例:注文処理)
- Event Grid: Azure リソースのイベントへの対応(例:Blob の作成、VM の停止)
- Event Hubs: 高スループットのストリーミング(例:IoT テレメトリ、アプリケーションログ)
実装例、再試行ポリシー、デッドレター処理については、references/messaging-patterns.md を参照してください。
ネットワークアーキテクチャ
プライベートエンドポイントとサービスエンドポイントの比較
| 項目 | プライベートエンドポイント | サービスエンドポイント |
|---|---|---|
| セキュリティモデル | VNet 内のプライベート IP | パブリックエンドポイントへの最適化されたルート |
| データ流出の防止 | はい(ネットワーク分離) | 限定的(サービスのファイアウォールのみ) |
| コスト | エンドポイントあたり約 7.30 ドル/月 | 無料 |
| 推奨用途 | 本番ワークロード | 開発/テスト環境 |
ベストプラクティス: 本番環境のすべての PaaS サービスにプライベートエンドポイントを使用してください(パブリックエンドポイントの使用はアンチパターンと見なしてください)。
ハブアンドスポークトポロジ
コンポーネント:
- ハブ VNet: 共有サービス(Azure Firewall、VPN Gateway、プライベートエンドポイント)
- スポーク VNet: アプリケーションワークロード(環境またはチームごとに分離)
- VNet ピアリング: ハブとスポーク間の低レイテンシ接続
利点:
- セキュリティの一元化(ファイアウォール、DNS)
- コストの最適化(エグレスの共有)
- ガバナンスの簡素化
ハブアンドスポークの Bicep テンプレート、NSG パターン、DNS 構成については、references/networking-architecture.md を参照してください。
ID とアクセス管理
マネージド ID パターン
以下の代わりに、常にマネージド ID を使用してください:
- コード内の接続文字列
- ストレージアカウントキー
- サービスプリンシパルの認証情報
- API キー
システム割り当てとユーザー割り当ての比較:
| 種類 | ライフサイクル | ユースケース |
|---|---|---|
| システム割り当て | リソースにひも付け | 単一のリソースにアクセスが必要 |
| ユーザー割り当て | 独立 | 複数のリソースで ID を共有 |
フローの例:
- Container App でマネージド ID を有効にする
- ID に Key Vault へのアクセス権を付与する(RBAC またはアクセス ポリシー)
- アプリケーションが自動的に認証する(認証情報は不要)
from azure.identity import DefaultAzureCredential
# Works automatically with Managed Identity
credential = DefaultAzureCredential()
keyvault_client = SecretClient(vault_url="...", credential=credential)
Azure RBAC のベストプラクティス
- 可能な場合は組み込みロール(Owner、Contributor、Reader)を使用します
- 最小権限の原則を適用します
- ロールはサブスクリプションではなく、リソースグループのレベルで割り当てます
- ユーザー管理には Azure AD グループを使用します
- ロールの割り当てを定期的に監査します
Entra ID の統合、条件付きアクセス ポリシー、B2C のパターンについては、references/identity-access.md を参照してください。
ガバナンスとコンプライアンス
ガードレールとしての Azure Policy
一般的なポリシーパターン:
- すべてのリソースにタグ(Environment、Owner、CostCenter)を必須にします
- 許可する Azure リージョンを制限します
- TLS 1.2 以上を必須にします
- ストレージアカウントにプライベートエンドポイントを必須にします
- VM でのパブリック IP アドレスを禁止します
ポリシーの効果:
- Deny: 非準拠のリソース作成をブロックします
- Audit: 非準拠をログに記録しますが、作成は許可します
- DeployIfNotExists: 不足している構成を自動的に修正します
- Modify: デプロイ時にリソースのプロパティを変更します
コスト管理
最適化戦略:
| パターン | 削減率 | ユースケース |
|---|---|---|
| Reserved Instances(1-year) | 40-50% | 安定したワークロード(データベース、VM) |
| Reserved Instances(3-year) | 60-70% | 長期的なコミットメント |
| Spot VMs | 最大90% | フォールトトレラントなバッチ処理 |
| 自動シャットダウン | 変動 | 開発/テスト用リソース(営業時間外) |
| ストレージのライフサイクルポリシー | 50-90% | Cool/Archive ティアへの移行 |
モニタリング:
- Azure Cost Management で予算とアラートを設定します
- Azure Advisor のコストに関する推奨事項を毎週確認します
- コスト配賦のためにリソースにタグを付けます
- Power BI ダッシュボードには FinOps Toolkit を使用します
Azure Landing Zones、Policy の定義、Blueprints については、references/governance-compliance.md を参照してください。
Infrastructure as Code
ツールの選択
| ツール | 最適な用途 | Azure との統合 | マルチクラウド |
|---|---|---|---|
| Bicep | Azure ネイティブのプロジェクト | 優れている(公式) | いいえ |
| Terraform | マルチクラウド環境 | 良好(azurerm プロバイダー) | はい |
| Pulumi | 開発者優先のアプローチ | 良好(ネイティブ SDK) | はい |
| Azure CLI | スクリプトと自動化 | 優れている | いいえ |
推奨事項:
- Azure のみのインフラストラクチャには Bicep を使用します(Azure との統合が最も優れており、ネイティブの型安全性を備えています)
- マルチクラウド環境、または既存の Terraform 利用組織では Terraform を使用します
- クイックスクリプトや CI/CD の自動化には Azure CLI を使用します
Bicep のベストプラクティス
- 環境固有の値にはパラメーターファイルを使用します
- テスト済みのパターンには Azure Verified Modules(AVM)を活用します
- リソースのライフサイクル(ネットワーク、データ、コンピューティング)ごとに整理します
- シンボリック名を使用します(文字列補間は使用しません)
- CI/CD でリンティングと検証を有効にします
Bicep と Terraform の例については、examples/bicep/ と examples/terraform/ ディレクトリを参照してください。
セキュリティのベストプラクティス
必須のセキュリティ制御
| 制御 | 実装 | 優先度 |
|---|---|---|
| マネージド ID | すべてのコンピューティングリソースで有効にします | 重大 |
| プライベートエンドポイント | 本番環境のすべての PaaS サービス | 重大 |
| Key Vault | シークレット、キー、証明書を保存します | 重大 |
| ネットワークセグメンテーション | NSG、アプリケーションセキュリティグループ | 高 |
| Microsoft Defender | すべてのリソースタイプで有効にします | 高 |
| Azure Policy | 予防的制御 | 高 |
| Just-In-Time Access | VM と特権アクセス | 中 |
多層防御のレイヤー
- ネットワーク: プライベートエンドポイント、NSG、Azure Firewall
- ID: Entra ID、マネージド ID、条件付きアクセス
- アプリケーション: Web Application Firewall、API Management
- データ: 保存データの暗号化、転送中の暗号化(TLS 1.2 以上)
- モニタリング: Microsoft Defender、Azure Monitor、Sentinel
references/security-architecture.md を参照してください(security-hardening および auth-security スキルも参照)。
コストの見積もり
料金に関する考慮事項
コンピューティング:
- Container Apps:約$60/月(1 vCPU、2GB RAM、24時間365日稼働)
- AKS:約$400/月(3ノードのD4s_v5クラスター)
- App Service P1v3:約$145/月(2 vCPU、8GB RAM)
- Functions Consumption:100万回の実行あたり約$0.20
ストレージ:
- Blob Hot:$0.018/GB/月
- Blob Cool:$0.010/GB/月
- Blob Archive:$0.00099/GB/月
- Managed Disks Premium SSD:$0.15/GB/月
データベース:
- Azure SQL Database(2 vCore):約$280/月
- Cosmos DB Serverless:消費したRUに応じた従量課金
- PostgreSQL Flexible(2 vCore):約$125/月
Azure 料金計算ツールを使用してください: https://azure.microsoft.com/pricing/calculator/
クイックリファレンス表
コンピューティングサービスの選択マトリックス
| 必要なもの... | 選択するサービス |
|---|---|
| Kubernetes の機能(CRD、オペレーター) | Azure Kubernetes Service |
| K8s の複雑さを伴わないマイクロサービス | Azure Container Apps |
| イベント駆動型の関数(10分未満) | Azure Functions |
| 従来型の Web アプリ(Node、.NET、Python) | Azure App Service |
| バッチ処理、HPC | Azure Batch または VM Scale Sets |
| レガシーアプリケーションの移行 | Virtual Machines |
ストレージサービスの選択マトリックス
| 必要なもの... | 選択するサービス |
|---|---|
| SMB ファイル共有 | Azure Files |
| NFS ファイル共有 | Azure Files(NFS 4.1) |
| オブジェクトストレージ(画像、バックアップ) | Blob Storage |
| 高パフォーマンスのファイルストレージ | Azure NetApp Files |
| VM 用のブロックストレージ | Managed Disks |
| ビッグデータ分析 | Data Lake Storage Gen2 |
データベースサービスの選択マトリックス
| 必要なもの... | 選択するサービス |
|---|---|
| SQL Server の機能(T-SQL、SQL Agent) | Azure SQL Database または Managed Instance |
| PostgreSQL | PostgreSQL Flexible Server |
| MySQL | MySQL Flexible Server |
| グローバル分散、マルチモデル | Cosmos DB |
| インメモリキャッシュ | Azure Cache for Redis |
| グラフデータベース | Cosmos DB(Gremlin API) |
| 時系列データ | Azure Data Explorer |
他のスキルとの連携
- infrastructure-as-code: Bicep または Terraform を使用した Azure パターンの実装
- kubernetes-operations: AKS 固有の構成と運用
- deploying-applications: Container Apps と App Service のデプロイ
- building-ci-pipelines: Azure DevOps と GitHub Actions の連携
- auth-security: Entra ID の認証および認可パターン
- observability: Azure Monitor と Application Insights
- ai-chat: チャットアプリケーション向け Azure OpenAI Service
- databases-nosql: Cosmos DB の実装詳細
- secret-management: Azure Key Vault の連携パターン
参考ドキュメント
詳しい実装ガイダンスについては、以下を参照してください。
references/compute-services.md- Bicep/Terraform を使用した Container Apps、AKS、Functions、App Servicereferences/storage-patterns.md- Blob Storage、Files、Disks、ライフサイクル管理references/database-selection.md- SQL Database、Cosmos DB、PostgreSQL のパターンreferences/ai-integration.md- Azure OpenAI、RAG アーキテクチャ、関数呼び出しreferences/messaging-patterns.md- Service Bus、Event Grid、Event Hubs の例references/networking-architecture.md- ハブ&スポーク、Private Endpoints、DNS の構成references/identity-access.md- Entra ID、Managed Identity、RBACreferences/governance-compliance.md- Azure Policy、Landing Zones、コスト最適化references/well-architected.md- 5つの柱の実装ガイド
コード例
動作する例は以下で確認できます。
examples/bicep/- インフラストラクチャテンプレート(Container Apps、AKS、ネットワーク、データベース)examples/terraform/- マルチクラウド IaC の例examples/sdk/python/- Python SDK の連携(OpenAI、Managed Identity、メッセージング)examples/sdk/typescript/- TypeScript SDK の例
Additional Resources
- Azure Architecture Center: https://learn.microsoft.com/azure/architecture/
- Azure Well-Architected Framework: https://learn.microsoft.com/azure/well-architected/
- Azure Verified Modules: https://aka.ms/avm
- Azure Charts (Service Comparison): https://azurecharts.com/
- Azure Updates: https://azure.microsoft.com/updates/