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
950
20210901_lt.pdf
yusukekonnorakus
0
17
Other Decks in Programming
See All in Programming
Reading Rails 1.0 Source Code
okuramasafumi
0
250
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
230
時間軸から考えるTerraformを使う理由と留意点
fufuhu
16
4.8k
Swift Updates - Learn Languages 2025
koher
2
510
デザイナーが Androidエンジニアに 挑戦してみた
874wokiite
0
550
はじめてのMaterial3 Expressive
ym223
2
900
AIを活用し、今後に備えるための技術知識 / Basic Knowledge to Utilize AI
kishida
22
5.9k
MCPでVibe Working。そして、結局はContext Eng(略)/ Working with Vibe on MCP And Context Eng
rkaga
5
2.3k
OSS開発者という働き方
andpad
5
1.7k
チームのテスト力を鍛える
goyoki
3
930
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
190
アセットのコンパイルについて
ojun9
0
130
Featured
See All Featured
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
The Pragmatic Product Professional
lauravandoore
36
6.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Git: the NoSQL Database
bkeepers
PRO
431
66k
It's Worth the Effort
3n
187
28k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
Writing Fast Ruby
sferik
628
62k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
The Power of CSS Pseudo Elements
geoffreycrofte
77
6k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
530
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は公式のサンプルコードすら動かなくて辛い