Istio 1.1がリリース。大規模メッシュにも対応する性能とスケーラビリティの向上など
Kubernetesで構成されたクラスタに対してサービスメッシュと呼ばれる機能を提供する「Istio」の最新バージョン「Istio 1.1」がリリースされました。
KuberenetesとIstioが提供する機能とは
Kubernetesは多数のコンテナに対して、あるコンテナが落ちたら別のコンテナを起動することでクラスタを維持する機能や、クラスタに対して多数の処理が集中して負荷がかかった場合には、自動もしくはマニュアル操作によってクラスタを構成するコンテナ数を増やして、負荷に対応できるようにするスケーリング機能も備えています。
また、クラスタ内でどのようなサービスが展開されているかを発見するためのサービスディスカバリ機能、クラスタに対してアプリケーションをデプロイする機能なども備えています。
Istioは、このKubernetesによって構成されているクラスタ内の個々のサービスに対して、プロキシによる通信の仲介を通じてさまざまな機能を提供します。
例えば、ブルー/グリーンデプロイメントと呼ばれる、あるサービスを新版に切り替える際の通信の切り替えなどが可能です。またサービス間の通信を暗号化し、サービス間での認証をきちんと行うことでセキュリティを高めることも実現してくれます。
さらにサービスのモニタリングやログ収集を行うことで、サービスとアプリケーションの稼働状況を把握できるようにするのです。
Kubernetesがおおむねクラスタの基盤機能を提供するものと位置づけられるとすれば、Istioはアプリケーションレベルで使われる便利なサービスを提供するものといえるでしょう。
大規模メッシュにも対応する性能とスケーラビリティ
Istio 1.1でもこのサービスメッシュを提供する位置づけは変わらず、以下のようにパフォーマンスへの注力が行われています。
One of our prime areas of focus has been performance and scalability. As people moved into production with larger clusters running more services at higher volume, they hit some scaling and performance issues. The sidecars took too many resources and added too much latency.
もっとも注力された分野の1つが性能とスケーラビリティだ。人々がより大きなクラスタで大量のサービスを実行するような本番環境へ移行すると、そこでスケーリングや性能の課題に直面した。サイドカーはあまりにも多くのリソースと消費し、多くのレイテンシを追加してしまうのだ。
上記の「サイドカー」という表現は、各サービスにプロキシを組み込み、それを用いて通信を行うことで実現されているIstioのアーキテクチャを「サイドカー」と呼んでいることにちなんでいます。
Istio 1.1で性能向上に取り組んだ結果、レイテンシは平均で最大30%削減され、大規模なメッシュにおいて最大で40%サービスの起動時間が高速になったことが報告されています。
またサービスメッシュを管理するコントロールプレーンにおいても、大規模なメッシュで最大90%ものCPU利用率を削減し、最大50%のメモリ利用料を削減したとのことです。
これによって大規模なクラスタでサービスを展開する場合でも、以前より安心してサービスメッシュを展開できるようになったとされています。
そのほかの新機能についてはリリースノートで説明されています。
あわせて読みたい
Java 7、Java 8、Java 11、Java 12の新元号対応アップデートが4月16日に登場予定。オラクルが発表
≪前の記事
Java 12正式版がリリース、大きな変更などはなし。新ガベージコレクタの実験的導入、Switch文の拡張がプレビューなど