こんにちは、SmartHR はプロダクト基盤チームでプロダクトエンジニアをしている @ikuto0608 です。こちらは 2023/10 に参加した GraphQL Summit カンファレンスについての記事になります。また、SmartHR Advent Calendar 2023 2nd の9日目に掲載しています。
( カンファレンス会場兼宿泊場所 Sheraton San Diego Hotel & Marina の一室から )
なぜ GraphQL Summit 2023 に?
今夏にもテックブログ ( SmartHRのマルチアプリケーションに分散した従業員データを集約する - SmartHR Tech Blog ) で取り上げましたが、 SmartHR では複数プロダクトそれぞれに従業員情報が蓄積されていきます。HR 領域をさらに細分化したドメインをそれぞれのプロダクトが担っていて、各プロダクトが対象のドメイン業務の効率化に寄与し、その過程で適切なタイミング・適切な従業員情報が蓄積されていきます。それぞれのドメインに貯まった価値ある従業員情報を領域を飛び越えて活用せずにはいられません!
そこで、分断された従業員情報を集約するため Apollo Federation という技術 ( よく GraphQL Federation と呼ばれる技術で複数 GraphQL API をひとつに統合するくん ) を選択し開発を進めてきました。
GraphQL Summit という国際カンファレンスは、 Apollo Federation を開発している Apollo 社によって運営された GraphQL Developer 向けのカンファレンスで今年は San Diego で開催されました。来年は New York だそうです!
プロダクト基盤チームで開発を進める従業員データプラットフォームのために利用している GraphQL 及び Federation の知見を広げるため今回このカンファレンスを聴きにいくこととなりました。
だんだんと日の目を見始めている
カンファレンスについての話を深ぼる前にもう少しだけプロダクト基盤チームでの最近の動向を触れさせてください 🙋♂
現在、労務コア・サーベイ・スキル管理・人事評価 の 4 つのプロダクトが Federation の傘の内に存在し、それぞれのプロダクトに蓄積された従業員情報を統合して取得可能になるよう開発を進めています。
ここにきて利用プロダクト第一号が生まれました!タレントマネジメント領域のプロダクトである 配置シミュレーション から利用が始まりました。
サーベイプロダクトからは従業員に紐づくエンゲージメントスコアを、スキル管理プロダクトからは従業員に紐づくスキル・資格・研修情報を取得・表示できるようになりました。
- 11/6更新【配置シミュレーション】従業員サーベイ機能と連携し、エンゲージメントサーベイの結果を確認しながら配置検討ができるようになりました | SmartHR|シェアNo.1のクラウド人事労務ソフト
- 11/20追記【配置シミュレーション】スキル管理機能と連携し、スキル・資格・研修の保有状況を確認しながら配置検討ができるようになりました | SmartHR|シェアNo.1のクラウド人事労務ソフト
人事評価プロダクトからは従業員に紐づく最終評価を取得できるよう絶賛開発が進んでいます。
これらの裏側に Apollo Federation 技術を利用した GraphQL API が存在し、プロダクト横断の従業員取得を実現しています。
活用するプロダクトの存在しかり、価値ある従業員情報を提供するプロダクト両者が存在することでさらにまた価値が生まれ、とても趣深いです。
印象に残ったトークは?
Apollo CTO と Netflix から Bruce Wang の対談
Talk title: Playing to Win: Why Netflix Platform Engineering Chose Federated GraphQL
Bruce Wang は Product Platform Systems team lead で Netflix APIs, An Unexpected Journey のインタビュイーとして過去にもトークがありました。
Netflix にて、API が今の Federation までに至った遷移を話しています。
何をバリューに据えていたのかの話で、いかにバックエンド(各ドメインオーナー)とクライアントチーム(API 利用者)が、Bruce のいる API チームなしにコミュニケーションが完結し、開発が完結できるかがバリューだよねと言及していました。
ミドルマンである API チームが Federation の初期実装を担っていたり、もともとの API のスキーマを決めていたなどの背景により API チームに知見が貯まっており、一見簡単なことのように見えてそうではないんだよね、というのが興味深くコミュニケーションの方法を SmartHR でも今まさに形作っていたりするのでとても聴き応えのある回でした。
"I don't wanna federate the pain." - Bruce Wang
が個人的に名言でとても好き。
随所に散りばめられた参加者同士のコミュニケーションの場
参加者同士、登壇者、Apollo エンジニア間のコミュニケーション発生の場がとてもたくさん用意されてるカンファレンスでした。
Breakfast / Lunch は外庭の丸テーブルで
8人程度が座れる丸テーブルが外庭に用意されていて朝食・昼食はそこで取るスタイルになっていました。大体の参加者は会場のホテルに宿泊してるのでパラパラ自由に席について食事をしました。 どっから来てるの? federation 使ってる? Apollo 高くない? などなけなしのコミュニケーション力を振り絞ると、Expedia や Apollo などのエンジニアと話すことができました。US・欧州から来ている人を観測しました。
トピックテーブルで念願の Gusto エンジニアに会うことができた
トピックテーブルとは、登壇者を囲んで登壇内容にちなんだトークを直接行えるタイム。
SmartHR と同じ領域のプロダクトを開発している US 企業の Gusto のエンジニアと話す機会を得られたのは国際カンファレンスならではの貴重な体験でした。Gusto でも Federation 技術を利用しているとのことで、彼らは大きなモノリス Rails app を持っており、その中で "fake" federation を行ってるとのこと。 "fake" が何を意味するか理解できなかったのですが、彼らはモジュラモノリスの構成を取っているということもあり、一定の領域毎に GraphQL API エンドポイントを生やし、それぞれを Subgraph として Supergraph に統合しているのかなと想像しました。
Apollo エンジニアと 1 on 1 で相談に乗ってもらえる場
今取り組んでる大きな課題としてプロダクトを横断した従業員項目検索があります。横断検索について、Apollo エンジニアに聞いてみたところ
- どうやっても統合検索には統合 index を持つ独立した Subgraph が必要になる
これは、彼らのベストプラクティスを説明した公式ドキュメントでも言及されたものと同様の回答でした。Aggregating data across subgraphs - Apollo GraphQL Docs ですよね。
Workshop
初日はまる1日ワークショップの日でした。午前と午後それぞれひとつずつワークショップに参加することができました。それぞれ2-3時間のハンズオン形式で Apollo 技術に触れることができ、私が参加したうちの一つは近くに座った人でグループを作り議論するなど背筋が伸びる回もありました。
Graph & Brew Disco
Disco Night !!! 3日目の夜には San Diego ダウンタウンにあるクラブ会場を箱借りしてパーティーが催されました。ホテルからシャトルバスが何台も出てダウンタウンにある会場に移送され立食形式のパーティーでした。しばらく wallflower 状態でしたが前日のランチで話をした Expedia のエンジニアとああでもないこうでもないと話して過ごすことができ良き時間になりました。 歌いたい人はカラオケができて、欧米スタイルの。勇気ある猛者たちがマイクを握り会場を湧かせていました。
以上、初めて海外のカンファレンスにひとりで参加させていただきましたが、刺激の多い1週間となりました。カンファレンスのトークは公開されているので他にもたくさん知見に触れることができます。 Apollo GraphQL - YouTube
まだまだ始まったばかり...
カンファレンスで得た知見も生かしプロダクト基盤チームでは引き続き Federation を使い倒していきます。
今取り組んでいること
よりよい統合検索の方法を模索し続けている最中です。統合 index database まではまだまだ道が長く、index database 設計はもちろんですが、プロダクト横断でデータ更新検知のための pub/sub 機構など実現のために不足している要素があるのが現状です。一足飛びでベストプラクティスまで登れるといいのですが、今できないことを最短で可能にすべく database federation の検証がはじまったところです。
未来に待っている課題の一端
pub/sub 機構しかり、統合した権限設定もまた必要不可欠な要素でありまだまだ考え始められていません。従業員情報の閲覧範囲・閲覧項目の指定を可能にする権限設定はなかなかくせが強く、"所属部署のマネージメント対象従業員の評価情報は見れていいがそれ以外の従業員の評価情報は見れてはいけない" など範囲と項目両方から考慮が必要だったり複雑怪奇です。
おわりに
( カンファレンス会場からすぐが海岸で遊歩道になっていてとても欧米だった )
We Are Hiring!
SmartHR では一緒に SmartHR を作りあげていく仲間を募集中です! 少しでも興味を持っていただけたら、カジュアル面談でざっくばらんにお話ししましょう!