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
870
20210901_lt.pdf
yusukekonnorakus
0
17
Other Decks in Programming
See All in Programming
Create a website using Spatial Web
akkeylab
0
310
deno-redisの紹介とJSRパッケージの運用について (toranoana.deno #21)
uki00a
0
150
エンジニア向け採用ピッチ資料
inusan
0
160
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
440
ReadMoreTextView
fornewid
1
480
エラーって何種類あるの?
kajitack
5
310
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
270
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
20
3.7k
VS Code Update for GitHub Copilot
74th
1
410
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
110
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
2
280
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
220
Featured
See All Featured
Code Review Best Practice
trishagee
68
18k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.8k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
GitHub's CSS Performance
jonrohan
1031
460k
Fireside Chat
paigeccino
37
3.5k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Documentation Writing (for coders)
carmenintech
72
4.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Producing Creativity
orderedlist
PRO
346
40k
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は公式のサンプルコードすら動かなくて辛い