次世代型・採用管理システム Wantedly Hire ウォンテッドリー・ハイアー
「Wantedly Hire(ウォンテッドリー・ハイアー)」は、柔軟に設計できるテンプレや選考プロセス、自動日程調整、レポート、アプリ連携などを搭載した、次世代型採用管理システムです。プロセスの半自動化や、的確な分析で、採用を成功させます。
https://hire.wantedly.com/
Photo by erica steeves on Unsplash
こんにちは、ウォンテッドリーのEnablingチームでバックエンドエンジニアをしている冨永(@kou_tominaga)です。Enablingチームでは技術的な取り組みを社外にも発信すべく、週替わりで技術ブログをリレー形式で執筆する事となりました。この技術ブログは第1回目の投稿です。
採用管理システムのWantedly Hireにメール受信機能を実装しました。メール受信は一見単純そうに見えますが、信頼性や安全性を考慮すると様々な検討事項があります。
この記事を通して、メール受信機能を実装する際の設計判断や考慮点について理解を深めていただければ幸いです。特に、AWSのSES(Simple Email Service)やSQS(Simple Queue Service)を使ったシステム設計に興味がある方に参考になる内容となっています。
はじめに
背景
課題
やったこと(取り組み・改善内容)
システム設計
設計上の意思決定
ロングポーリングの実装
メッセージの重複排除
監視設計
結果
まとめ
Wantedly Hireは採用活動を効率化するためのシステムで、候補者と採用担当者のコミュニケーションを円滑にする機能を提供しています。
これまで、システムから候補者へのメール送信機能はありましたが、候補者からの返信メールはメールクライアントで確認する必要がありました。「候補者とのやり取りを一箇所で完結させたい」という要望を寄せられていました。そこで、候補者が送信したメールを以下画像のようにWeb画面上で確認できる機能を追加することになりました。
メール受信機能を実装するにあたり、以下のような課題がありました。
また、実装方法についても以下の検討が必要でした。
メール受信機能の実装にあたり、以下のAWSサービスを組み合わせたアーキテクチャを採用しました。以下フローはとなります。
シーケンス図にすると以下になります。
実装にあたり、いくつかの重要な意思決定がありました。
メール処理の失敗を検知するため以下の監視を実装しました。
SQSからメッセージを受け取るために、ロングポーリングを実装しました。ロングポーリングは専用のワーカープロセスで実行され以下の特徴があります。
SQSはat-least-once配信を保証するため、同じメッセージが複数回配信される可能性があります。これに対処するためメールのメッセージIDを保存して、処理時に確認する方法で冪等性を確保しました。
メール受信機能の監視として以下設定をしました。
メール受信機能の実装により以下のような成果が得られました。
メール受信機能の実装は一見シンプルに思えますが、信頼性・セキュリティ・監視など、さまざまな観点から設計を検討する必要があります。本記事が、同様の機能を検討・実装される際の参考になれば幸いです。