相互に依存するIoTマイクロサービスのためのロードバランシング

こんにちは北川です。

今回紹介する論文はマイクロサービスに関するものなので、まず始めにマイクロサービスについて簡単に説明をします。
マイクロサービスとは、複数の小さなサービスを組み合わせてひとつの大きなアプリケーションを構成するソフトウェア開発の技法のひとつです。今までは、すべての機能がまとまったモノリシックなアーキテクチャが主流でしたが、最近では、AIやIoTといったデジタルを中心としたビジネスが増えてきたことによって、マイクロサービスが注目されるようになりました。またマイクロサービスでは、サービスに対して最適な開発言語を選択することができるため、比較的に機能の追加やシステム開発が簡単になります。そのため、変化に強く、柔軟性の高いアプリケーションの開発が行えるようになります。
ただ、マイクロサービスには相互依存性という問題を抱えています。あるマイクロサービスへの入力データは、他のマイクロサービスの出力データに依存することがあるため、サービスの一部がダウンすることで協調動作ができなくなり、エンドユーザが一部の機能を使えなくなることがあるという問題です。

このマイクロサービスの相互依存性の改善について、先日の研究室ミーティングで紹介・議論をしました。

  • タイトル:“Load Balancing for Interdependent IoT Microservices
  • 著者:Ruozhou Yu, Vishnu Teja Kilari, Guoliang Xue, Dejun Yang
  • 発表:IEEE INFOCOM 2019

この論文では、マイクロサービスの相互依存性を抽象化するためにDAG(Directed Acyclic Graph)ベースのモデルを用いています。また、マイクロサービスの負荷分散問題に対し、疑似多項式時間最適アルゴリズムを提案し、実際にQoSを考慮したアルゴリズムと、提案したヒューリスティックアルゴリズムを比較しています。実験では、3つのアルゴリズムを重負荷、中負荷の2つの設定で比較し、QoSを考慮したアルゴリズムが最も低い遅延値を達成されていることが示されています。

論文を読むにあたり、まずマイクロサービスについて調べました。自分は、Amazonで実際に使われているAms(https://aws.amazon.com/jp/microservices/)というマイクロサービスを参考にさせていただきました。Amsでは、無料でクラウドの運用や、体験などができるためマイクロサービスに気になる方は、ぜひチャレンジしてみるのもいいかもしれません。