サービス改善のための監視と運用
〜ガバメントクラウドでの定量的計測の考え方〜
クラウドサービスではマネージドサービスを活用することで、ログ、トレース、メトリクス、イベントなどシステムから発生する各種大量のデータを容易かつ低コストで収集、分類、可視化することができます。
ガバメントクラウドでは、提供するサービスの価値をいかに発揮できたかを可視化するために、必要な情報をデータとして継続的かつ定量的に計測していくことを常に考慮しています。今回はこの定量的計測について説明します。
ガバメントクラウドが考える定量的計測とは?
ガバメントクラウドで考える定量的計測では、以下の3つの観点が重要です。
Monitoring(モニタリング/監視)
モニタリング(監視)は、あらかじめ想定している異常値に対して、しきい値を設定しアラートなどでの通知を行い異常を検知する仕組み。監視対象は、マシンの死活やマシンリソース、ログなどであり、運用担当者のための機能。
Observability(オブザーバビリティ/可観測性)
システムのアウトプットに及ぼす影響を、多数の構成要素からなるシステム内部の状態からいかに推測できるかの尺度のこと。具体的な定義や捉え方は、人や組織によって異なるが、ガバメントクラウドでは内部状態の詳細な把握と、そこからのUX(User Experience: ユーザ体験)観測を重視している。APM(Application Performance Monitoring)ツールなどを利用して可観測性を上げていく。
Visualization(ビジュアライゼーション/可視化)
複雑に構成されたシステム内部の現象・事象・関係性やシステムとしてのパフォーマンスを、数値やグラフ、ダッシュボードなどを用いて直感的に読み取ることができるようにすること。
前のnote記事「マネージドサービス、コンテナ、サーバレス」の記述のように、昨今のシステムアーキテクチャでは、マネージドサービスやサーバレス、コンテナなどを利用した分散システムが普及してきており、大規模なシステムにおいてはこれらを活用したマイクロサービスアーキテクチャを採用するのも一つの形式になっています。
こうしたアーキテクチャでは多数のコンポーネントやシステムが連携して1つのサービスに構成されているため、なにかコンポーネントやサービスとして障害や不具合が発生した場合に原因究明が簡易にできないケースも考えられます。そこで分散トレーシングなどを利用したオブザーバビリティが注目され、活用されています。
複数コンポーネントやシステムに分散された処理を1つのトレースIDで結びつけることによって、ユーザや処理のリクエスト単位に横串で複数コンポーネントやシステムの状態をまとめて見ることができます。リクエスト単位での分析ができることにより。各コンポーネントやシステムがUXへどのような影響を与えているのか、ということも把握することができます。
クラウド活用と定量的計測
オンプレミスでハードウェアを調達してシステムを構成する場合は、調達したハードウェアの構成が許す範囲内でのシステム変更しかできず、継続的なサービス改善を考えるにも限界がありました。
クラウドを利用すれば、インフラリソースの構成には縛られることなく本来のサービス改善とその運用に取り組んでいけるようになります。また、クラウドサービスによっては、ログや各種メトリクスを記録する仕組みが備わっており、かつすべてのログやメトリクスを収集・保管することができるため、この仕組みを活用することを考えるべきです。
クラウドを活用し、あらゆるログやメトリクスを使って適切にモニタリングしながら、インフラ構成に縛られることなくサービス改善につながるサービス運用をしていくことで、これまでのように「システムの維持、保守」という現状維持のみを要求され、現状維持できないときにマイナス評価しかされなかったのに対し、「サービスの改善、向上」といったプラス評価を得ることができる運用にしていけます。
システム運用からサービス運用へ
これまでのような「システムの維持、保守」という運用では、モニタリング・監視というと、CPU使用率やディスク使用率が閾値を越えたらアラームが出るような機能のことを想像される方が多いのではないかと思います。
特に大きなシステムにおけるシステム運用のイメージは、そのシステムのリリース時の状態を維持するための取り組みとして捉えられていることが多いようです。
しかし、前述のような継続して改善が可能なクラウドプラットフォーム上では、システムで実現したサービスの価値をいかに届けられるか、向上していけるかが重要であり、サービスを利用するユーザの体験=UXを改善していくことにつながるような監視に注力すべきです。
サービスを常に改善していくという観点から運用を考え、改善していくためにシステムの何を監視すると良いかという観点からモニタリング・監視を捉え直す必要があります。これまでのシステム運用としてのモニタリングではなく、サービス運用としてのモニタリングが重要です。
システムの目的とキーとなる指標
サービス運用における改善としては、利用数の増加や届けるべき人に届いているか、UXの向上等が重要です。特にUXの向上は、システムとして開発・運用チーム内で対応できるという点で非常に重要です。
UXの向上は下図のように、UI(User Interface)の改善としてのページのデザインを見やすく使いやすくすることだけでなく、使いたいときに稼働していること(可用性)や、心理的に許容される時間内に処理が終わり応答が返ってくること(性能)など、インフラやシステム全体で実現、改善されるべきことが多くあります。
こうした包括的なUX向上の観点から、サービス改善にどれだけ役に立つのかという指標を定義していきます。そのための指標は単純に定義できるものではなく、システムの目的によって変わってきます。
たとえば、広く国民が使用するWebページでは、ページビュー数(ページが表示された回数)やユニークユーザ数(ページに訪れたユーザ数)の方が、一般的にモニタリングされるリクエスト数(システムがリクエストを受けた数)よりもサービスとして意味があると考えられます。以下はあくまでも例ですが、システムの種類に応じた指標のサンプルです。
システムの種類に応じた指標の例
広く国民が使用するサービス
目的例:ユーザ(主に国民)に対して、必要な情報を届けたり、申請や処理がセルフサービスで快適にできるようになる
指標例:利用者に届いた割合( 届いた人の数/届けるべき人の数 、あるいは、利用者数/対象者数)、ページビュー数、ユニークユーザ数、未利用機能率、処理数、離脱数、1業務の処理時間、エラーレート
特定組織だけが使用するサービス
目的例:特定組織の業務を効率化し、生産性をあげ、手続きのコストを下げ、また間接的にサービス利用者のUXを上げる
指標例:処理数、離脱数、1業務の処理時間、エラーレート、未利用機能率
集計系システム
目的例:正確かつコスト効率よく集計を行うことにより、各種サービスに貢献する
指標例:スループット、エラーレート、稼働率
これまでの「システムそのものを中心とした運用」におけるモニタリングでは、例えばCPU使用率90%といった閾値でアラートをあげるような監視設定をすることが多かったと思います。CPU使用率が100%になって処理が滞る前に気づくためです。そして、アラートが設定されると、そのリカバリ手順や影響範囲および原因調査、再発防止策の検討、月次運用レポートの作成等の対応が必要になるなど追加の作業が発生します。
一方で、「サービスを改善していく運用」という観点で考えた場合、このCPU使用率監視がほんとうにサービス改善のために必要なのかという本来の目的に立ち返って考えることが重要になります。
たとえば、UXに影響しないバックグランドの処理であれば遅延してもUXに問題はなく、むしろリソースが有効活用できている可能性もあります。ここについても、バックグランド処理の実行時間を監視項目に加え、CPU利用率と合わせることで、実質的で意味のあるモニタリングが可能になります。
サービス運用の観点で指標を定め、モニタリングするメトリクスを定義していくことで、サービス改善やUX向上につながる重要な箇所にフォーカスしてモニタリングでき、システム視点だけの監視や運用を減少させていくことでサービスの価値向上とトータルコストの削減が可能になります。
ガバメントクラウドでの定量的計測の活用
ガバメントクラウドでは、単にシステムを構築してカットオーバーするのがゴールではなく、いかにサービスを継続的に改善していくか、ユーザーの利便性を継続的に高めていけるのかが重要だと考えています。
その方法のひとつとして、定量的計測の積極的な活用を考えており、MonitoringやObservabilityのための種別ごとのテンプレートや、Visualizationのためのダッシュボードのサンプル実装を用意することを検討しています。定量的計測の実装例についても、今後このブログでサンプルをつかって説明する予定です。
◆関連するデジタル庁の採用情報は以下のリンクをご覧ください。