はじめに
マイクロサービスアーキテクチャは注目されている.例えば,Netflixやebay, AmazonをはじめとするBig Techで採用されている.また,マイクロサービスアーキテクチャで設計されたシステムも研究のトピックとして注目されている.アカデミックな研究ではマイクロサービスアーキテクチャで設計されたシステムやデータセットの収集が難しく,そうした研究の多くが実験用のアプリケーションやデータセットを使っている.
この記事では,Alibabaで動作するマイクロサービスアーキテクチャで設計されたシステムを分析した論文を紹介する.特にマイクロサービスアーキテクチャのシステムの規模や構造を主に扱う.
概要
この論文ではAlibabaのプロダクションシステムで,20,000個のマイクロサービスに関して7日間分の100億をこえるトレースを分析している.
分散トレーシング
分散トレーシングに関してDapperに似たシステムを社内で利用している.トレーシングで集めている属性の紹介もあり,以下の属性を収集していた.
- TimeStamp
- TraceID
- rpcID
- Upstream Microservice
- Upstream Microservice Pod IP
- Downstream Microservice Pod IP
- Interface
- Response Time
- Communication Paradigm
分散トレーシングでは監視システムのストレージの消費量の増加を抑えるために,呼び出しグラフの記録に関してTraceIDベースのサンプリングを行っていた.これとは別に,すべての呼び出しをTrace IDベースでCommunication Paradigmを記録している.
マイクロサービス間の通信方式
マイクロサービス間の通信の方式を3つ(Remote Procedure Call, Message Queue, Inter-Process communication)に分類していた.ステートレスなマイクロサービス間の通信で使われる方式の割合は,それぞれ以下であった.
- Remote Procedure Call 76%
- Message Queue 23%
- Inter-Process communication 1%
→圧倒的にRPCの割合が多いのがわかる.おそらく長時間かかるタスクや非同期で実行するタスク以外は,RPCやIPC(プロセス間通信)で済みそう?
マイクロサービスのトポロジの分析
1トレースあたりに含まれるマイクロサービス
Luo, S., Xu, H., Lu, C., Ye, K., Xu, G., Zhang, L., Ding, Y., He, J. and Xu, C., 2021, November. Characterizing microservice dependency and performance: Alibaba trace analysis. In Proceedings of the ACM Symposium on Cloud Computing (pp. 412-426).
単一の呼び出しグラフ(トレース)に含まれるマイクロサービスの数がFig. 3(a)で紹介されていた.このグラフは縦軸が累積分布関数であるため割合をらわしている.マイクロサービスのうち10%程度では,40個をこえるユニークなマイクロサービスへの呼び出しをしており,この傾向はBurr Distributionに強い相関をもっているという.巨大な呼び出しでは数百〜数千の呼び出しで構成されるという.40をこえる巨大な呼び出しグラフのうち,約50%はMemcachedであるという.Memcachedを使いDBへのアクセスを減らすことがResponse Timeを減らすのに効果的だったそう.
→これはかなり大規模でトラブルシューティングが困難になると感じた.むしろアーキテクチャを改修できなかったのだろうか…?
マイクロサービスの呼び出しの深さ
Luo, S., Xu, H., Lu, C., Ye, K., Xu, G., Zhang, L., Ding, Y., He, J. and Xu, C., 2021, November. Characterizing microservice dependency and performance: Alibaba trace analysis. In Proceedings of the ACM Symposium on Cloud Computing (pp. 412-426).
Fig. 3(b)で呼び出しの深さの割合を分析しており,最も多い呼び出しの深さは3になっていた.グラフからこの割合が30+%程度であるとわかる.また,平均の深さは4.27で,標準偏差は3.25であった.一方で4+%の呼び出しでは深さが10以上であるという.こうした場合には適切なコンテナ数を求めるのに苦労するため,Deep Learningベースの手法を採用しているという.
Deep Learningベースの手法:
- Seer | Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems
- Sinan: ML-based and QoS-aware resource management for cloud microservices | Proceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems
→ここまで規模が大きいと,手動での作業は困難になりそう.むしろよく動いていると思った.思っていたよりも呼び出しの繰り返しは少ないと感じた.
マイクロサービスサービス数と呼び出しの深さ
Luo, S., Xu, H., Lu, C., Ye, K., Xu, G., Zhang, L., Ding, Y., He, J. and Xu, C., 2021, November. Characterizing microservice dependency and performance: Alibaba trace analysis. In Proceedings of the ACM Symposium on Cloud Computing (pp. 412-426).
Fig.3(c)では,マイクロサービス数と呼び出しの深さをグラフ化している.横軸はマイクロサービス数であり,縦軸は呼び出しの深さをあらわしている.グラフをみるとマイクロサービス数が増えても,呼び出しの深さは15程度で頭打ちになっている.ステートフルなマイクロサービスが呼び出されると,その後の呼び出しは続かないという.
マイクロサービスごとの入力次数と出力次数
Luo, S., Xu, H., Lu, C., Ye, K., Xu, G., Zhang, L., Ding, Y., He, J. and Xu, C., 2021, November. Characterizing microservice dependency and performance: Alibaba trace analysis. In Proceedings of the ACM Symposium on Cloud Computing (pp. 412-426).
Fig.4では,あるマイクロサービスが呼び出されるマイクロサービスの数(入力次数)と,あるマイクロサービスが呼び出す別のマイクロサービスの数(出力次数)を分析していた.(本文では “in-degree and out-degree of microservices in call graphs” と表現されている.)
10%をこえるステートレスなマイクロサービスは少なくとも5つのマイクロサービスを呼び出し(出力次数=5)ているという.一方で大半のマイクロサービスは,1つのマイクロサービスからのみ呼び出され(入力次数=1)ている.
Luo, S., Xu, H., Lu, C., Ye, K., Xu, G., Zhang, L., Ding, Y., He, J. and Xu, C., 2021, November. Characterizing microservice dependency and performance: Alibaba trace analysis. In Proceedings of the ACM Symposium on Cloud Computing (pp. 412-426).
Fig.5では深さとマイクロサービスの数を比較した結果を表していた.グラフの横軸の深さが2より大きくなると,対応する階層には1つしかマイクロサービスが含まれていないものが多く(およそ60%)なるという.これはグラフの紫色の領域に対応している.つまり,深さが増すほど,直列に繋がれたマイクロサービス間の呼び出しになりやすいと分かる.
ホットスポットのマイクロサービス
Fig.4の結果から5%をこえるマイクロサービスは合計で16の入力次数をもつという.こうしたスーパーマイクロサービスは,90%近くの呼び出しグラフで表示され,Alibabaのトレース全体のうち呼び出しの95%を処理している.この結果はマイクロサービス間でワークロードの不均衡が発生することを意味している.
付録
データセットは以下のリンクからダウンロードできる.
このデータセットを分析している論文を見つけた.
おわりに
マイクロサービスアーキテクチャを採用したシステムの実データや分析結果は公開されていないため,具体的なデータを知れるのは有用だった.次回はMetaの同様の論文を読んでみようと思う.
コメントを残す