ITの世界でオブザーバビリティが重要視されるようになった背景とは

近年注目されている「オブザーバビリティ(可観測性)」とは。もともとは現代制御理論およびシステム理論の創始者となるルドルフ・エミル・カルマン氏が定義した言葉だ。まだロボット制御を模索していた1960年代にカルマン氏が「システムがその出力から内部状態を推測できる状態」になっていることを「オブザーバビリティがある状態」だと定義したのがはじまりだ。

時代が流れ、2013年ごろからIT業界で「システムの運用の判断に必要なデータが取得できる状態」という意味で転用されるようになった。山口氏は「あくまでもオブザーバビリティとはシステムの性質や特性」と指摘する。モニタリングと混同されがちだが、オブザーバビリティはモニタリングで培われた技術スタックを活用しており、モニタリングはオブザーバビリティの一部となる。
ではなぜ、オブザーバビリティが重要視されるようになってきたのか。単一の要因だけで説明できるものではなく、また突然起きた変化でもない。主に3つの時代変化が重なり、次第に重要性を帯びてきたと言える。順に説明していこう。
コンピュータ性能の向上
コンピュータ性能が乏しいころは、OSやミドルウェアを動作させること自体に多くのリソースが割かれていた。その上で動くアプリケーションやコンポーネントの層は「薄い」イメージだ。インフラが健全に動いているかどうかが最重要で、アプリケーションも監視したいもののコストとリソースに制限があり、あまり手が回らなかった。
しかしハードウェア性能の向上、つまりスケールアップしていくと、1台のマシンで複数のアプリケーションやコンポーネントを動かせるようになってきた。
アーキテクチャの複雑化
2000年代初頭からDevOpsが活発化し、開発プロセスの自動化が進んだ。デプロイの高速化を目指すなか、コンポーネントが塊だとリリースしづらいため、疎結合化、マイクロサービス化へと動く。コンポーネントが分かれてくると、コンポーネント自体にどういうテレメトリーをとるかに視点が移っていく。ハードウェアは先述したようにベアメタルから仮想マシン、さらにはLinuxコンテナが採用されるようになることで、こちらも視点が上の層へと移っていく。
デバイスも多岐にわたるようになる。かつてシステムにアクセスするのはパソコン程度だったが、スマートフォンや家電などへとデバイスが広がり、新しい入口に対応するコンポーネントも生まれてくる。いまではひとつのトランザクションの間に、複数のコンポーネントが複雑にやりとりするようになってきている。
仕組みが複雑になるにつれ、複数のコンテナを動かす必要があり、コンテナをオーケストレートする仕組みが発達する。そのオーケストレータの管理も大変なので、マネージドサービスやサーバーレスも普及するようになり、いつの間にか下のレイヤよりアプリケーションレイヤに目が移るようになる。
複雑化したアーキテクチャだと、どこかで問題が起きるリスクを常にはらむ。いかに早急に障害の原因を検知し、対処できるかが重要になってくる。
クラウド化
かつてはオンプレミスで特定のハードウェア上でシステムやアプリケーションが動いていたが、クラウド化、さらにはマネージドサービスへと移行が進んだ。クラウドサービスではハードウェア、OS、ミドルウェアが抽象化され、リクエストに応じて増減するものという感覚になっている。それで意識はインフラよりも、どのプラットフォームで、どのサービスを使ってどうアプリケーションを動かすか、システムを構築するかに向くようになってきている。
あらためて山口氏は「ハードウェアが貴重だった時代はインフラの可用性が重視されていましたが、クラウドネイティブになるとお客さま(エンドユーザー)から見て快適に動いているかが重視されるようになりました。不特定のインフラ、インスタンスからさまざまなテレメトリーが発せられ、トランザクション経路は多様化しています。こうしたクラウドネイティブ時代のオブザーバビリティで、運用の判断に必要な情報が取得できている状態とは、アプリケーションからシステムレベルまであらゆる箇所のさまざまなテレメトリーが必要になります」と説明する。
