AWSでSolutions Architectをしていた頃にお世話になった、New Relicの清水 毅さん(@photographed)が著書の New Relic実践入門 を送ってくださいました!ありがとうございます!
その昔、現場でAWSのSAをしていた頃に、@hiroshix さんと一緒にお客様にNew Relicをよくオススメしていました。というのも、Ruby on Rails(当時は私が担当していたStartup界隈のお客様はRailsを使っていた人がとても多かった)にNew Relicのエージェントを入れるのがとても簡単で、Startupという小さい組織の中でわざわざガッツリした何かをするのではなく、カジュアルにモニタリングしたいっていうニーズにとてもマッチしたシンプルなソリューションという印象でしたが、この本を読んで、その頃からの凄い進化を目の当たりにしたというか、”New Relicスゲー!”と思わせてくれるような内容でした。
読み始めた時は、SaaS業界あるあるの『自分たちでやってやれなさそうなこともないけど、そのために体制作って注力するようなことでもない』というような絶妙なところがよく捉えられているなという印象だったけど、読み進めながら”この機能ってお客さんから要望もらって作ったのかなー?”なんていう邪推をしていくうちに、New Relicがサブスクリプションモデルからコンサンプションモデルに移行的な記事を見かけたりして、同じ業界にいる人間としても”ですよね〜”と思うところがあったり。
ということで、私目線でグッときたところを中心に本の内容をご紹介させていただきます。
オブザーバビリティ
オブザーバビリティ(可観測性)って、英語でも日本語でも、字面だけだとちょっととっつきにくそうな印象がありますが、システム開発とか運用とかの経験がある人にとって、冒頭部はとってもシンプルにまとまっていて、第1章を読むだけで、”あー、そういうことね”っていうのがよく分かるかと思います。
New Relic One
第2章のNew Relic Oneに関する記述は自分にとってはWow!な感じでした。単純にログ取るっていっても、例えばSQLにセンシティブな情報が入っちゃってたら、、とかっていうのが現場だと起こったりして、そのためにLoggerをラップして、、とかやったことある人いるかもしれないですけど、その辺マスクしてくれたり、”New Relicってそういうかゆいところに手が届くようになってるんだ〜”とか、異常検知のAIとかアラートノイズの対応とか、フルスタックな可観測性だけじゃなくて、その上のレイヤで現場の運用者の味方というか相棒というかそういうところまでカバーしてるのね、と。New Relic手広い。
個人的には楽天時代に、アラート多すぎて本当に大切なメッセージが受信できなかったとか、ただ通知するだけじゃなくてもうちょっと、、みたいなことやろうと実装したら、そこがデータが大量過ぎて落ちちゃったとか、色んな苦い思い出があって結局sedとawkで頑張るみたいなことしてたので、New Relicならどんな風にできるのかとワクワクしながら読み進めていきました。
そんな中で、このチームはここだけ見れるとか、管理者は全体見れるとか、その昔、NASをマウントできるかどうかみたいな感じで権限は切り分けをしてたこととかあったので、Organizationは気が利いてるな、と。
Telemetry Data Platform
これも英語だとちょっと難しい感のある、”データを食う”とかって言われるようなところが、各種オープンソースと親和性があるような形になっていて、現場のエンジニアとしては嬉しいところなのかな、と(特に”運用のための運用からの開放”って記述が好き)。
でもって、その食ったデータから抽出を行うっていうところが、ブラウザ上でポチポチやるっていうのだけではなく、New Relic Query Language (NRQL)とPremetheusのPromQLというクエリ言語がサポートされているっていうのが個人的には熱いなというか、自分は新卒でエンジニアになった頃からSQL脳なのですよね、、こればっかりはいくつになっても変わらない気がするので、Advancedモードのガンガン補完しながらSQLライクなシンタックスを使ってデータを抽出できるってとても嬉しいんじゃないかと。
そしてデータを抽出したりみたいなところは当然APIも公開されていて、そこにNerdGraph API(GraphQL)というインターフェースがあるっていうのが、GitHubもGraphQLでAPIを公開してたりするし、時代なのだろうなぁと思わされたりしました(きっとそういう要望がGraphQLに慣れ親しんだユーザーからあったんだろうなぁとか)。そして、データの保存期間の設定とかルールを決めて要らないデータはドロップできたりとかがとても直感的。
Full-Stack Observability
いよいよオブザーバビリティの話に入ってくるわけですが、APMというアプリケーションのモニタリングに関しては長年培ったナレッジというか以前からの得意分野なのだと思いますが、インフラやモバイルデバイス、そしてサーバレスといった文字通りフルスタックなのが見て取れますが、TIPSがイイこと言ってる(具体的には周期性を見ようとか、平均だけでなく偏りや分布もとか)なと。インフラ周りはAWS/Azure/GCPなどにも言及がありながら、K8sのモニタリングなんかはホットなトピックなんだろうな。
そして、これは嬉しいなーっていうのはNew Relic Synthetics。いわゆる外形監視というやつでなんというか、そのために別のクラウドベンダーと契約したり、ちゃんと可用性高いインフラ用意したり、ヘッドレスブラウザの運用とか、まぁ自分たちでやれないこともないけど、あったら嬉しいって感じじゃないかなと。
モバイルアプリのクラッシュレポートとか、自分は実際にそういう現場にいたことがないので分からないけど、これも自分でやるのは面倒なんだろうな、、とか。
そして、Log in Context。英語だととっつきにくいのだけど、単純なLog Managementと比較した図があって『そうそう、そういうことっすよね』と。
で、ログを突っ込む側もコードの例とか分かりやすい。更にDistributed(分散) TracingについてはSpanという呼ばれる形式があって、そのスパンのつながりでトレースできるようになっているっていう、モノリスからマイクロサービスへ的な取り組みをしているところは嬉しいですね。
そしてheadベースのサンプリングではなくtailベースのサンプリングっていうところは強いこだわりというかInfinite Tracingという仕掛けはシビレるというか。ここまでいくと自分でそれを作ろうはあんまり思わないんじゃないかなとか。
Alerts and Applied Intelligence (AI)
いよいよ機械学習技術を用いた、アラートを”イイ感じに”っていう章に。
New Relicのアラートは当然条件設定とか、前述のNRQLを使ったり、しきい値の設定とかできるわけですが(ってかJavaとかJVMが手厚い感ある)、とはいえアラート来まくり問題とかそれじゃないアラート来ちゃう問題っていうのは往々にしてあるわけで。そこをPagerDuty、Splunk、CloudWatchなんかと統合(SourceとDestinationを指定)してプロアクティブにホゲホゲできるっていう仕掛けだったり、もう少し技術的な観点で言えば、相関関係とかレーベンシュタイン距離で類似度を判定なんていうのが、プレビューとかシミュレートで確認してから設定できるっていうユーザーフレンドリーさも良さげ。
この機能の根底にあるのは”試験的にAIを導入してみましょう!”とかっていうのではなくて、『AIOps』というOps(運用)に寄り添ったものである、というところ。この辺が使う側の認識もブレでいなければとても有用なのではないかな、と。
16のオブザーバビリティ実装パターン
この本の嬉しいところは、後半にガッツリとベストプラクティスを紹介してくれているところなのですが、レベル0(計測しよう)、レベル1(Reactive)、レベル2(Proactive)、レベル3(Data Driven)という分類になっていて、レベル2くらいから自分たちでやるにはシンドいからNew Relicみたいなサービスを利用した方がイイんじゃないかな?的な印象を受けました。
具体的にはレベル2になると、Webアプリの障害検知と対応といったところで各種デバイス、OS、ブラウザといったところをNew Relic Syntheticsを使って定点比較しようとか、もちろんリアルユーザーの障害発生状況も捉えつつ、NRQLを使ってどうやってそのデータをイイ感じに引っこ抜くか的なところが触れられていたり、データベースアクセス改善箇所抽出パターンはよくあるN+1問題とか、そもそもクエリが遅いとか、急激に短時間でこのクエリの呼び出しが増えているとか、この辺はAPMのテッパン機能なのかな、とか。さらにモバイルアプリや動画プレーヤーといったフルスタック感があったり。
レベル3になってくるとSRE向けとして4つのゴールデンシグナル可視化パターンというのが出てきて、実はGoogleのSRE本を読んでない自分にとってはとても勉強になりました。ここまでくるとOpsが書いたSQLの結果を時系列で表示っていうのが無くてはならないものですね。
もしあの頃にコレがあったらな…
20代後半から30代前半にかけてインターネットサービスの最前線というか、今振り返っても若くなければできないというか、あのままの生活を続けていたら、今頃体調を崩していたかもしれないな、、なんて思ったりする自分にとっては、この本を読みながら色んなことが頭の中を交差していきました。
クラウドのおかげで色んなことが救われたと思うけど、それでも普段問題にならなかったようなことが、想定外の何かのキッカケでトラフィックがどっと押し寄せて来たときに顕になり、夜中に叩き起こされるみたいなことは日々起こっているわけで、100日後に退職する47歳 じゃないけど、現場で大変な思いをしている人が世の中には沢山いるはずで、そういう人たちを救うようなプラットフォームかな、と。
個人的に読みたかったもの
ここまで行くと、自分自身の趣味趣向みたいになってしまうのですが、New Relicがどういう構成でどんな実装になっているのか?みたいの知りたかったな、と。
もちろん日々プラットフォームは進化していて、どこかの時点のスナップショットを眺めることにあまり意味はないのかもしれないけど、エンジニアの端くれとしては、色々気になるし、New RelicがドッグフーディングとしてどのようにNew Relicを使いこなしているのかは非常に興味深いな、と思ったりしました。
システムに関する仕事をしている人であれば、どんな立場であれ、参考になるところが多いのではないかと思いますので、New Relic実践入門 はとてもオススメの一冊です!
コメント