InfoQのBen Lindersが先日、PoppuloのSRE(Site Reliability Engineering)マネージャのPierre Vincent氏による、可観測性(observability)と分散システムに関する講演についてレポートした。可観測性については、特にサーバレスとマイクロサービスの領域において、以前から何度も記事として取り上げている。この分野にはPrometheus、OpenTracing、Envoy、新しいところではKialiといった数多くのオープンソースプロジェクトもあり、開発者を支援している。
Aspen MeshのZach Jory氏による先日の記事では、この話題をさらに深く探求している。最初に氏は、長年にわたって人々の行動を観察し続けた結果として、モノリスをマイクロサービスに分解することは必要なアクティビティではあるが、それによって自動的に容易なシステムが出来上がることはなく、逆に難しくなる部分もある、と指摘する。
明らかに複雑性を増す部分は、サービス間のコミュニケーションです - サービスからサービスへの通信の可視化は実現が難しいのですが、最適化されたレジリエントなアーキテクチャを構築する上では不可欠です。
システム全体の健全性を知ることを目的とした監視は長く実施されてきたが、マイクロサービスにおいて一般的なクラウドベースの分散システムでは、システムの振る舞いに関する情報を提供する可観測性の概念が重要性を増している、とZach氏は言う。
可観測性とは、データの顕在化と情報へのアクセスの容易化です。通信がフェールした時、期待通りに実行されなかった時、あるいは期待しない場面で発生した時、これが重要になります。サービス相互の稼働時のインタラクションは監視し、管理し、コントロールする必要があるのですが、そのためにはまず、可観測性と、マイクロサービスアーキテクチャの振る舞いを理解できることが必要なのです。
Istioに代表されるサービスメッシュ技術の興隆により、その運用や開発を目指す人々にとって、可観測性は最も重要な要件のひとつになった、とZach氏は考えている。(氏の会社は独自のサービスメッシュ実装を保有しているが、氏の指摘は実装に関わりなく理解する価値がある。) 次に氏は、サービスメッシュが提供する、最も重要な2つの可観測性について論じている。最初はトレーシング(Tracing)で、どのマイクロサービスがどのトランザクションに関与しているかを知るためのものだ。
分散トレーシングはデバッグや、アプリケーションの振る舞いを理解するために最適です。トレーシング情報を完全に理解する上で重要なのは、ひとつのクライアント要求に関連するさまざまなマイクロサービスから、その範囲を関連付けられることです。これを達成するためには、アプリケーション内のすべてのマイクロサービスがトレーシングヘッダを伝搬する必要があります。
そのためには、サービスメッシュ間で自動的に収集可能なテレメトリデータに基づいたメトリクス(Metrics)がある。収集すべき重要なメトリクスは、要求数、要求時間、待ち時間、要求のサイズなどだ。
マイクロサービス領域で発生する障害の大部分は、サービス間のインタラクション中に発生します。従って、これらのトランザクションに関する情報は、アーキテクチャをよりよく管理し、障害を回避する上で有効です。サービスメッシュの提供する可観測性によって、サービス間の相互作用において何が起きているのかを、より簡単に確認できるようになります。それによって、効率的でレジリエント、かつセキュアなマイクロサービスアーキテクチャの構築が容易になるのです。
興味深いのはZach氏が、我々が2017年末に論じた、2018年は監視と可観測性が開発者にとって重要な要素になるだろう、という予測について触れていることだ。RisingStack CTOのPéter Márton氏は当時、次のように述べていた。
マイクロサービスの監視と観測可能性を次なるレベルに引き上げて、次世代APMツールを実現するためには、OpenTracingのようなベンダニュートラルな実装標準が必要になります。この新たな標準をAPMベンダやサービスプロバイダ、さらにはオープンソースライブラリのメンテナンス担当者が採用することが求められます。
それから8ヶ月が経ち、サービスメッシュ技術の採用の可否に関わらず、可観測性をマイクロサービスアーキテクチャの重要な部分とするプロジェクトがその数を増しているのは、疑いのない事実となった。さらにはOpenTracingのアドインサポートであるEclipse MicroProfileのような、開発者を対象とした活動も現れている。
この記事を評価
- 編集者評
- 編集長アクション