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
ポイント付与の非同期化 / Event Driven Point Assignment
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
omo
September 12, 2022
Technology
0
420
ポイント付与の非同期化 / Event Driven Point Assignment
omo
September 12, 2022
Tweet
Share
More Decks by omo
See All by omo
Kyash Micro Service Architecture
komotani
2
1k
Other Decks in Technology
See All in Technology
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
110
変化するコーディングエージェントとの現実的な付き合い方 〜Cursor安定択説と、ツールに依存しない「資産」〜
empitsu
4
1.4k
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
150
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
0
120
【Oracle Cloud ウェビナー】[Oracle AI Database + AWS] Oracle Database@AWSで広がるクラウドの新たな選択肢とAI時代のデータ戦略
oracle4engineer
PRO
1
130
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.8k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.8k
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
13k
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
440
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.3k
Agile Leadership Summit Keynote 2026
m_seki
1
580
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
130
Featured
See All Featured
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
320
Skip the Path - Find Your Career Trail
mkilby
0
54
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
910
Testing 201, or: Great Expectations
jmmastey
46
8k
Mind Mapping
helmedeiros
PRO
0
80
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Building the Perfect Custom Keyboard
takai
2
680
How to Think Like a Performance Engineer
csswizardry
28
2.4k
A better future with KSS
kneath
240
18k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Transcript
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL ©2022 Kyash Inc. PROPRIETARY
& CONFIDENTIAL ポイント付与の非同期化 メッセージング基盤を用いたマイクロサービス連携 2022/09/12 Omotani Kouhei
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 2 本日の 流れ 1.
自己紹介 2. 背景 3. 構成変更の方針 4. 展望 5. 最後に Today's Flow
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 自己紹介 - Omotani Kouhei
- Twitter: @k_omotani - KyashID: @komotani - 2020年2月入社 - 携わった機能 - カテゴリー機能、共有口座機能、他 (「面白かったら投げ銭お願いします」をやりたかったのでチャレンジ) 3
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 4 本日の 流れ 1.
自己紹介 2. 背景 3. 構成変更の方針 4. 展望 5. 最後に Today's Flow
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 背景 先にちょっとKyashリワードの宣伝 「お買い物」タブを押してもらうと色々なお店が出てきます。 ここからお買い物をしていただくとKyashポイントとして
還元されるのでぜひ使ってみてください! Kyashリワード 5
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 背景 Kyashポイントについて 決済、Kyashリワード、友達紹介特典など 特定の条件を満たすと付与される。
決済の場合、決済時(オーソリが来たタイミング)に 金額に応じて獲得予定ポイントが付与される。 売り上げ確定時(SalesDraftが来たタイミング)に ポイントが確定する。 6
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 背景 Kyashの決済処理では決済による残高変動とポイント付与などが一つのトランザクションで処理されている。 トランザクション自体は別れているが決済後のPush通知サービスへのリクエストやお知らせの作成なども同一のサービス で行っている。
これによりポイント付与処理中に何かしら問題が起きると決済自体が失敗してしまう。 7
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 背景 Kyashでは決済のルートとしてVisaとQUICPay+が存在する。 そもそもの電文が来るルートが違い、別々のサービスとして存在している。 他にもKyashリワードや、招待特典などさまざまな経路でポイントがつく。
ポイントの実体は共有データベース上のテーブルに入っていてそれぞれのサービスが同じDBに書き込む形になっている。 8
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 背景 実装レベルだとポイント処理周りはライブラリとして切り出されており、 各Repositoryがそのライブラリ経由でDBにアクセスするようにはなっている Kyashとしては各サービスに閉じているデータソースは独自DBして切り出そうとしており、
この状況は大きな隔たりになっている。 9
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 背景 課題 - ポイント付与処理を複数サービスに書かないといけない
- DB分割したい(できるような道筋が欲しい) - ポイント付与で転けた場合決済がコケる ←金融系事業者として一番大事 10
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 11 本日の 流れ 1.
自己紹介 2. 背景 3. 構成変更の方針 4. 展望 5. 最後に Today's Flow
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 課題 - ポイント付与処理を複数サービスに書かないといけない -
DB分割したい(できるような道筋が欲しい) - ポイント付与で転けた場合決済がコケる →複数サービスからの同期的な共有DBへの書き込みをやめる 構成変更の方針 12
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 13 複数サービスからの 同期的な共有DB書き込み ↓
Event Drivenな非同期化
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 複数サービスから同期的な共有DBへの書き込み→AWS SNS/SQSを用いたEvent Drivenな非同期化 「Visaで決済を行った」や「QUICPay+で決済を行った」のようなイベントをmessageとしてSNSに投げる。
ポイント付与サービスを立てそこがconsumerとしてmessageを食いポイントを付与する。 構成変更の方針 14
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL なぜSNSを挟んでいるのか? →複数サービスへのfanoutを想定。 「決済時にPush通知/emailを送信する」のような機能を実現したい場合、 上流のサービス全てに同じ実装を追加する必要があった。この基盤に乗るとConsumerを追加するだけでOK。
→ Message Bus Pattern 構成変更の方針 15
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 当初fanoutのためにEvent Bridgeを考えていた。 - Eventbridge経由だとMessage
Attributeを送ることが今の所できない(要望は出してる) - 柔軟にペイロードを操作したい/ルーティングをきめ細やかに実施したいならEventBridge - 高速に処理したいならSNS 失敗したメッセージの再送はDLQからの積み直しで可能。 構成変更の方針 16
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL ちなみに... Kyashが昔開発していたtoBサービスのKyash Directでも SNS/SQSを用いたEvent
Drivenのシステムを構築していた。 (さらにevent sourcingとかもやっていて中々尖っていましたが) ↓面白い資料なのでぜひに ウォレットアプリKyashの先 〜 Kyash Directのアーキテクチャ 構成変更の方針 17
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 18 本日の 流れ 1.
自己紹介 2. 背景 3. 構成変更の方針 4. 展望 5. 最後に Today's Flow
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 展望 - 現状ポイント付与の全ての処理がこの仕組みに移行しているわけではない -
順次移行予定 - DB分割はできていない - consumerが共有DBのテーブルをみてる状態 - 完全にポイント付与処理の移行ができればDBを切り出すことは可能になる - 非同期でも問題ない処理に関してはこの基盤に乗ることで後続の処理を気にせずに実装できる - ポイント付与に限らない - 例えばアカウント作成時に期限付き残高を付与しているがこれも移行できそう - 直近としては通知周りを移行予定 - これによりコレオグラフィーなマイクロサービスが実現できる 19
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 20 本日の 流れ 1.
自己紹介 2. 背景 3. 構成変更の方針 4. 展望 5. 最後に Today's Flow
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL 21 Kyashではメンバーを絶賛募集中です!!! 少しでも興味があるという方は カジュアル面談もやっているので
ガンガン応募してください!! よろしくお願いします!! →Kyashエンジニアの採用面接ガイド
©2022 Kyash Inc. PROPRIETARY & CONFIDENTIAL ©2022 Kyash Inc. PROPRIETARY
& CONFIDENTIAL Thank you 2022.09.12 Omotani Kouhei 22