組織やサービスが大きくなると顕在化する3つの課題
スタック全体をモニタリングし、デバッグし、改善するなど、よりよいソフトウェアの構築に役立つオブザーバビリティプラットフォーム「New Relic」。New Relicを活用し、スケールする組織の課題の解決に取り組んでいるのがディップである。
まず、ディップの事例を紹介する前に、New Relic 技術統括 コンサルティング部 シニアソリューションコンサルタントの会澤氏が登壇し、スケールする組織に最大の効果を発揮する意思決定について解説をした。サービスや組織が大きくなると「ツールのサイロ」「データのサイロ」「人・組織のサイロ」という3つのサイロが発生する。
「人が増えるとロールがわかれてサイロ化するので、ツールが乱立する。ツールが乱立すると集まるデータもツール依存となり、散在する。データがツール依存になると、人や組織も自分だけがそのデータが見えれば良いというマインドが醸成されてしまう。このような状況を放置させると、サービスや組織のスケールを阻害する可能性があります」(会澤氏)
この3つのサイロの発生には「意思決定の粒度が関係している」と会澤氏は語る。一般的にサービスは、ビジネス企画、フロントエンド、バックエンド、インフラというロールで構成される。意思決定は次のようなパターンが考えられる。最も粒度の小さいパターンが、サービス&ロール別の意思決定。意思決定スピードが速い、スモールスタートがしやすいメリットがある一方、サービスやロールをまたいだ分析ができないデメリットがある。2番目に粒度が小さいパターンがロール別の意思決定である。同一ロール観点の横断的分析ができるというメリットはあるが、ロールをまたいだ分析ができないというデメリットがある。3番目に粒度が小さいパターンがサービス別の意思決定。メリットはロールをまたいだ分析ができること。
一方、デメリットはサービスをまたいだ分析ができないこと。最も粒度が大きく、会澤氏がお勧めするパターンが全社統一の意思決定である。先に紹介したすべての課題を解決できるだけではない。「その組織の中で働くエンジニアがチャレンジしやすい文化、ボトムアップの文化も生まれやすくなるというメリットも得られます」(会澤氏)
とはいえすべての組織において、全社統一の意思決定が良いと主張したいわけではない。「それぞれのメリット・デメリットを理解した上で、サービスのフェーズや規模に応じて意思決定のパターンを選択していくほしい」(会澤氏)
エンジニア組織を拡大していくため、3つの課題をNew Relicで解決
続いてディップの事例紹介が始まった。ディップという社名になじみのない人も、「バイトル」や「はたらこねっと」という求人情報サービスは知っているという人も多いかもしれない。ディップはこれらの人材サービス事業に加え、「コボット」を中心としたDX事業も展開していいる。「働く人々の理想の社会の実現を目指して活動しています」とディップ 商品開発本部 システム統括部 バイトルエンジニアリング部 部長の五月女氏は説明する。
五月女氏が所属するシステム統括部は従業員数104人、パートナーを含めて250人体制でサービスの開発・運営に当たっている。「当社では2025年までの中期経営計画に沿って、エンジニア組織の内製化を進めています」と五月女氏。内製化することで、アイデアを早く、たくさん実現できる体制にするためだ。「今は、テックカンパニーとして進化していく変革の時期。今後もエンジニアリング組織は拡大していく予定」と五月女氏は意気込みを語る。
エンジニア組織を拡大していくため、「解決したい3つのポイントがあった」と五月女氏。第一に調査のための人的コストである。「システム全体が可視化されておらず、日々の調査コストがエンジニアの負担になっている状況があった」と五月女氏は語る。2つ目は監視ツールの浸透。すべてのエンジニアが利活用できる状態に至っていなかったり、浸透していてもサポートが十分でなかったり、ツールが複数あって運用しにくいなどの状況があった。3つ目は拡大するエンジニア組織の成長度やエンジニアの貢献度が見えにくいこと。
この課題を解決する手段として選択したのがNew Relicである。New Relic導入で実現したいことの第一は商用システム全体のデータを集約・可視化することで、システムの全容把握と問題の改善が効率的にできる状態にすること。第二にユーザー体験に関わるデータを活用・分析することで、エンジニア目線での顧客分析ができる状態にすることである。第三にエンジニアの貢献度を定量・可視化することで、プロダクト貢献、開発チームの成長・成果が分かるような状態にすること。第四に企画担当と開発担当が同じ指標を日々確認することで、同じ目標、同じ方向を向くことができる状態にすることである。
「現在、各プロダクトで順次導入が進行しています」(五月女氏)
ディップではNew Relicをボトムアップにより利活用することで、調査、障害に関する工数削減、エンジニアの貢献度可視化、職能や組織を超えた協働開発体制の構築など、理想の組織実現に向け動き出している。
「はたらこねっと」におけるNew Relicの具体的な活用方法
実際にどのように活用されているのか。具体的な活用事例を紹介したのが、商品開発本部 システム統括部 プロダクトエンジニアリング部 はたらこねっと開発課リーダーの大塚氏である。大塚氏がバックエンドエンジニアとして携わっている「はたらこねっと」は、派遣の仕事を中心に正社員、アルバイトなどさまざまな求人を掲載している総合情報求人サイト。同サービスはPHPとLaravelで開発している。
同社ではNew Relicもボトムアップによる活用となっている。ボトムアップによるメリットは「2つある」と大塚氏。一つは当事者意識が向上すること。「会社から言われたことをやるだけでは、エンジニアもモチベーションが上がりません。しっかりエンジニア自身が考えて実践することで当事者意識を向上させることができる」(大塚氏)
第二に開発スピードの向上である。当事者意識が向上することで、開発スピードも向上すると大塚氏は言う。では実際、はたらこねっとではNew Relicをどのように活用しているのか。「はたらこねっとでは主にデータの収集・可視化に活用しています」と大塚氏。PHPとLaravelで構築されたはたらこねっとのアプリケーションからデータをリクエストごとにNew Relicに送っているのだ。
データの収集も、New Relicに用意されているPHP用のエージェントをインストールして、ミドルウェアに処理を追加するだけと簡単。「そのほか、アプリケーション以外の開発で使用しているツールからもデータを収集している」と大塚氏。これら他のツールデータ収集には、New RelicのイベントAPI機能を使用する。これらのツールから収集したデータは開発のパフォーマンスなどの可視化に活用している。
サービスの可視化では、APM(アプリケーションパフォーマンス監視)を活用。日々のアプリケーションの動きを観測し、トランザクションタイムの推移やApdexスコアなどを見て、サービスに異常が無いかを確認する。デプロイ後の傾向分析のほか、「APMは障害時の調査にも使用するなど、非常に便利に使えるツール」と大塚氏は言い切る。
このようにAPMだけでもかなりの情報を見ることができるが、はたらこねっとではダッシュボードを活用し、自分たちに必要な情報をいつでも見られるようにしている。
例えば、Core Web Vitals(Webサイトの健全性を示す指標)や、異常を素早く検知するため仕事一覧や応募画面など重要な画面のレスポンスタイムを容易に見られるようにしているのもその一つ。
「Core Web VitalsはAPMでも見ることができますが、サービス全体と重要な場面のCore Web Vitalsを見られるようにしています」(大塚氏)
ソフトウェア開発チームのパフォーマンスについては「Four Keys」を使用して可視化。長期的に開発パフォーマンスの改善の傾向が分析できるようにしている。チームの健全さは「d/d/d(デプロイ数/営業日数/メンバー数)」で可視化。そのほか、プルリクエスト数やプロリクエストレビュー数もカウントしている。
「プルリクエストのレビュー数については、まだ活用方法を検討中。エンジニア一人ひとりの活動量の指標の一つとして利用できるのではと検討している」(大塚氏)
大塚氏はNew Relicの導入の効果についても次のように言及。第一の効果は調査のための人的コストが削減できたこと。フロントエンド、アプリケーション、インフラをまとめて観測できるようになったからだ。また分散したシステムのデータの相関が見え、分析や調査がより一層容易になったとも言う。さらにNew Relicでアカウント管理するだけで、各システムでの権限管理が不要になったことも人的コスト削減に寄与している。
第二に監視ツールが浸透したこと。ボトムアップで活用方法を検討、実施することで、エンジニアが率先してNew Relicを活用していこうというマインドが醸成されている。「New Relicはエンジニア自身がデータを見て改善のサイクルを回していけるので、非常に友好的に活用できる」と大塚氏。エンジニアの活用が進む背景には、New Relicの手厚いサポート体制も大いに関係している。
第三の効果はエンジニアの貢献度や活動量を定量的に可視化できるようになったことだ。「まだまだチャレンジしたいことはある」と大塚氏。例えば現状収集しているデータに加えて、アプリケーションのログも取り込み、分析することで、障害発生率の把握や障害になりそうな箇所の検知することに取り組んでいくこともその一つ。また今は異常がないかどうか、人の目で確認しているが、「アラートを設定し、自動で通知させることにもトライしていきたい」と大塚氏は意気込みを語り、セッションを締めた。