# マイクロサービスアーキテクチャ
## 定義
マイクロサービスアーキテクチャ(Microservice Architecture / MSA)は、モノリシックアプリケーションを小さなソフトウェアサービスに分解し、明確に定義された API(エンドポイント)を通じて互いに通信させる分散アプリケーションの構築・運用パラダイム。各サービスが特定のビジネスユースケースを担い、開発チームの独立性・デプロイ速度の向上・細粒度なスケーリングを実現する。大規模組織では事実上の標準となっている。([[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]])
基本構成要素:
- **サービストポロジ**: 相互接続された多数のレプリカサービスが複数のデータセンターにまたがって実行される有向グラフ
- **ロードバランサ**: データセンター入口およびサービス間の転送をルーティングするレイヤ
- **可観測性フレームワーク**: メトリクス監視・ログ記録・分散トレーシング([[テレメトリ]])を担う基盤
- **スケジューラ**: ホストマシン上でサービスをコンテナとして実行するグローバルフェデレーテッドスケジューラ
## 横断的知見
- **大規模産業界実装とオープンソーステストベッドの乖離**: DeathStarBench 等のオープンソーステストベッドは単一アプリケーションを模倣するが、Metaのような大規模産業実装は多数のアプリケーションを処理する多様なサービスを持つ。過去研究で「テストベッドは産業界より静的」と指摘されたが、本論文はその乖離がトポロジの不均一性・チャーン・成長という具体的次元で発生することを定量化した。(Source: [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]])
- **「不適合(Ill-fitting)」エンティティの存在が研究ツールの前提を崩す**: Inference Platform のような ML プラットフォームは「ビジネスユースケースが十分なパーティション基準」というマイクロサービスの根本的前提を破る。テナントごとに Service ID を生成するため、Service ID ベースのトポロジ分析や RCA ツール(Sage の同期 RPC 前提、Tprof の非結合爆発前提)が無効化される。単一組織の設計点だけでなく不適合エンティティの多様な処理パターンをツール設計が考慮する必要がある。(Source: [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]])
- **トポロジの成長は「新サービス追加」が規定し「既存サービスの複製増加」ではない**: Metaの22か月データで、Regular servicesのインスタンス増加率(s=0.046%/日)は新規 Service ID 増加率(s=0.043%/日)とほぼ一致。すなわちスケールアップより機能追加が成長を牽引する。これはモデルベースのトポロジツールが定期的な再訓練と「予測が実態から乖離した時点の検知機構」を必要とすることを意味する。(Source: [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]])
- **「サービス」の定義の不統一が定量比較を不可能にする**: 既存の産業界研究(Luo et al., Wen et al., Zhang et al.)はサービスの定義・スケール・サンプリング方式を明示しないため定量比較が困難。この問題はインターネット計測コミュニティが開発した標準計測方法論のマイクロサービス版が必要であることを示す。(Source: [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]])
- **リクエストワークフローは「浅く広い」という共通構造が複数組織で確認**: Metaの Fetch プロファイル(中央値深さ4・幅472)、Alibaba(Luo et al.)、ByteDance(Wen et al.)のいずれも大規模トレースは幅方向に大きく、深さは浅い。この構造はデータシャーディング(1コレクションの取得に多数のストレージへのファンアウトが必要)という実装パターンに起因する。(Source: [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]])
- **EC 大規模実運用での SWLT 観測: 少数コンテナで重尾・高分散のレイテンシが局所的に発生する**: [[JD.com]] の本番基盤([[Huasong Shan]] ほか, WWW 2019)では、数万件のウェブサービスを Kubernetes 管理のコンテナ基盤で運用した際、1 分/1 秒ウィンドウの P99 レイテンシ(SWLT)が全コンテナのごく一部(例: 260 台中 13 台)で突発し、障害コンテナが時間とともにシフトするパターンが確認された。この「局所性 + 時間シフト + 重尾」という組み合わせは、DeathStarBench(2019)の「1 poor microservice がエンドツーエンドレイテンシを桁違いに悪化させる」現象の実本番での確認事例として読める。JD.com の事例では 13 のシステムメトリクス(CPU・メモリ・ディスク I/O・ネットワーク)を 1 分解像度で記録し、約 300 の監視コンテナで 3 万件のウェブサービスを監視した。(Source: [[@2019__WWW__ε-Diagnosis - Unsupervised and Real-time Diagnosis of Small-window Long-tail Latency in Large-scale Microservice Platforms]])
- **アーキテクチャ上の利点がそのまま診断困難性に反転する**: [[@2026__Cluster Computing__Anomaly detection and root-cause identification in microservices - a survey]] は、マイクロサービスの利点を異種性、レジリエンス、細粒度スケーリング、独立デプロイに整理する一方、同じ性質が監視・異常検知・根本原因特定の困難性を生むと論じる。サービスは動的に追加・削除・移動され、Kubernetes/Istio などのオーケストレーションで呼び出し依存が絡み合い、単一ユーザー要求が数千のバックエンド呼び出しに展開しうる。この観察は、Meta の「高チャーン・不均一トポロジ・浅く広いワークフロー」と同じ構造を、異常検知/RCA の問題設定側から再記述したものだと読める。(Source: [[@2026__Cluster Computing__Anomaly detection and root-cause identification in microservices - a survey]], [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]])
## 未解決の問い
- 不適合エンティティ(Inference Platform・ML Scheduler 等)を自動的に識別・分類する手法は存在するか。手動の識別に依存している現状は大規模トポロジ分析のスケーラビリティを制限する。
- 「サービス」の定義を標準化し異組織間の定量比較を可能にする標準計測方法論をどう設計するか。インターネット計測コミュニティ(IMC)の方法論はどこまで参考になるか。
- 高チャーン(毎日多数のサービスが追加・廃止)に対してリアルタイムでトポロジモデルを更新するアルゴリズムは何か。モデルの staleness をオンラインで検知する方法は。
- ワークフローの「building block」(parent/child 関係)から集約ベースのパフォーマンス診断・容量計画を行う具体的な手法は実用化されているか。
- Canopy の観測性損失(深いコールパスの80%打ち切り)を補完するために、トレース外の情報(ログ・メトリクス)とどう統合するか。[[マルチモーダル障害診断]]との接続。
- マイクロサービスサーベイは Train Ticket、Sock Shop、Hipster Shop、Death Star などの公開テストベッドを整理するが、Meta の産業実装が示す不均一性・高チャーン・不適合エンティティをどこまで再現できるか。公開ベンチの静的性が、異常検知/RCA 手法の評価を過大評価していないか。([[@2026__Cluster Computing__Anomaly detection and root-cause identification in microservices - a survey]], [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]])
- Usman ら 2022 が指摘した「統合オブザーバビリティプラットフォームの不在」はマイクロサービスの DevOps 運用にどの程度解決されたか?エッジ展開でのオブザーバビリティ要件(資源制約・異種インフラ・異種ネットワーク)は、クラウド中心の現行 OSS スタック(OpenTelemetry/Prometheus/Jaeger)でどこまでカバーできているか。([[@2022__IEEE ACCESS__A Survey on Observability of Distributed Edge & Container-Based Microservices]])
- DeathStarBench(2019)が示したハードウェア/OS 層の圧迫(front-end stalls・kernel 時間 36.3%・single-thread 性能感度)は、現在の高密度コンテナ実行・ARM サーバ普及・eBPF カーネルストラテジで緩和されたのか? それとも本質的にマイクロサービス分割の細粒度が深まる限り残るのか? Meta スケールの大規模 MSA 実装でも同様の現象が継続しているか([[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]] は trace 軸の解析であり、ハードウェア層は触れない)。
## 横断的知見(オブザーバビリティ観点での追記)
- **モノリスからマイクロサービスへの移行がオブザーバビリティ課題を根本から変える**: Usman ら 2022 は、モノリスでは障害が「アプリ全体がアップかダウンか」という二値状態だったのに対し、マイクロサービスでは多数コンポーネントの相互依存が強まり、「ある一箇所の性能不全が他コンポーネントの状態変化に起因する」という連鎖パターンが支配的になると整理した。これは分散システムの根本原因分析([[根本原因分析]])が単純な閾値アラートでは追いつけない理由を、アーキテクチャの変遷から説明するものであり、Meta の実測データ(浅く広いワークフロー構造・高チャーン)と同じ複雑性の別側面を捉える。(Source: [[@2022__IEEE ACCESS__A Survey on Observability of Distributed Edge & Container-Based Microservices]], [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]])
- **コンテナ研究側からのマイクロサービスへの認識: 2016 年時点で「architecture concern」として登場**: Pahl ら(IEEE TCC 2019)の 46 件 SMS では、microservice architecture が Architecture/Construction 関心の一項目(count=4)として現れる。当時はまだ「コンテナで実現可能なアーキテクチャパターンの一つ」という位置付けで、Lewis & Fowler (2014)を引用しつつクラスタオーケストレーションが必須要件として認識されていた。これは Meta の 22 か月実測データ([[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]]) が表すような「数万サービスの相互依存・高チャーン」が研究対象になる前史を示し、コンテナオーケストレーション([[コンテナオーケストレーション]])が成熟することが MSA 大規模実装の前提条件だったことを示唆する。(Source: [[@2019__TCC__Cloud Container Technologies - A State-of-the-Art Review]], [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]])
- **2019 年の DeathStarBench は MSA の「ハードウェア/OS 層への影響」を実証研究で定量化した最初の suite**: [[@2019__ASPLOS__An Open-Source Benchmark Suite for Cloud and IoT Microservices]] は 5(+1) のエンドツーエンドサービス(25-41 microservices 各々)で以下を実証した: (1) cycle の大半がフロントエンドストール(fetch 起因)で retired instructions は Social Network 平均 21% に留まる、(2) ネットワーク処理が全実行時間の 36.3% を占める(monolithic NGINX 5.3% との対比)、(3) マイクロサービスは monolith より単スレッド性能の低下に **より敏感**(各 microservice が monolith 全体より厳しい tail latency 制約を持つため)、(4) 1 dependency の管理ミスで Social Network の tail latency が 10.4× 悪化、(5) tail-at-scale 効果は monolith より顕著で 1 poor microservice がエンドツーエンド latency を桁違いに悪化させる。これらは Meta の trace 解析(2023)が捉えた「浅く広い workflow・高チャーン・不均一トポロジ」とは別軸の **下位層への圧迫** を示し、ハードウェア/OS/cluster manager がマイクロサービス向けに provisioned されていない実態を初めて定量化した。(Source: [[@2019__ASPLOS__An Open-Source Benchmark Suite for Cloud and IoT Microservices]], [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]])
## 関連
- ソース: [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]] / [[@2026__Cluster Computing__Anomaly detection and root-cause identification in microservices - a survey]] / [[@2022__IEEE ACCESS__A Survey on Observability of Distributed Edge & Container-Based Microservices]] / [[@2019__TCC__Cloud Container Technologies - A State-of-the-Art Review]]
- 概念: [[分散トレーシング]] / [[テレメトリ]] / [[トレースサンプリング]] / [[Fault Localization]] / [[根本原因分析]] / [[マルチモーダル障害診断]] / [[AIOps]] / [[コンテナオーケストレーション]]
- エンティティ: [[Meta]] / [[Canopy]] / [[Darby Huye]] / [[Raja R. Sambasivan]] / [[Yuri Shkuro]] / [[Tufts University]] / [[DeathStarBench]]
- 関連 MOC: [[SRE - MOC]] / [[AI Infra Telemetry - MOC]]
## 出典
- [[@2023__USENIX ATC__Lifting the veil on Meta's microservice architecture]](§1 Introduction、§2 Metaアーキテクチャの詳細、§3 トポロジ特性 F1-F3、§4 ワークフロー特性 F4-F6、§5 示唆と将来研究)
- [[@2026__Cluster Computing__Anomaly detection and root-cause identification in microservices - a survey]](§3.1-3.4 マイクロサービス定義・利点・課題、§4.2 データ収集、§4.6 テストベッド)
- [[@2019__TCC__Cloud Container Technologies - A State-of-the-Art Review]](§5.2.3 Management Services-Architecture/Construction、§6 Conclusions; microservice architecture は count=4 で登場)