meetup_20210608_kintai.pdf
by
Yusuke Konno(Rakus)
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
#RAKUSMeetup ©2021 RAKUS Co., Ltd. 新機能開発の アーキテクチャ選定 楽楽勤怠開発課 今野裕介
Slide 2
Slide 2 text
#RAKUSMeetup 今野裕介(こんのゆうすけ) ● 開発本部・第三開発部・楽楽勤怠開発課所属 ● バックエンドエンジニア ● 2020/7/1入社 ○ 前職ではレコメンドエンジンASPサービスの設計・開発・運用・ 保守を担当 ○ 現在は打刻機能をメインに新機能開発を担当 ● 趣味 ○ カメラ・城巡り
Slide 3
Slide 3 text
#RAKUSMeetup 楽楽勤怠の紹介 ● クラウド型勤怠管理サービスです ● 2020/10に初期リリース後、ほぼ毎月新機能リリース中!
Slide 4
Slide 4 text
#RAKUSMeetup ICカード打刻機能 ● 2021/2/16(火)にリリース ● 端末はPitTouchPro2を利用 ○ PCがなくても打刻が可能 ○ 工場や店舗など、PCが持ち込めない環境でも打刻が可能 ● 端末はラクスから販売したもののみ利用可能
Slide 5
Slide 5 text
#RAKUSMeetup PitTouchPro2の概要 ● 打刻(出退勤・休憩・外出)やカード登録削除が可能 ● リクエストはXHR Level2で行われている ○ 組み込みのSafariが内部で稼働している模様 ● NWに問題がある場合には打刻を再送する機能が存在する ○ 端末内部に打刻データを保存しておき、NWが再開すると再送する ● ICカードはFeliCa、Mifareに対応
Slide 6
Slide 6 text
#RAKUSMeetup PitTouchPro2外観
Slide 7
Slide 7 text
#RAKUSMeetup ICカード打刻の要件 ● PitTouchPro2端末による出勤打刻および退勤打刻ができる ● PitTouchPro2端末によるカード登録・削除ができる ○ 登録削除用に従業員照会も実施できる ● 楽楽勤怠がメンテナンス中の場合、打刻データが失われない ○ メンテ以外でも不慮の事故でデータが失われない
Slide 8
Slide 8 text
#RAKUSMeetup 打刻データの性質 ● エンドユーザーの行動ログの一つである ● データは失われてはいけない ○ 失われるとエンドユーザーは勤怠時刻申請が必要になる ○ 頻繁に失われていると楽楽勤怠への信頼性が下がる ○ データが失われないための機構が必要 ● 重複しても(大きな)問題がない ○ 同じ日時の打刻を何回繰り返しても、勤怠計算上は影響がない ○ 影響を受けるのはパフォーマンス面だけ
Slide 9
Slide 9 text
#RAKUSMeetup アーキテクチャ図 PitTouchPro2 打刻アプリ ケーション 楽楽勤怠 同期バッチ ① ④ ② ③ A B
Slide 10
Slide 10 text
#RAKUSMeetup RabbitMQ ● 打刻データの保存のために採用 ○ 社内での導入実績がある ○ 公式ドキュメントなど、情報量が豊富 ● バージョンは3.8系 ○ ErlangはZero-dependency Erlang RPM for RabbitMQの23系を採用 ● クラスター構成
Slide 11
Slide 11 text
#RAKUSMeetup Resilience4jの採用 ● Javaのフォールトトレラント用のライブラリ ● サーキットブレーカー、リトライ、流量制御、タイムアウトハンドリングなどができる ● 今回は以下を採用 ○ サーキットブレーカー ■ 打刻アプリケーション => 楽楽勤怠のAPI通信のみ(図中②) ○ リトライ ■ 楽楽勤怠API通信箇所(図中②およびB) ■ RabbitMQへのPublish(図中③)
Slide 12
Slide 12 text
#RAKUSMeetup Resilience4jの採用箇所 PitTouchPro2 打刻アプリ ケーション 楽楽勤怠 同期バッチ ① ④ ② ③ A B サーキットブレーカー+リトライ リトライのみ
Slide 13
Slide 13 text
#RAKUSMeetup やってみた感想 ● 実現すべき事自体はシンプル ● 事故った時の想定をどこまでやるかが大変 ○ RabbitMQの採用、リトライ、サーキットブレーカーの適用 ○ 異常系のテストが大変 ● 情報量の偏り ○ RabbitMQは公式ドキュメントや英語文献が豊富 ○ Resilience4jは公式のサンプルコードすら動かなくて辛い