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
Kyash Micro Service Architecture
Search
omo
April 18, 2022
Technology
2
1k
Kyash Micro Service Architecture
omo
April 18, 2022
Tweet
Share
More Decks by omo
See All by omo
ポイント付与の非同期化 / Event Driven Point Assignment
komotani
0
420
Other Decks in Technology
See All in Technology
アウトプットから始めるOSSコントリビューション 〜eslint-plugin-vueの場合〜 #vuefes
bengo4com
3
1.9k
Kotlinで型安全にバイテンポラルデータを扱いたい! ReladomoラッパーをAIと実装してみた話
itohiro73
3
130
serverless team topology
_kensh
3
250
Amazon Q Developer CLIをClaude Codeから使うためのベストプラクティスを考えてみた
dar_kuma_san
0
290
Open Table Format (OTF) が必要になった背景とその機能 (2025.10.28)
simosako
3
580
re:Invent 2025の見どころと便利アイテムをご紹介 / Highlights and Useful Items for re:Invent 2025
yuj1osm
0
520
ViteとTypeScriptのProject Referencesで 大規模モノレポのUIカタログのリリースサイクルを高速化する
shuta13
3
240
kotlin-lsp の開発開始に触発されて、Emacs で Kotlin 開発に挑戦した記録 / kotlin‑lsp as a Catalyst: My Journey to Kotlin Development in Emacs
nabeo
2
150
知覚とデザイン
rinchoku
1
700
CLIPでマルチモーダル画像検索 →とても良い
wm3
2
710
猫でもわかるAmazon Q Developer CLI 解体新書
kentapapa
1
220
AIエージェントによる業務効率化への飽くなき挑戦-AWS上の実開発事例から学んだ効果、現実そしてギャップ-
nasuvitz
5
1.6k
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Site-Speed That Sticks
csswizardry
13
940
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Bash Introduction
62gerente
615
210k
Code Reviewing Like a Champion
maltzj
526
40k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
How to Ace a Technical Interview
jacobian
280
24k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Automating Front-end Workflow
addyosmani
1371
200k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
680
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
22k
Transcript
Kyash TechTalk #2 - Serversideのシステム構成とアーキテクチャ 2022年4月18日 Kohei Omotani (@k_omotani) KyashのMicro
Service Architecture
2 01. はじめに 02. System overview 03. つらみ 04. まとめ
3 3 01. はじめに
4 自己紹介 - Omotani Kouhei - Twitter: @k_omotani - 2020年2月入社
- Kyashのサーバーサイドを広く触ってます - 携わった機能 - カテゴリー機能、共有口座機能、他 はじめに
5 関係ないけど宣伝 - 共有口座いいぞ〜! - 他の人を入れずに 目的別口座的な使い方 もできます! はじめに
6 話すこと - この後のLTやパネルディスカッションを理解しやすくできるようにKyashのサーバーサ イドのアーキテクチャ全体についてざっと話します - 「こういう試みをしてこんないい感じになったよ」系の話ではないです - 「こういう工夫してるよ/こういう辛みを抱えてるよ」な話です はじめに
7 7 02. System overview
8 システム全体図 - 結構ゴツい - 内部/外部との接続について 分けて話します System overview
pf-api Shared DB pf-lending Mobile app 9 Kyash内部の構成 - “platform-hoge”サービス群
- platform-apiがRest APIを提供し mobileからのアクセスを受け付ける - サービス間の通信は古いものは Rest API、比較的新しく作成したものは gRPCを用いている System overview SQS pf-lending-consumer DB - pf-payout DB pf-notification Push通知 pf-payment pf-payment pf-payment VisaNetなど
10 Kyash内部の構成 - マイクロサービスは業務の関心毎ごとに切り 分けられている - 大体 1 serviceに1 repository
- 決済周りの処理を行う platform-payment, 入 出金を管理するplatform-topupなど - Shared DBに繋ぐ部分をライブラリ化 - gRPCのproto定義やpub/subのメッセージ定 義を置いてるplatform-protoとかもある - 2022/04/14 現在で - Org配下に166repo - platformで絞ると75repo System overview
11 Kyash内部の構成(非同期処理周り) - 定期実行ジョブ的なものは ECS scheduled taskを使うことが多い - 秘伝のjobもあるが... -
Message Consumer - SQSにキューイングしそれをconsumeすることで非同期に処理している箇所も - この後のLTで話が出るかも? System overview
12 Kyash外部との接続について - 決済(Visa、QUICPay+)、銀行入出金、今すぐ入金、カード発行、 eKYC、etc. - 銀行入出金 - この後のLTで話が出ると思います System
overview
13 13 03. つらみ
14 Shared DB - これが一番デカいと思う - Kyashでは複数のサーバーから共通 のDBに接続している - 各サービス毎にDBユーザーを割り
振って接続可能なテーブルを管理し てる つらみ Service A Shared DB Service B Service C internal DB internal DB
15 Shared DB これにより起こった問題 - DB接続を伴う残高操作を行う処理をライブラリ化している。そのライブラリに修正を加えて追加 でshared DBのテーブルを見るようになった。権限付与漏れにより関連サービスがぶっ壊れた - 一度イベント関連でカード登録が爆増、
DB負荷が上がり決済にまで影響が出る Incidentに なった つらみ
16 Shared DB - でもこれのお陰で残高変動周りのトランザクション管理が楽に出来ている - 外部システムとの整合性を取るための試み等は既に実績あり - この後のejimaさんの話で聞けます 裏話
- Kyashでは過去にKyash Directという別基盤のシステムを構築 - その時はTry,Confirm,CancelのTCCパターンのメッセージ駆動でトランザクション管理を 行っていた - 登壇資料 - 残高処理周りのDB分割を進めようとしている つらみ
17 履歴データの処理 - 都度履歴のモデルを構築 - 履歴とはいうものの単純なイミュータブルなデータではないのが難しいところ - 決済系であればSDが来るタイミングでポイントが未確定から確定に - メモやカテゴリーなどの更新できるデータ
- Cacheやクエリの細かな見直しなどで頑張っている - EventSource/CQRSにしたい(個人的な願望) つらみ
18 18 04. まとめ
19 - 外部との接続が多いところが特徴 - 最近新しく作るサービスはSQSを使ったmessagingで耐障害性上げてるよ - DB分割を少しずつ進めているよ - 新規のマイクロサービスは専用 DBに
- やっぱりShared DBは辛いよ - 付随するライブラリ周りで問題発生しがち まとめ
Thank you 20