天の月

ソフトウェア開発をしていく上での悩み, 考えたこと, 学びを書いてきます(たまに関係ない雑記も)

DevOps で必要なオブザーバビリティを考えるに参加してきた

aws-dev-live-show.connpass.com

こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。

会の概要

以下、イベントページから引用です。

オブザーバビリティという言葉を聞いたことはありますでしょうか ? 日本語では可観測性と呼ばれたりもしますが、「システムの状態を把握できている状態」のことを指し、システムを開発、運用していく中で重要な要素です。

従来のモニタリングと比較されることが多いオブザーバビリティですが、本セッションでは、概要やモニタリングとの違い、DevOps における重要性、AWS サービスを使ってどこから始めれば良いのかといった内容に触れていきます。これまでオブザーバビリティという言葉を知らなかったかた、聞いたことはあってもぼんやりとしか知らなかった方、ぜひこの機会に一緒にキャッチアップしていきましょう !

会の様子

オブザーバビリティの概要(モニタリングとの違い)

オブザーバビリティ界隈?では、干し草の中に針を落としてしまい針を探す、という例えが用いられるそうですが、もう少しちゃんとした定義として、こちらの本を参考に定義の紹介がありました。

www.oreilly.co.jp

以下、引用箇所で特に触れられていた部分を記載します。

システムがどのような状態になったとしても、それがどんなに斬新で奇妙であっても、どれだけ理解し説明できるかを示す尺度

 

リアクティブ(反応的)なアプローチであり、過去に発生した故障モードを特定するためにのみ有効です。

 

みえているーモニタリングしているーのは既知の障害モードです。パフォーマンスのしきい値を設定し、恣意的に「良い」か「悪い」かを判断します。

DevOpsにおけるオブザーバビリティ

現在は分散システムが増えてきており、開発チームと運用チームとがコラボレーションをしていくDevOpsの文脈で、オブザーバビリティがより重要になってくるという話が出ていました。

オブザーバビリティを高めていくにあたり、まずは状態を可視化して共通理解を持っていくのが重要だということで、この際に「状態」がシステム的なものだけにならないようにしていく(ビジネス観点も含める)のも大切だと考えているそうです。

また、普段支援をされているチームでうまくいきがちな例として、ビジネスのメトリクスに対して全員が高いモチベーションを持っているチームの話が上がっていました。このような状態を作るためにはチーム編成が肝だと考えられているという話もありました。

昨今のオブザーバビリティの盛り上がりに対して思うこと

昨今はオブザーバビリティに関して盛り上がりを感じるそうですが、これはDevOpsが徐々に当たり前に実践されるようになり、「よりうまく実践するためにどうしたらいいか?」という議論にシフトしてきたからこその盛り上がりではないか?という話がありました。

ここから始めるオブザーバビリティ

メトリクス/ログ/トレースの3観点があり、どれも重要だということですが、トレースに関しては取っ掛かりにくさを感じている人も多いのではないか?という印象があるそうです。
ただし、最近はAPI GatewayやLambdaなどをはじめ、チェックを入れるだけでトレースが始められるようになっているため、気軽に始めやすくなっているということです。

また、ベストプラクティスとして全システムレイヤーでメトリクスを取ることが推奨されていますが、まだ何もできていないようなチームであれば、SLOに近い「システムがうまく動いているか?」をまずは一つ見ておくことが重要だということでした。

他にも、AWS Well-Architectedは是非読んでみてほしいというお話もありました。

Q&A

システムが複雑になるにつれて全体を俯瞰するツールが重要になってくる?

まさにその通りだということで、トレーシングできるようにしていくのが重要だと思うということでした。
また、ログの重要性も高まってくるということで、ログを吐く目的として人が対応(行動)できるようなログ、というのを意識していくとよいというお話が出ていました。

リアクティブなモニタリングに対してプロアクティブなオブザーバビリティは相対的に優先度が下がりがちなのだが、どう取り組んだらよいのか?

システムを改善していく上で、見ていくメトリクスを決めていくのが重要だという話がありました。
また、そういったメトリクスを定期的に見る習慣も大切になってくるということです。

オブザーバビリティで痛い経験をしたことはあるか?

痛い経験をしないために、リリースして状態に変動が多いときは優先的にオブザーバビリティを考えるようにしているということでした。

また、痛い経験として、ある地点からメトリクスを取り始めたものの推移のほうが重要だと感じたという話が出ていました。

分散システムでトレーシングログを出すときにどうするのか?

どうやってやるかにもよりますが、OpenSearchに流してもらうか、X-Rayでログも一緒に見るようにするかが良いのではないか?ということでした。

会全体を通した感想

複数のコンテキストで適用できるような抽象的話のみならず、AWSのサービスと絡めた具体的な話も多くて面白かったです。

少し話にも出ていたツール周りの話はもう少し聴きたかったですが、時間の都合もありましたし会の本題でもなかったので、次回以降のお楽しみにしたいと思います。