TL

Cloud Service

Azure Service Fabric

マイクロサービスのデプロイ・配置・自動修復・ローリング更新を担う分散システム基盤。ステートフルサービスや信頼性の高いクラスタ運用を、台数管理を任せつつ実現できる。AWS に直接の相当はなく、ECS/EKS にステートフルな実行モデルを足した位置づけ。

中級信頼性運用上の優秀性パフォーマンス効率セキュリティ
最終更新: 2026-06-28公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.マイクロサービスを多数のノードへ配置・自動修復・ローリング更新する分散オーケストレーション基盤。
  • 2.ステートレスに加え、状態をクラスタ内で複製する「ステートフルサービス」を標準で持つ点が特徴。
  • 3.新規は Container Apps/AKS が主流。既存資産の継続運用やステートフル要件で選ばれる。

解決する課題

多数のサービスを多数のサーバーへ安定して配置し、障害時の再配置やローリング更新を自前で書かずに運用できます。

  • 多数のマイクロサービスを多数のノードへ配置し、ノード障害時に自動で別ノードへ再配置したい
  • アプリの状態(セッション、集計値、キューなど)をクラスタ内で複製し、外部 DB なしでも高可用にしたい
  • バージョン更新をローリングで行い、問題時に自動ロールバックしたい
  • コンテナと、コンテナを使わない実行ファイル(ゲストプロセス)の両方を同じ基盤で動かしたい
  • Kubernetes ではなく、ステートフルな実行モデルを標準で備えたオーケストレーターが欲しい

主要概念と用語

  • クラスタ(Cluster): 相互接続されたノード(VM)の集合。アプリはこのクラスタ上に配置される
  • ノード(Node): クラスタを構成する 1 台。多くはノードタイプごとの仮想マシンスケールセットに対応する
  • ノードタイプ(Node Type): 同一構成のノード群。プライマリノードタイプはシステムサービスを載せる
  • アプリケーション/サービス: デプロイ単位。1 つのアプリは複数のサービスを含む
  • ステートレスサービス: 状態を内部に持たないサービス。外部ストアに状態を逃がす一般的な形
  • ステートフルサービス: 状態をReliable Collections としてクラスタ内に保持・複製するサービス
  • パーティション: サービスの状態を分割する単位。スケールアウトの基本単位になる
  • レプリカ: パーティションの実体。プライマリ 1 + セカンダリ複数で複製し、可用性を担保する
  • プログラミングモデル: Reliable Services、Reliable Actors、ゲスト実行ファイル、コンテナを選べる
  • Cluster Resource Manager: サービスをノードへ最適配置し、障害時に再配置する内部スケジューラ

仕様・制限・クォータ

  • クラスタは Windows / Linux のどちらでも構成でき、コンテナゲスト実行ファイルの両方を実行できる
  • ノードは通常仮想マシンスケールセットとして構成し、ノードタイプ単位で VM サイズや台数を設計する
  • プライマリノードタイプはシステムサービスを載せるため、本番では推奨される最小台数を満たす必要がある
  • ステートフルサービスはパーティション × レプリカで構成し、レプリカ数で可用性、パーティション数でスケールを決める
  • クラスタの VM 台数やコア数は、サブスクリプション/リージョンのクォータの範囲で、引き上げ申請が可能
  • 具体的なクォータ数値や推奨台数は変動するため、計画時は対象リージョンの最新値を確認する

内部の仕組み

Service Fabric は、クラスタ上にシステムサービス(命名、フェイルオーバー管理、Cluster Resource Manager など)を常駐させた分散オーケストレーターです。利用者はアプリケーションとサービスを宣言し、Service Fabric が各サービスのインスタンスやレプリカを空きノードへ配置します。

  • Cluster Resource Manager が負荷とノード障害を見ながらサービスを再配置し、特定ノードへの偏りをならす
  • ステートフルサービスでは、プライマリレプリカが書き込みを受け、セカンダリレプリカへ複製する。プライマリ障害時はセカンダリが昇格してフェイルオーバーする
  • 状態は Reliable Collections(信頼性のあるディクショナリ/キュー)として保持され、複製とトランザクションがフレームワークに組み込まれている
  • アップグレードはアップグレードドメイン単位で順に進むローリング更新で行われ、ヘルスチェックに失敗すると自動でロールバックできる
  • ノードの健全性はヘルスモデル(ノード・アプリ・サービス・パーティション・レプリカの階層)で集約・評価される
ステートフルが要らないなら設計を単純化

状態を外部の Azure Cache for Redis や Cosmos DB に逃がせる場合、無理にステートフルサービスを使わずステートレス中心にすると、運用とアップグレードがぐっと簡単になります。ステートフルは「状態の局所性が性能や整合性に効く」ケースに絞るのが定石です。

設計パターン / ベストプラクティス

  • まずステートレス + 外部ストアを基本形にし、ステートフルは状態の局所性が必要な箇所に限定する
  • ステートフルサービスはパーティション設計を先に固める。後からのパーティション数変更は容易でないため、将来のスケールを見込んで決める
  • アップグレードはアップグレードドメインごとのローリングヘルスポリシーを設定し、失敗時の自動ロールバックを効かせる
  • アプリとサービスのバージョン管理を徹底し、差分のみを更新する構成にして無停止更新の範囲を広げる
  • 新規開発で Kubernetes エコシステムや運用最小化を重視するなら、AKS/Container Apps を併せて評価する

運用・監視

  • メトリクスとログは Azure Monitor / Log Analytics に集約し、ノード・サービス・レプリカの健全性とリソース使用率を監視する
  • クラスタの状態は Service Fabric Explorer(Web UI)でノード、アプリ、パーティション、レプリカの階層を可視化して調査する
  • サービスが配置されない/再配置が頻発する場合は、ノードタイプの容量、配置制約、Cluster Resource Manager のメトリクスを確認する
  • アップグレードが止まる場合は、ヘルスポリシーとアップグレードドメインの進行状況、失敗したヘルスイベントを確認する
  • デプロイ・運用は az sf CLI や Service Fabric SDK、各種パイプラインから自動化する

コスト

Service Fabric のランタイム自体に追加料金はなく、課金対象はクラスタを構成する VM(スケールセット)・ストレージ・ネットワーク・ロードバランサーなどの基盤リソースです。

コスト要素内容最適化のヒント
クラスタの VMノード台数 × VM サイズの稼働課金ノードタイプごとに適正サイズを選ぶ
常時稼働の前提システムサービス維持のため最小台数が常時稼働小規模でも下げ過ぎない設計が必要
ストレージ/LBOS ディスク、状態の永続化、外部公開不要なディスクや公開点を減らす
割引予約 VM や Savings Plan の対象 VM定常分は予約で単価を下げる
  • コントロールプレーン的なシステムサービスを維持するため、常時ゼロ台にはできない点が Container Apps との大きな違い
  • 定常的に稼働する VM 分は予約インスタンスや Savings Planで単価を下げられる場合がある(要計測)

セキュリティ

  • ノードから他リソースへのアクセスはマネージド IDを用い、接続文字列やキーのハードコードを避ける(AWS の IAM ロール相当)
  • 秘密情報は Key Vault で管理し、アプリのパラメータやスクリプトに平文で埋め込まない
  • クラスタの管理エンドポイントと Service Fabric Explorer は証明書ベースの認証Microsoft Entra ID で保護し、公開範囲を絞る
  • ネットワークは仮想ネットワークにクラスタを配置し、ネットワークセキュリティグループで管理/アプリのポートを制限する
  • ノード間通信とクライアント通信は TLS で暗号化し、証明書のローテーション運用を整える
アンチパターン

DB 接続文字列や API キーをアプリのパラメータやイメージに平文で焼き込むのは NG。 マネージド ID + Key Vault を使えば、資格情報をコードや設定に置かずに済み、ローテーションと漏洩リスク低減を両立できます。

関連サービス・比較

新規のコンテナワークロードでは、運用を最小化できる Azure Container Apps や、Kubernetes エコシステムをそのまま使える AKS が主流です。Service Fabric はステートフルな実行モデルを標準で備える点に独自性があり、既存資産の継続運用やその要件で選ばれます。

観点Service FabricContainer AppsAKS
位置づけステートフル対応の分散基盤サーバーレスなコンテナ実行マネージド Kubernetes
状態管理Reliable Collections を標準提供外部ストアに逃がす前提外部ストアや K8s 機能で実装
スケール単位パーティション × レプリカレプリカ(KEDA で増減)Pod / ノードプール
ゼロスケール不可(システムサービス常時稼働)可(0 台まで縮小)不可(ノードは常時課金)
新規での主流度既存資産・特定要件向け新規の第一候補になりやすいK8s 必須要件で選択

ハンズオン / CLI例

# Service Fabric CLI 拡張とリソースグループを準備
az extension add --name sf --upgrade
az group create --name demo-rg --location japaneast

# テスト用クラスタを作成(証明書はキー コンテナーへ自動生成)
# 本番では台数・VM サイズ・ノードタイプを設計したテンプレートを使う
az sf cluster create \
  --resource-group demo-rg \
  --location japaneast \
  --cluster-name demo-sf \
  --cluster-size 3 \
  --vm-password "<安全なパスワードを指定>" \
  --certificate-output-folder ./certs \
  --certificate-password "<証明書パスワード>" \
  --certificate-subject-name demo-sf.japaneast.cloudapp.azure.com

# クラスタの状態を確認
az sf cluster show \
  --resource-group demo-rg \
  --cluster-name demo-sf

# クラスタに接続して(証明書を指定)アプリの状態を確認
sfctl cluster select \
  --endpoint https://demo-sf.japaneast.cloudapp.azure.com:19080 \
  --pem ./certs/demo-sf.pem --no-verify
sfctl application list

Azure Service

Azure Service Fabricを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

コンピューティング

比較で見る軸

クラウド: Azure / カテゴリ: コンピューティング / 難易度: intermediate

導入後に効く点

ステートレスに加え、状態をクラスタ内で複製する「ステートフルサービス」を標準で持つ点が特徴。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Azure
カテゴリ
コンピューティング
難易度
intermediate
関連資格
設計柱
reliability / operational / performance / security

判断チェックリスト

  • 自社の用途が「コンピューティング / reliability」に近いか確認する。
  • 強みである「マイクロサービスを多数のノードへ配置・自動修復・ローリング更新する分散オーケストレーション基盤。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

コンピューティングreliabilityoperationalperformancesecurity