事業を拡大するため、2つのプロジェクトが進行
具体的にNew Relicを導入するとどんな課題を解決できるのか。その事例として登壇したのが、レバテック開発部の蒲生氏である。レバテックは「日本をIT先進国に」というビジョン、「IT人材と企業を増やし、伸ばし、繋げる」をミッションに掲げ、ITエンジニア・クリエイターのフリーランス、転職、就職、教育のすべてを備える採用プラットフォームを提供している。また最近ではカンファレンススポンサーやテックブログなど、技術広報にも力を入れている。
「レバテックでは、事業をより加速させるため、リアーキテクトプロジェクトの進行とリアーキテクト前の既存システムの運用という2軸のシステム戦略が動いています」と蒲生氏は話す。
2軸でのシステム戦略を進めていくうえで、課題やリスクはどのようなものがあったのか。既存システムの運用課題は2つ。一つはシステムの内部構造が複雑なこと。サービス同士の通信が多く発生し、メトリクスやログだけで通信を追っていくことが難しいほか、レガシーなコードによる認知負荷の高さ、会社に長く属さないと複雑な内部構造がわからないという属人化の問題があった。
もう一つの課題は、サービスの信頼性を計測できないこと。安定稼働が何を指しているのか、開発とビジネスであまり合意が取れていない。計測したとしても、カーディナリティの高いデータが取得できておらず、たとえSLOが下がっても、どのぐらいのユーザーに影響が出ているのかがわかりづらい状態だった。「鳴り響くアラート、オオカミ少年さながらのアラート、機能開発の鈍化、積もり積もった運用作業という形で、課題の影響が表面化してきました」(蒲生氏)
これらは開発体験の悪化を表しており、開発生産性の低下につながる。そこで開発体験を向上させるために、通信状態をコードから追ったり、システムに詳しい人が頑張ってログを分析したり、調査用のログを出す変更をデプロイしたり、重要度高、緊急度低の運用タスクは優先度を下げたりしてきた。そこで通信状態が可視化され、調査しようとする人が調査できる、対応が必要なアラートが鳴る、システムに変更を加えなくても調査ができる、システムの継続運用に必要と判断される運用タスクの優先度を適切につけていく状態を目指すことにした。
リアーキテクトプロジェクトのリスクは大きく3つ。第1に、完遂までのリリース回数が増えること。「デプロイ失敗率が高いまま、開発を継続していくと障害も多く発生してしまう。品質が落ちる回数が増えるので、開発チームへの信頼度が下がり、最悪、プロジェクトがストップしてしまう可能性がありました」(蒲生氏)
第2に、機能やシステムを捨てない限り、システム全体の複雑性は上がっていく一方であること。第3が遅延した時のリスク。既存システムの苦しい運用がその分、継続されてしまうという。
既存システムの運用作業負荷を軽減し、リアーキテクトシステムのデプロイ時の品質を担保する。そのために蒲生氏がアプローチとして選択したのが、オブザーバビリティの採用である。システムの内部構造の可視化と信頼性の計測ができるからだ。
オブザーバビリティツールとして、導入したのがNew Relicである。「New Relicでメトリクス、ログ、トレース、イベントの各テレトリデータを取得、ダッシュボードでわかりやすく表示されるだけではなく、トレース情報から自動でサービスマップを作成してくれます」(蒲生氏)
New Relicを導入したことで、新たな実装なしでシステムの状態が分かるようになっただけではない。「システムに関心のある人が、データを追うことによって自分で調査できるようになるなど、属人性の軽減が図れます。傷害調査にかかる工数も削減でき、暗黙知が形式知化されるので、障害発生の予兆検知、未知の未知への対応がしやすくなることも期待できます」と蒲生氏は見込める効果を紹介する。
信頼性の計測は、SLI/SLOを設定し、New RelicのSLM(サービスレベルマネジメント)という機能を活用することで実現する。「予測モデルの作成が、オブザーバビリティの肝」と蒲生氏。システム内、およびシステムとビジネスの相関性も分かるようになるため、投資の判断がしやすくなるという。
また、カーディナリティの高いデータも取得できるようになる。「SLOを設定しても、どんなユーザーに、どういうときに、どんな影響が出ているのかわからないと、原因分析がしづらいです。なのでカーディナリティの高いデータの取得は、SLOの運用に不可欠です」(蒲生氏)
信頼性の計測が実現することで、「開発とビジネスの指標と相関の強い物を管理できるようになること、また開発者にとってはアラートの精度が向上することが期待できます」と蒲生氏は力強く話す。
これらの結果により、New Relic導入をすることで障害対応時間の減少、オオカミ少年アラートの減少、機能開発により集中できる状態になるという効果が見込める。また運用作業のコントロールができることで、「システムのパフォーマンスがSLOを満たすレベルを維持し続けるために必要な機能開発と、運用作業の優先度づけを適切に行っていけるようになることで、ビジネス層にとっても納得度の高い説明ができるようになるのでは」と蒲生氏は指摘する。