Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ポイント付与の非同期化 / Event Driven Point Assignment
Search
omo
September 12, 2022
Technology
440
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ポイント付与の非同期化 / Event Driven Point Assignment
omo
September 12, 2022
More Decks by omo
See All by omo
Kyash Micro Service Architecture
komotani
2
1.1k
Other Decks in Technology
See All in Technology
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
2
360
プロダクト価値を、 チームが使える判断軸に変える
vivion
0
130
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
310
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
550
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
2
460
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.4k
並行性の問題を防げ!実践トランザクション入門
occhi
0
280
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
140
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
2
430
SDDの運用にめげずに向き合った話
sansantech
PRO
1
140
今こそ知りたいAmplifyGen2
mkdev10
2
160
Execution in the Kingdom of Agents: Reflections on Abstraction and Complexity
bcantrill
0
880
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Music & Morning Musume
bryan
48
7.4k
Product Roadmaps are Hard
iamctodd
55
13k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
550
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
620
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Evolving SEO for Evolving Search Engines
ryanjones
0
310
Amusing Abliteration
ianozsvald
1
330
Embracing the Ebb and Flow
colly
88
5.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