2020年HRBrainのサービスアーキテクチャの変遷

はじめに

この記事はHRBrainアドベントカレンダーの3日目の記事です。 qiita.com

鈴木が本日分を担当していきます。

今年1年でHRBrainのサービスアーキテクチャが大改変されたので、それについて話していきます。

サービスアーキテクチャ変遷

2020年1月

2019年度の年末にメンテナンスを入れさせてもらって、モノシリックなアプリケーションをElastic BeanstalkからGKEに移行しました。 その際の話は先日Google AnthosDayで弊社の田村が話したので是非そちらを参照ください。 この時点では一旦アプリケーションとデータベースは移行したもののS3を利用したままでした。またメールを送るためにSendGridを利用しています。 f:id:hrb-suzuki:20201202231453p:plain

こちらが今年のスタートでした。

2020年3月 人材配置

2020年3月に人材配置の新規リリースを行いました。あらゆる人材データを一元管理し社員のスキルや特徴をカンタン把握することができるサービスです。

f:id:hrb-suzuki:20201202233728j:plain

人材配置リリース時点のアーキテクチャです。

f:id:hrb-suzuki:20201202231403p:plain 行ったことは

  • 人材配置サービスの作成
  • API Gatewayの作成
  • 認証認可サービスの作成
  • 人事評価のWebとAPIの完全分離(元々SPAだった)
  • 人事評価のデータベースのデータの一部を人材配置や認証認可サービスのデータベースに移行
  • S3からGCSに移行
  • 人事評価内にあったヘルプを切り出し
  • フロントの共通処理をSDKとしてWeb Componentで作成

などを行いました。(当時の記憶を頼りにしています)

よかったことやポイントとしては元々人事評価のAPIをClean Architecture likeに設計してたのがあり、Repositoryの実装をDBに接続していたものをAPI経由で人材配置から取得するように切り替えただけで簡単に移行できました。(自分がやってないので人知れず苦労していたかも) また全体的な基盤をこのタイミングで作り切りました。

2020年4月 組織図ツリー機能リリース

4月の終わりに新たに組織構成や顔ぶれをパッと把握できる組織図ツリーをリリースしました。(下記の全てリリース時にできていた訳ではありません)

f:id:hrb-suzuki:20201203102351j:plain

ユーザー情報や部署情報は人材配置のAPIで賄えたためフロントエンドの実装だけで実現ができました。

f:id:hrb-suzuki:20201203102859p:plain

2020年11月 組織分析機能リリース

先日松木からも紹介させていただきましたが、組織分析機能を11月にリリースしました。

蓄積した人材データの分析ができデータドリブンな人事を実現するためのツールになっています。

f:id:hrb-suzuki:20201203103417j:plain

アーキテクチャはこのように変わりました。

f:id:hrb-suzuki:20201203104028p:plain

矢印が増えてきているようになっていますが、あるルールにそって増やしていて、それは各プロダクトから人材データベースにメンバー情報を集めそこからデータを取得する形にしています。具体的にいうと組織分析APIは人事評価のAPIを叩かないようにしています。 そうすることによって情報の流れをきれいにし煩雑になるのを防いでいます。

2020年11月 通知サービスリリース

11月の後半には通知サービスのリリースを行いました。

こちらは利用者に見えるものではないのですが、メールを送信する機能を新たに作成するときにMemberIDからメールアドレスを取ってきてSendGridのAPIを叩いてメールを送る処理をプロダクト毎にやる必要がありました。 それを解決するプロダクトがこの通知サービスです。

f:id:hrb-suzuki:20201203105100p:plain

人事評価のAPIからはまだSendGridの接続が残ってしまっていますが、追って対応する予定です。 現状はこちらはメールの対応のみですが将来的には通知全体を管理するサービスになればと思っています。

図は簡素化していますが、PubSub使ったり中身はもう少し複雑なのでそちらについては別日のアドベントカレンダーで誰かが話してくれるかもです。

まとめ

来週にもまた別のプロダクトのリリースが予定されていて、来年に向かって仕込んでいるものもたくさんあります。 またリリースしたら終わりではなく継続的に改善や新規機能の開発を行っています。(今だと週2でリリースしています)

来年はより使いやすいサービスを作っていくので楽しみにしていただけたらと思います。