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
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
240
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
320
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
120
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
180
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
2k
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
68k
ブロックテーマ、WordPress でウェブサイトをつくるということ / 2026.02.07 Gifu WordPress Meetup
torounit
0
190
SREのプラクティスを用いた3領域同時 マネジメントへの挑戦 〜SRE・情シス・セキュリティを統合した チーム運営術〜
coconala_engineer
2
670
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
650
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
260
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
580
Featured
See All Featured
The browser strikes back
jonoalderson
0
390
Believing is Seeing
oripsolob
1
56
New Earth Scene 8
popppiees
1
1.5k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Google's AI Overviews - The New Search
badams
0
910
The Curious Case for Waylosing
cassininazir
0
240
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
110
Designing for Performance
lara
610
70k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
230
Documentation Writing (for coders)
carmenintech
77
5.3k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
380
Are puppies a ranking factor?
jonoalderson
1
2.7k
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