マイクロサービスアーキテクチャの可観測性とOpenTelemetry
こんにちわ、サイト管理者のわかっち (@wakatchi_tech) です。
マイクロサービスアーキテクチャだとトラブルが起きたときに大変だよ
こんな質問をいただきました。
マイクロサービスアーキテクチャは、先端技術をビジネスの柱とする企業だけにとどまらず、あらゆる業種の基幹システムでの採用が増えてきています。一方、マイクロサービスアーキテクチャの運用は、マイクロサービス分割の失敗やモノリスから移行する際の考慮不足、分散トランザクションの活用など、多くの課題が見えてきました。
分散トランザクションの活用についてはこちらの記事をご参照ください。
TCCパターンとSagaパターンでマイクロサービスのトランザクションをまとめてみた
マイクロサービスのトランザクション特性に合わせて、TCCパターンとSAGAパターンがどう扱われるかをまとめてました。TCCパターンやSAGAパターンの分類や実装の留意点などを解説しています。
なかでも課題としてよく挙げられるのが、分散アーキテクチャはトラブルシューティングが従来よりも困難になりがち、という点です。サーバレスやコンテナによるマイクロサービスアーキテクチャでは、数多くのマイクロサービスが連動してユーザにサービスを提供します。そのため障害や性能問題が発生した際は、各マイクロサービスの一連の動きを追跡できなければなりません。そこで、マイクロサービスの動きを追跡し、観測可能にする可観測性(Observability)という考え方が重要になってきます。
可観測性は分散トレーシングによって実現します。分散トレーシングによって、サービス同士がどのように呼び出し合っているか、それぞれがどこにボトルネックがあるのかを、実際に実行されているリクエストを元に可視化できます。
今回は、マイクロサービスアーキテクチャが可観測性を実現する方法として、CNCFで標準化が進められているOpenTelemetryをご紹介します。
マイクロサービスアーキテクチャと可観測性
CNCFの宣言によると、クラウドネイティブなアーキテクチャとは可観測性を実現したシステムである、と定義されています。
クラウドネイティブ技術は、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、スケーラブルなアプリケーションを構築および実行するための能力を組織にもたらします。 このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。
https://github.com/cncf/toc/blob/master/DEFINITION.md
これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。 これらを堅牢な自動化と組み合わせることで、エンジニアはインパクトのある変更を最小限の労力で頻繁かつ予測どおりに行うことができます。
可観測性は、ログ・メトリクス・トレースの3つの柱で構成されます。この3つの柱を収集・測定する手法をテレメトリと呼び、そのデータを`テレメトリデータ`と呼びます。テレメトリデータを収集・測定する仕組みは、CNCFで標準化が進められています。
マイクロサービスアーキテクチャでは、システム開発の当初から可観測性の仕組みを導入することをお勧めします。アジャイル開発のプラクティスとして初期(Scrumなら最初のスプリント)からCI/CDを導入すべきと言われますが、可観測性も併せて導入し、開発初期からCI/CD/CM(継続的モニタリング)を実現するとよいでしょう。
CI/CDはよく知られてるけど、CM(継続的モニタリング)ってあまり知られてないよね
可観測性を獲得するOpenTelemetry
OpenTelemetryは、OpenTracingとOpenCensusという二つのプロジェクトが統合され発足したCNCFのプロジェクトで、クラウドネイティブなアプリケーションの可観測性フレームワーク(ツール、API、SDKの集合)を提供します。アプリケーションのパフォーマンスと動作を可視化するために、分析用のテレメトリデータ(ログ、メトリック、トレース)を計測、生成、収集、およびエクスポートします。また、OpenTelemetryはクロスプラットフォームであり、様々な言語をサポートします。
【出展】
少し古いですが、CNCFが2020年9月に公開した可観測性のテクノロジーレーダーでは、OpenTelemetryはASSESSに位置付けられており、普及はこれから、といったところでしょうか。
【出展】
CNCF End User Technology Radar: Observability, September 2020 | CNCF
Today, CNCF is publishing the second of our quarterly CNCF End User Technology Radars; the topic for this Technology Radar is observability. In June, we launched the CNCF End User Technology Radar…
可観測性のテクノロジーレーダーで述べられているとおり、可観測性のツール導入後は、別のツールへの変更や統合は難しい傾向にあります。多くの企業にとって可観測性はコアビジネスではないため、投資の費用対効果の説明が難しいことが原因です。そのためにも、テレメトリデータを収集する仕組みは極力標準化されたものを採用すべきです。
可観測性に対応した製品が情報を可視化するためには、分析用のテレメトリデータ(ログ、メトリック、トレース)が必要です。従来、テレメトリデータはオープンソースプロジェクト、または商用ベンダによって提供されてました。しかしながら、標準化が行われていないため、結果としてデータの移植性が失われ、可観測性の製品を利用するユーザの負担が大きくなります。
OpenTelemetryプロジェクトは、商用ベンダに依存しない単一のソリューションを提供することで、これらの問題を解決します。OpenTelemetryプロジェクトは、クラウドベンダ、可観測性の商用ベンダ、エンドユーザから幅広い業界サポートと採用があります。
OpenTelemetryによる依存性の低減
クラウドベンダや商用製品ベンダの多くがOpenTelemetryの対応を発表しており、今後はOpenTelemetryがテレメトリデータ収集の標準ツールに位置付けられることが期待されます。例えば、AWSであればX-Ray、商用製品ではNew RelicなどがOpenTelemetryに対応しています。今後、より多くのベンダがOpenTelemetryに対応することを期待しています。
マイクロサービスアーキテクチャの可観測性を獲得する際は、クラウドベンダや商用ベンダへの依存性を下げるために、OpenTelemetryの採用を検討してみましょう。
まとめ
簡単ではありますが、クラウドネイティブやマイクロサービスという華々しい言葉に比べてやや地味な可観測性に触れてみました。いかがだったでしょうか?
まだまだ情報が少なく、普及するにはまだ時間を要するかもしれません。
マイクロサービスアーキテクチャの運用には、後回しにしがちなログ監視やメトリクス監視、分散トレーシングをシステム開発当初から検証していくことをお勧めします。可観測性が重要と認識しつつも、アプリケーション開発に直接影響を及ぼさないため、後回しにしがちです。可観測性が獲得できないマイクロサービスは運用できない、という認識を持ち、そのツールとしてOpenTelemetryを候補に入れてみてはいかがでしょうか。
マイクロサービスアーキテクチャの導入に可観測性は必須だよ!
本記事が、マイクロサービス導入に向けて少しでもお役に立てれば幸いです。
本ブログでは、可観測性の具体的な構築例やユースケースなどを積極的に発信していきます。
最後までお読みいただき、ありがとうございました!
Webエンジニアを養成するオンラインプログラミングスクール | Webエンジニアを養成するためのシステム開発会社初オンラインプラグラミングスクール。まずはオンライン説明会への参加から! |
ドメイン取得ならXserver Domain | 国内最安値!取得も更新も!ドメイン名取得サービス |
未経験から初めてのプラグラミングで副業 | Web制作を勉強・学習して短期間でWeb制作の副業ができるようになる講座。Web制作副業のお仕事を必ずGET! |