## Memo ## Abstract クラウドアプリケーションがモノリスから疎結合のマイクロサービスに移行するにつれ、アプリケーション開発者は、アプリケーション内の各マイクロサービスに割り当てるコンピュートリソースの数(複製コンテナの数など)を決定しなければなりません。この決定は、(1)アプリケーション開発者にとってのドルコストと、(2)アプリケーションユーザーが知覚するエンドツーエンドのレイテンシの両方に影響します。今日、個々のマイクロサービスは、マイクロサービスごとのCPUまたはメモリ使用率が設定可能な閾値を超えるたびに、VMを追加することによって独立してオートスケールされます。しかし、アプリケーションユーザのエンドツーエンドのレイテンシは複数のマイクロサービスに費やされる時間から構成され、各マイクロサービスは全体的なエンドツーエンドのレイテンシを達成するために異なる数のVMを必要とするかもしれません。マイクロサービスベースのアプリケーションのためのオートスケーラであるErlangを紹介します。このオートスケーラは、エンドツーエンドのアプリケーションのレイテンシを所定の目標値以下に保ちながら、ドルコストを最小化するというグローバルな目標を持って、マイクロサービス-バイスにVMを一括で割り当てます。5つのオープンソースアプリケーションを使って、Erlangといくつかの利用や機械学習ベースのオートスケーラを比較しました。ユーザがコンピュートリソースを管理するGoogle Kubernetes Engine (GKE)、GKE standard、そしてクラウドプロバイダがコンピュートインフラストラクチャを管理する新しい運用モード、GKE Autopilotの異なるコンピュート設定でErlangを評価しました。Erlangは、63ワークロードのうち53ワークロードで中央値またはテールレイテンシの目標を達成し、次に安価なオートスケーラと比較して平均19.3%のコスト削減を実現しました。Erlangは53ワークロードのうち48ワークロードで最もコスト効率の良いオートスケーリングポリシーです。Erlangでクラスタを管理することによるコスト削減により、Erlangは数日でトレーニングコストを回収することができます。小規模なアプリケーションでは