Skip to content

Terraform による Azure インフラ管理 - 使用予定サービスと検討事項 #5

@t0waxx

Description

@t0waxx

概要

Azure をメインとしたインフラ環境を構築するにあたり、以下のサービスを Terraform / Bicep で管理することを検討しています。
この Issue では、導入予定のサービス一覧Terraform での管理戦略考慮すべき点 を整理し、構成案を議論します。


1. 使用検討中の Azure サービス

(1) コンテンツ配信 & API ルーティング

サービス名 目的 備考
Azure CDN 静的ソースのキャッシュ 高速配信用
Azure Front Door API のルーティング & 負荷分散 グローバルなトラフィック管理

(2) 認証・ユーザー管理

サービス名 目的 備考
Azure AD B2C ユーザー認証 外部 ID 連携対応

(3) API & サーバーレス

サービス名 目的 備考
Azure Functions サーバーレス API スケーラブルな処理
Azure API Management API ゲートウェイ & Rate Limiting セキュリティ制御

(4) 軽量 API & コスト削減

サービス名 目的 備考
Cloudflare Workers 軽量 API コスト削減のため一部処理をこちらに

(5) イベント駆動

サービス名 目的 備考
Azure Event Grid イベント処理 トリガー駆動の自動処理

(6) データ管理

サービス名 目的 備考
Azure Database for PostgreSQL 位置情報 & ユーザーデータ管理 フルマネージド DB
Azure Cosmos DB セッション管理 NoSQL ベース
Azure Blob Storage 画像・ログデータ保存 S3 互換のストレージ
Azure Cache for Redis データキャッシュ 高速データ取得

(7) 位置情報・マップ

サービス名 目的 備考
Azure Maps 位置情報 & Geo-fencing 後々のセキュリティ考慮で利用を検討

(8) 通知

サービス名 目的 備考
Azure Notification Hubs プッシュ通知 多デバイス対応

2. CI/CD・監視・インフラ管理

サービス名 目的
Azure DevOps CI/CD パイプライン管理
Azure Monitor & Application Insights API のパフォーマンス監視
Terraform / Bicep インフラ管理

3. Web 版の展開

サービス名 目的
Azure Static Web Apps Flutter Web のホスティング

4. Terraform によるインフラ管理

(1) 主要な Terraform モジュール

Terraform でインフラを管理する際、以下のモジュールを作成・利用予定。

  • network.tfVNET, サブネット, NSG
  • storage.tfBlob Storage, Redis
  • database.tfPostgreSQL, Cosmos DB
  • cdn.tfAzure CDN 設定
  • frontend.tfStatic Web Apps
  • backend.tfAzure Functions, API Management
  • eventing.tfEvent Grid
  • security.tfAzure AD B2C, Firewall 設定

管理単位:

リソース Terraform State
ネットワーク terraform/network/
データベース terraform/database/
API / サーバーレス terraform/api/
認証 & セキュリティ terraform/security/

ステート管理方法

  • Terraform State は Azure Blob Storage に保存
  • Terraform Cloud or Remote Backend を利用
  • 環境ごと (dev, staging, prod) に State を分離
terraform {
  backend "azurerm" {
    resource_group_name  = "terraform-state-rg"
    storage_account_name = "tfstateprod"
    container_name       = "tfstate"
    key                  = "terraform.tfstate"
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions