dip Engineer Blog

Engineer Blog
ディップ株式会社のエンジニアによる技術ブログです。
弊社はバイトル・はたらこねっとなど様々なサービスを運営しています。

コボット連携システムの紹介

2021年12月に入社した岡田です。
バイトルやはたらこねっとを開発する部署に所属しています。

今回は弊社で提供しているバイトル関連求人サイト(バイトル・バイトルNEXT・バイトルPRO)とコボット(面接コボット・HRコボット for 応募対応)を連携する社内向けのシステム(以降はコボット連携システムと呼びます。)を12月にリリースしましたので、ご紹介させていただきます!

コボットとは

私達dipは労働を支える会社を目指しています。
バイトル関連求人サイトやはたらこねっとなどで企業様の採用広告を出し、採用業務を支援しています。
弊社ではこれらの求人サービス以外にも労働者を支える方法としてDXで労働者の作業を効率化して、労働者を支えようということを行っています。
最近ではさまざまなDX化が活発に行われていますが、
弊社では面接という業務を支えるサービスとして面接コボットHRコボット for 応募対応というサービスを開発しています。(以降はこれらのことをコボットと呼びます)
このコボットでは履歴書の送付であったり、面接の日程調整などを行うことができ、業務の効率化をすることができます。

課題

コボットには各種求人サービスの応募情報を取り込む機能があります。 この機能を使ってバイトル関連求人サイトから応募情報を取得して、コボットで応募情報を表示することができます。
これまでの構成としては5分おきに応募情報を取得していました。 (PULL型)
しかし、ありがたいことにコボットの契約数が増えていて、すべてのお客様の応募情報を取得するためにAPIのリクエスト数が増え、サーバ負荷やランニングコストの増大が顕著となっていました。
ランニングコストは年間にすると数千万円のコストになるのでかなりの痛手となっていました。 さすがにこの金額は大きすぎるのでランニングコストを削減したいということになりました。 そして、この課題を解決するために応募情報をバイトル関連求人サイト側からコボットへ送る(PUSH型)ようにするシステムを構築することになりました。

システム構成

システム構成は下記のようになっています。

システム構成

機能要件

機能としては4つ構築しました。

  • コボット連携システム利用登録機能
  • 当日分応募情報取得機能
  • 新規応募情報取得機能
  • コボット連携システム利用登録解除機能

今回は本サービスのメインの機能である新規応募情報取得機能の説明を行おうと思います。

新規応募情報取得機能

今回のシステムでの課題を解決するためのメインの機能となります。
新規応募情報送信時のシステム構成はこの部分です。

応募情報の構成
利用登録されている企業アカウントに対して新規で応募が発生した場合に利用する機能です。
システムの流れとしては下記のようになっています。

  • バイトル関連求人サイトからSNSへ応募情報を送信する
  • SNSからSQSへデータを送る
  • SQSから応募情報を取得するLambdaから応募情報を整形して、コボットで用意しているAPIへ応募情報を送信する

ランニングコストを抑えるため、サーバレスな構成としています。

技術スタック

本システムではランニングコストの削減ということが目的のひとつとしてありますので、サーバレスをテーマに技術を選定しました。
新規で応募が発生した場合にSNS、SQSを通じてLambdaから応募情報をコボットへ連携するときも応募発生時のみシステムが動いてコストが発生するという仕組みになっています。
コボットからのリクエストは要件としてAPIを構築する必要がありましたので、ECS上にAPIを構築していますが、ECSもFargate上に構築していますので、サーバレスに近い状態にしています。

本システムでは下記の技術スタックを使っています。

  • AWS
    • SNS
      • バイトル関連求人サイトから応募情報を受取る
    • SQS
      • SNSで受け取ったデータをキューとして使用
    • ECS on Fargate
      • 利用登録API
        • コボットが本システムを利用するための利用登録API
      • 1日の応募情報を取得するためのAPI
        • 要件として利用登録時当日の応募情報を取得
    • Lambda
      • 応募情報送信Lambda
        • キューに溜まった応募情報をコボットへ応募情報を連携
      • アカウント削除Lambda
        • キューに溜まったアカウント削除情報をコボットのアカウント削除APIを実行
        • コボット連携システムのトークンを削除
    • Codeシリーズ
      • CodePipelineを使用してdevopsを実現
  • RDS
    • 今回作成したサブシステムの周辺データを格納
  • Oracle
    • 現在のプロダクトで利用
  • Datadog
    • ログの監視
  • 使用言語
    • Go言語
      • Lambda、ECSすべてでGo言語を使用

成果

ランニングコスト

コボット連携システムを構築前のシステムでは5分おきに応募情報を取得する方式にすることで多くのリクエストをすることになるので年間で多額の費用がかかっていました。
それが、今回のコボット連携システムを構築することで年間で10分の1の削減ができました!
もともとのランニングコストがとても負担大きかったので、10分の1のインパクトは大きいですね!

応募取り込み時間

コボット連携システムを構築したことで応募情報の取得時間を短縮することができました。
システム構築前は5分おきにコボット側から応募情報を取得していたので、取得後すぐに発生した応募情報はコボットで確認することはできませんでした。
コボット連携システムを構築したことにより、新規で応募情報が発生したタイミングで取得できるようになったので、 この課題を解決できました。

最後に

12月に社内向けにリリースされたコボット連携システムの紹介をさせていただきました。
入社してから関わったシステム開発で初めてリリースを行ったので、ブログに書かせてもらいました。
やはり開発の初期から参画していたシステムがリリースされるととても嬉しいですね!