Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
meetup_20210608_kintai.pdf
Search
Yusuke Konno(Rakus)
June 10, 2021
Programming
0
1.4k
meetup_20210608_kintai.pdf
RAKUS Meetup発表資料
https://rakus.connpass.com/event/211947/
Yusuke Konno(Rakus)
June 10, 2021
Tweet
Share
More Decks by Yusuke Konno(Rakus)
See All by Yusuke Konno(Rakus)
jjug_ccc_fall_ykonno.pdf
yusukekonnorakus
0
940
20210901_lt.pdf
yusukekonnorakus
0
17
Other Decks in Programming
See All in Programming
OSS開発者という働き方
andpad
5
1.6k
時間軸から考えるTerraformを使う理由と留意点
fufuhu
7
1k
JSONataを使ってみよう Step Functionsが楽しくなる実践テクニック #devio2025
dafujii
0
210
自作OSでDOOMを動かしてみた
zakki0925224
1
1.4k
The state patternの実践 個人開発で培ったpractice集
miyanokomiya
0
150
20250808_AIAgent勉強会_ClaudeCodeデータ分析の実運用〜競馬を題材に回収率100%の先を目指すメソッドとは〜
kkakeru
0
220
AI OCR API on Lambdaを Datadogで可視化してみた
nealle
0
220
未来を拓くAI技術〜エージェント開発とAI駆動開発〜
leveragestech
2
200
AI時代のドメイン駆動設計-DDD実践におけるAI活用のあり方 / ddd-in-ai-era
minodriven
25
9.5k
More Approvers for Greater OSS and Japan Community
tkikuc
1
100
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
290
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
390
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
9
570
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Building Adaptive Systems
keathley
43
2.7k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Scaling GitHub
holman
463
140k
Statistics for Hackers
jakevdp
799
220k
Visualization
eitanlees
147
16k
Transcript
#RAKUSMeetup ©2021 RAKUS Co., Ltd. 新機能開発の アーキテクチャ選定 楽楽勤怠開発課 今野裕介
#RAKUSMeetup 今野裕介(こんのゆうすけ) • 開発本部・第三開発部・楽楽勤怠開発課所属 • バックエンドエンジニア • 2020/7/1入社 ◦ 前職ではレコメンドエンジンASPサービスの設計・開発・運用・
保守を担当 ◦ 現在は打刻機能をメインに新機能開発を担当 • 趣味 ◦ カメラ・城巡り
#RAKUSMeetup 楽楽勤怠の紹介 • クラウド型勤怠管理サービスです • 2020/10に初期リリース後、ほぼ毎月新機能リリース中!
#RAKUSMeetup ICカード打刻機能 • 2021/2/16(火)にリリース • 端末はPitTouchPro2を利用 ◦ PCがなくても打刻が可能 ◦ 工場や店舗など、PCが持ち込めない環境でも打刻が可能
• 端末はラクスから販売したもののみ利用可能
#RAKUSMeetup PitTouchPro2の概要 • 打刻(出退勤・休憩・外出)やカード登録削除が可能 • リクエストはXHR Level2で行われている ◦ 組み込みのSafariが内部で稼働している模様 •
NWに問題がある場合には打刻を再送する機能が存在する ◦ 端末内部に打刻データを保存しておき、NWが再開すると再送する • ICカードはFeliCa、Mifareに対応
#RAKUSMeetup PitTouchPro2外観
#RAKUSMeetup ICカード打刻の要件 • PitTouchPro2端末による出勤打刻および退勤打刻ができる • PitTouchPro2端末によるカード登録・削除ができる ◦ 登録削除用に従業員照会も実施できる • 楽楽勤怠がメンテナンス中の場合、打刻データが失われない
◦ メンテ以外でも不慮の事故でデータが失われない
#RAKUSMeetup 打刻データの性質 • エンドユーザーの行動ログの一つである • データは失われてはいけない ◦ 失われるとエンドユーザーは勤怠時刻申請が必要になる ◦ 頻繁に失われていると楽楽勤怠への信頼性が下がる
◦ データが失われないための機構が必要 • 重複しても(大きな)問題がない ◦ 同じ日時の打刻を何回繰り返しても、勤怠計算上は影響がない ◦ 影響を受けるのはパフォーマンス面だけ
#RAKUSMeetup アーキテクチャ図 PitTouchPro2 打刻アプリ ケーション 楽楽勤怠 同期バッチ ① ④ ②
③ A B
#RAKUSMeetup RabbitMQ • 打刻データの保存のために採用 ◦ 社内での導入実績がある ◦ 公式ドキュメントなど、情報量が豊富 • バージョンは3.8系
◦ ErlangはZero-dependency Erlang RPM for RabbitMQの23系を採用 • クラスター構成
#RAKUSMeetup Resilience4jの採用 • Javaのフォールトトレラント用のライブラリ • サーキットブレーカー、リトライ、流量制御、タイムアウトハンドリングなどができる • 今回は以下を採用 ◦ サーキットブレーカー
▪ 打刻アプリケーション => 楽楽勤怠のAPI通信のみ(図中②) ◦ リトライ ▪ 楽楽勤怠API通信箇所(図中②およびB) ▪ RabbitMQへのPublish(図中③)
#RAKUSMeetup Resilience4jの採用箇所 PitTouchPro2 打刻アプリ ケーション 楽楽勤怠 同期バッチ ① ④ ②
③ A B サーキットブレーカー+リトライ リトライのみ
#RAKUSMeetup やってみた感想 • 実現すべき事自体はシンプル • 事故った時の想定をどこまでやるかが大変 ◦ RabbitMQの採用、リトライ、サーキットブレーカーの適用 ◦ 異常系のテストが大変
• 情報量の偏り ◦ RabbitMQは公式ドキュメントや英語文献が豊富 ◦ Resilience4jは公式のサンプルコードすら動かなくて辛い