マイクロサービスによる大規模Webサービスの効率化
mdx利用事例 CASE 10

マイクロサービスによる大規模Webサービスの効率化

AmazonやNetflixなどの大規模なWebサービスでは、「マイクロサービス」という手法が広く使われています。
東京科学大学の坂本龍一 准教授らは、mdxを用いてマイクロサービスの実行環境を効率化する実験を進め、コストや消費電力を削減できる手法の提案を目指しています。
mdxをどのように活用しているのか、坂本 准教授に伺いました。
坂本 龍一 氏 坂本 龍一
SAKAMOTO Ryuichi
東京科学大学情報理工学院
数理・計算科学系 准教授

専門は計算機システム。博士(工学)。東京農工大学工学府電子情報工学専攻博士課程修了。東京大学大学院情報理工学系研究科助教、東京工業大学学術国際情報センター准教授などを経て、2022年より現職。

大規模なWebサービスに有効な「マイクロサービス」


── マイクロサービスとはどのような手法ですか。

坂本:従来のWebサービスの多くは、一つのアプリケーション(プログラム)で全ての機能を動かしていました。ところが近年では、電子商取引や動画配信など、頻繁に情報や機能を更新する必要があるWebサービスが増えています。そうした環境では、各機能を独立した小さなサービスに分割して開発・更新を行い、それらを協調させて動かす手法が用いられるようになりました。このように、アプリケーションを複数の独立したコンポーネントに分割して構築する手法がマイクロサービスです。

電子商取引の場合、アカウント管理、決済、商品管理、レビュー管理などの各機能をそれぞれ独立した小さなサービスとして開発し、それらを連携させて全体のWebサービスを構成します。

各機能が独立しているため、商品レビュー機能のレイアウトを更新している間でも、決済は問題なく行えるなど、サービスの可用性、保守性が高まります。一方、一つのアプリケーションで動かしているWebサービスの場合、いずれかの機能の保守や更新のために、サービス全体を一時的に停止しなければならないケースが生じます。

それぞれのサービスを頻繁に更新する大規模なWebサービスでは、マイクロサービスを用いることに大きなメリットがあるのです。またサービスごとに独立性が高いので、それぞれの専用チームで開発を独自に進めることができます。

サービスの配置によって変わる通信量や実行性能


── マイクロサービスにも課題があるのですか。

坂本:パソコンに例えると、さまざまなアプリケーションを同時に開いている状態なので、その分、計算資源を多く消費します。また、サービス同士を協調させて動かすため、サービス間の通信量も増えるという課題があります図1

ユーザーが商品を購入した際には、決済サービスから顧客管理サービスへと情報が送られます。このようにマイクロサービスでは、サービス間で頻繁に情報をやりとりするため、通信量の増加とそれに伴うコスト・消費電力の上昇が避けられません。マイクロサービスの場合、全体の計算資源や消費電力の30〜40%が通信に費やされているケースがあります。私は、その通信量を抑えるための研究を進めています。
図1 マイクロサービスにおけるサービスと通信頻度の例
図1 マイクロサービスにおけるサービスと通信頻度の例
── どのような手法でマイクロサービスの通信量を抑えられるのですか。

坂本:以前は物理マシンで通信量を抑える実験を行っていました。全てのサービスを1台の物理マシン上で動かす場合、マシン内の通信に限定され、サービス間の通信時間と量を減らすことができます図2左

しかし、1台のマシンでCPUを100%使用してしまったら、機能を拡張する余地がありません。また、相性の悪いサービス同士を同一のマシン上に配置すると、全体の計算効率が大きく落ちてしまうこともあります。

このため、複数の物理マシンにサービスを分散させる必要があります図2右。このとき、図1のようにサービス間の通信頻度を調べて、頻度が高いサービス同士は同一マシンへ、相性の悪いサービスは別々のマシンへ配置することで、全体の通信量を減らして相性による計算効率の低下も回避することができます。
図2 物理マシンとサービス配置の例
図2 物理マシンとサービス配置の例
私たちは物理マシンを使って、サービスの配置によって実行性能がどのように変化するのか、実験を行いました図3。図3の折れ線グラフでは、色ごとに異なる配置を示し、縦軸が応答時間(処理時間)、横軸は1秒間に処理できるリクエスト数を表しています。配置の違いで応答時間や1秒間に処理できるリクエスト数の実行性能が異なることが分かります。

オレンジの折れ線グラフは、横軸の秒間2.0リクエストの手前で途切れています。これは1秒間に2個以下のリクエストしか処理できないことを示しています。赤は2.2個まで、青と緑は2.4個以上のリクエストを処理できています。ただし、緑は応答時間も青より短いため、最も実行性能が高いことが分かります。

Webサービスを利用するユーザーは、応答時間が0.1秒以上になるとストレスを感じるといわれるため、応答時間を抑えつつ処理性能を高める最適な配置が求められるのです。
図3 サービス配置別の実行性能の実験例
図3 サービス配置別の実行性能の実験例
サービス配置の違いにより1秒間に処理できるリクエスト数や応答時間の実行性能が変化する。

mdxでサービスの最適配置を探す


── マイクロサービスの配置の実験に、なぜmdxを利用することにしたのですか。

坂本:私たちが以前に行った物理マシンによる実験では、4台のマシン上に40個のサービスを展開し、その配置の最適化を検討しました。実際の大規模なWebサービスでは、数十から数百以上のサービスによって構成されるのが一般的です。そのような大規模な構成において最適な配置を探す実験を行うには、多数の物理マシンをそろえなければなりません。

また、最適配置の実験では、マシンの台数、CPU、ノード数、各サービスの配置パターンなどを柔軟に変更する必要があります。物理マシンではこうした変更が困難ですが、仮想マシンならば自由度が高く、環境変更も容易です。

そもそもマイクロサービスは、クラウドサービス上の仮想マシン群で動かすことが多いのです。そこで、コスト面で民間のクラウドサービスよりも優れているmdxを選びました。民間クラウドは料金体系が複雑で、実験を進めるうちに想定外のコストがかかってしまうこともあります。その点、mdxは利用料金が前払い式ポイント制なので、コストの見通しが立てやすいのも大きな利点です。

mdxは民間クラウドと比較すると機能が絞られており、操作がシンプルで使いやすいことも魅力です。最適配置の研究のように、マシン構成や設定を頻繁に変更する実験においては、非常に適した環境だと感じています。マシン台数や計算資源量の変更、各サービスの配置変更を行いながら、さまざまなパターンで実行性能がどのように変化するのか実験を進めています。

新世代デバイスも用いて効率化を進める


── 新世代デバイスをマイクロサービスに導入する実験も行っているそうですね。

坂本:mdxを使った実験とは別に、SmartNIC(Smart Network Interface Card)という新世代デバイスを活用して、マイクロサービスのさらなる効率化を図る実験も進めています。SmartNICは自由にネットワーク処理機能をプログラミングできるネットワークインターフェースカードです。

マイクロサービスでは、同じ機能を持つサービスが複数存在することがあり、その中からどのサービスに処理を割り当てるかという差配もCPUが行っています。その差配をSmartNICに肩代わりさせることで、CPUの負担を軽減することを試みています。

また、単純にCPUの肩代わりをさせるだけではなく、処理内容と各サービスの負荷状況を勘案して、そのときに最も効率的に実行できるサービスに処理を割り振るといった、より高度な役割をSmartNICに担わせることで、効率化を図る実験を行っているのです。
この実験には市販のSmartNICだけでなく、自分たちで設計・製作した回路を組み込んだカスタムFPGA(Field Programmable Gate Array)を搭載したSmartNICも用いています図4。FPGAを活用してマイクロサービスを効率化する研究は、世界的にも私たちが先行していると思います。

米国の巨大IT企業に比べて、日本企業ではマイクロサービスの普及があまり進まない傾向があります。コストや消費電力の削減が可能な効率化手法を私たちが提案することで、日本国内でもマイクロサービスの導入が進み、より質の高いWebサービスの提供が可能になると期待しています。
図4 マイクロサービス効率化の実験に用いているSmartNIC
図4 マイクロサービス効率化の実験に用いているSmartNIC
左側がFPGAを搭載した市販のSmartNIC、右側がFPGAを搭載したカスタムSmartNIC。

大規模な計算機環境の効率化で情報社会の課題解決に貢献する


── 今後の目標を教えてください。

坂本:スーパーコンピュータの高速化やAIの普及などによる情報社会の進展によって、電力需要が急増すると予想され、その分、二酸化炭素の排出量の増加も懸念されています。私たちは、マイクロサービスだけでなく、スーパーコンピュータやAIを効率的に動かす研究も行っています。大規模な計算機環境の効率化により、コストを削減するとともに、消費電力と二酸化炭素排出量の抑制に貢献することが可能です。

まずは当面の目標として、mdxを用いたマイクロサービスの配置と実行性能の関係を調べる実験を進めることで、2〜3年後には、数百個のサービスで構成されるマイクロサービス環境を、10〜20%効率化できるような最適配置の手法を提案したいと考えています。
大規模な計算機環境の効率化は、多数の要因が絡む難問ですが、突き詰めて調べていくことで、最適な答えが必ず見つかるはずです。
── 坂本 龍一 氏
坂本 龍一 氏
取材・構成:立山 晃/フォトンクリエイト
撮影:石渡菜々子/STUDIO CAC