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
추천 API 최적화하기
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
RIDI
August 31, 2018
Technology
2.3k
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
추천 API 최적화하기
RIDI
August 31, 2018
More Decks by RIDI
See All by RIDI
원격 근무 팀 운영 경험 공유
ridi
0
2.4k
SVG Icon Design Guide
ridi
2
4.4k
빠르게 훑어보는 리디페이 백엔드 개발기
ridi
2
5.3k
Next.js는 정말 zero config였다.
ridi
0
2.2k
3일 걸릴 것 같던 구매목록 다운로드는 왜 3주가 걸렸을까?
ridi
0
510
원격으로 한 달 일해보니
ridi
0
1.6k
리디북스 앱에 S Pen Remote 연동하기
ridi
2
2.9k
UI 라이브러리 개발기
ridi
1
2.9k
테스트 환경 개선하기
ridi
8
3.7k
Other Decks in Technology
See All in Technology
事業課題から技術的負債に向き合う
sansantech
PRO
2
2.3k
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
360
おい、エージェントを使って終わらせろ
nwiizo
3
870
手を動かして実感する、Kiro が変える開発体験
inariku
0
210
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
120
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
160
AI時代、データエンジニアが一番おもろい
genshun9
0
690
LLMに渡さなかった仕事
nanaism
0
1.4k
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
4
710
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
2
1.5k
C#コードの結合を可視化する Roslyn解析による設計改善と リファクタリング判断
dora56
0
500
Kiro Meetup #8 Kiro アップデート (2026/3/21〜2026/9/24)
katzueno
1
160
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
410
First, design no harm
axbom
PRO
2
1.3k
The Curse of the Amulet
leimatthew05
3
15k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
430
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
710
Side Projects
sachag
456
43k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Typedesign – Prime Four
hannesfritz
42
3.2k
A Tale of Four Properties
chriscoyier
163
24k
Transcript
୶ୌ API ୭ച ೞӝ 2018֙ 8ਘ 31ੌ ਬള © RIDI
Corp.
1. ୶ୌ API ࣗѐ • Book-to-book ୶ୌ • Book-to-user ୶ୌ
• API ҳઑ 2. ୶ୌ API ୭ച ೞӝ • উੋ ࢲࡂਸ ਤೠ ࣗ ӝ • ୶ୌ ઁ৻ ؘఠ߬झ ܻ࠙ೞӝ • API दр ӝ 2 ݾର ୶ୌ API ୭ച ೞӝ
3 ܻ٣࠘झ Book-to-book ୶ୌ ୶ୌ API ࣗѐ
4 بࢲр ਬࢎب द ୶ୌ API ࣗѐ 0.11651 0.07987
5 بࢲр ਬࢎب ҅ ୶ୌ API ࣗѐ 1. ҳݒݾ۾ •
ଲ: ా۸ Ӗॳӝ • അ୍: ా۸ Ӗॳӝ, যڌѱ Ѫੋо • ࢳ: যڌѱ Ѫੋо 2. بࢲӝળ ҳݒݾ۾ • ా۸ Ӗॳӝ: ଲ, അ୍ • যڌѱ Ѫੋо: അ୍, ࢳ 3. ਬࢎب (ా۸, যڌѱ) = |{അ୍}| / |{ଲ, അ୍, ࢳ}| ≈ 0.33 ?
6 ܻ٣࠘झ Book-to-user ୶ୌ ୶ୌ API ࣗѐ
بࢲр ਬࢎب৬ ਬ ۽ੌਸ ࢎਊ • അח ҳݒ৬ ୭Ӕ ઑഥೠ
بࢲٜ۽ ۽ੌ ࢤࢿ • ۽ੌҗ ਬࢎبо ֫ بࢲٜਸ ୶ୌ 7 ܻ٣࠘झ Book-to-user ਗܻ ୶ୌ API ࣗѐ
recommend-api data-api.ridibooks.com Classic Load Balancer Store Web Server Client Store
Web Elasticache (Redis) proxy-azure.data.ridi.io hbase.data.ridi.io HAProxy 192.168.0.200:33309 HAProxy 192.168.0.200:33319 HAProxy aurora-db.data.ridi.io aurora-db.ro.data.ridi.io Aurora HBase Cluster HTTP Request Thrift RPC MySQL CRUD Cache MySQL Write MySQL Read Plain Requests Load Balancing ridibooks.com HTTP Request 8 API ҳઑ ୶ୌ API ࣗѐ
1. উੋ ࢲࡂਸ ਤೠ ࣗ ӝ 2. ୶ୌ ઁ৻ ؘఠ߬झ
ܻ࠙ೞӝ 3. API दр ӝ 9 ୶ୌ API ୭ച ೞӝ ୶ୌ API ୭ച ೞӝ
উੋ ࢲࡂਸ ਤೠ ࣗ ӝ
11 ୶ୌ ؘఠ উੋ ࢲࡂਸ ਤೠ ࣗ ӝ • Bulk
write৬ real-time read • ড 150݅Ѥ book-to-book ୶ୌҗ ড 90݅Ѥ book-to-user ୶ୌਸ पदрਵ۽ ࢲࡂೞҊ ח ࣗী স۽٘ • Key-value • Key: b_id/u_idx • Value: بࢲ ୶ୌ ܻझ JSON String
After • Scala, Python • Multi-machine batch • ড 2दр
• MongoDBী স۽٘ Before • C++ • Single-machine batch • ড 10दр • MariaDBী স۽٘ 12 ۞झఠ بੑ /റ উੋ ࢲࡂਸ ਤೠ ࣗ ӝ
13 Bulk Loadী ஂডೠ MongoDB উੋ ࢲࡂਸ ਤೠ ࣗ ӝ
• ড 1.6রѐ rowܳ bulk loadೡ ٸ, load average ҃Ҋ ߊࢤ • Bulk loadܳ ೡ ٸ݅ ۽ࣁझ ࣻܳ ৈࢲ प೯ => ৈ ޙઁ ߊࢤ!
14 HBase بੑ উੋ ࢲࡂਸ ਤೠ ࣗ ӝ 1. Bulk
loadী 2. ೞن ীदझమীࢲ ࢎਊ оמ • औѱ بੑೡ ࣻ • ഛࢿ ڪযթ
15 ࠛউೠ HBase উੋ ࢲࡂਸ ਤೠ ࣗ ӝ •
दр оՔঀ ח അ࢚ਸ ߊѼ
16 উੋ ࢲࡂਸ ਤೠ ࣗ ӝ • HBase ࢲ࠺झܳ प೯ೞ
ঋח machineীࢲ݅ ܲ batch স प೯غب۾ ࢸ 1. ܲ Batch স ೱਸ ߉Ҋ ঋਸө? => ৈ ޙઁ ߊࢤ! ޙઁ ױ 1
17 উੋ ࢲࡂਸ ਤೠ ࣗ ӝ • VCNC৬ IBM о٘
١ਸ ଵҊೞৈ ౚ: 2. HBase ౚ ޙઁ ইקө? => ઑӘ աইӟ ೮݅, ৈ ޙઁ ߊࢤ! ޙઁ ױ 2 * http://engineering.vcnc.co.kr/2013/04/hbase-configuration/ * https://www.ibm.com/support/knowledgecenter/en/SSPT3X_4.2.0/ com.ibm.swg.im.infosphere.biginsights.analyze.doc/doc/bigsql_TuneHbase.html ড 20ѐ ۄఠܳ Ѩషೠ റ, 5ѐ ۄఠܳ ౚ. ) ৻ࠗ ਃਸ ܻೞח ؘ ࢎਊೡ Thread ࣻܳ ૐо
18 ޙઁ ױ 3 উੋ ࢲࡂਸ ਤೠ ࣗ ӝ 3.
HappyBase (Python-HBase connector) ޙઁо ইקө? • Locust۽ ۽٘ పझܳ ೮ਸ ٸ, गо হ • HappyBase৬ Django৬ ഐജࢿ ब => ೞ݅, Thrift RPC ࢲߡীࢲ response time ۽Ӓ ߂ ठ۽ ௪ܻ ࠙ࢳ ١ਸ ೡ ࣻ হ.
19 1. ElastiCache + Redis উੋ ࢲࡂਸ ਤೠ ࣗ ӝ
ҙܻഋ ੋ ݫݽܻ ؘఠ झషয ࢲ࠺झ • • Key-value ߑधী • ࡅܲ ࣘب • ױ • ࠺ਊ; DB ਊ݅ఀ ݫݽܻо ਃ • ӝ: 60GB (୭ࣗ cache.m4.4xlarge ਃ) => 1֙ ডী $3100. replica setਸ ҳࢿೞҊ, ਊ טযաݶ…?
20 2. DynamoDB উੋ ࢲࡂਸ ਤೠ ࣗ ӝ ৮߷ೞѱ ҙܻغח
NoSQL ؘఠ߬झ ࢲ࠺झ • • Key-value ߑधী • ױ • ࠺ਊ; ೠ ۨ٘ ӝо ਸ ٸ݅ ਬܻ • ӝ: 60GB (ೠ ۨ٘ ӝ: 100KB) • ੍ӝ/ॳӝ പࣻ: ୡ 40/100ഥ => ೠ ׳ী $5782.80
21 3. Elasticsearch উੋ ࢲࡂਸ ਤೠ ࣗ ӝ ࠙ഋ RESTful
Ѩ࢝ ߂ ࠙ࢳ ূ • • Ѩ࢝ APIীࢲ উਵ۽ ੜ ࢎਊೞҊ • ױ • Bulk loadী ೞ ঋ; load average ޙઁ ߊࢤ • Key-value ߑधী ೞ ঋ
द MongoDB۽… উੋ ࢲࡂਸ ਤೠ ࣗ ӝ • Үള: ܻ
࢚ടী MongoDBо ઁੌ ੜ ݏח Ѫ э. • HBaseࠁ উੋ ࢲࡂ • ࠺Ү ۴ೠ ࠺ਊ (ElastiCache + Redis, DynamoDB, …) • Bulk loadೡ ٸ ޙઁ… • Bulk loadೡ ٸ݃ ࢜ instance۽ Үೞ! 22
1. উੋ ࢲࡂਸ ਤೠ ࣗ ӝ 2. ୶ୌ ઁ৻ ؘఠ߬झ
ܻ࠙ೞӝ 3. API दр ӝ 23 ୶ୌ API ୭ച ೞӝ ୶ୌ API ୭ച ೞӝ
୶ୌ ઁ৻ ؘఠ߬झ ܻ࠙ೞӝ
25 ୶ୌ ઁ৻ ؘఠ߬झ ܻ࠙ೞӝ AI ୶ୌ ୶ୌ ઁ৻
26 ୶ୌ ઁ৻ ؘఠ߬झ ܻ࠙ೞӝ DB ҳઑ (୶ୌ ઑഥद)
27 ୶ୌ ઁ৻ ؘఠ߬झ ܻ࠙ೞӝ DB ҳઑ (୶ୌઁ৻ ١۾द) Single
Point of Failure!!
SPoF ೱ ୶ୌ ઁ৻ ؘఠ߬झ ܻ࠙ೞӝ • ؘఠࣃఠ ਗ
গ۽ ੋ೧ ؘఠ ݃झఠ DB • DB ࢲߡ ࠂҳदө ୶ୌઁ৻ ӝמ ࢎਊࠛо • DB ࢲߡ ݫݽܻ ૐࢸਸ ਤ೧ ࢲߡ ࠗ ਃ • ࠗೞח زউ ୶ୌઁ৻ ӝמ ࢎਊࠛо
SPoF ೱ ୶ୌ ઁ৻ ؘఠ߬झ ܻ࠙ೞӝ ୶ୌઁ৻ ప࠶݅ ࡅݶ...
ࢿѺ ܲ ప࠶ٜ ҕઓ 30 ୶ୌ ઁ৻ ؘఠ߬झ ܻ࠙ೞӝ •
୶ୌઁ৻ ప࠶ • 24दр ղղ INSERT ߊࢤ • Ҋё ࢲ࠺झ৬ ೠ ҙ۲ • ా҅ ప࠶ • ࢜߷ ߓ प೯दী݅ INSERT ߊࢤ • ഥࢎ ղ ࢲ࠺झী݅ ҙ۲ => ߹ب ੋۄী فחѱ જѷ!
୶ୌઁ৻ ప࠶ਸ Aurora۽ ܻ࠙ೞӝ۽ Ѿ 31 ୶ୌ ઁ৻ ؘఠ߬झ ܻ࠙ೞӝ
• ҙܻഋ ࢲ࠺झ ಞܻೣ • ഛࢿ, উࢿ ഛࠁ • 10ms ݅ ܻܻா࣌ ۑ
Aurora ܻ࠙ റ 32 ୶ୌ ઁ৻ ؘఠ߬झ ܻ࠙ೞӝ • ӝઓ
DB ࢲߡח ઁٚ ࠗ оמ • ୶ୌઁ৻ ӝמী Րӣহ ݫݽܻ ૐࢸী ࢿҕ • DB উࢿ ૐо • ܲ ࢲ࠺झী ೱ߉ ঋ • ݃झఠо ইצ ठۨ࠳ীࢲ ੍ب۾ ߸҃ • যٚ ܻܻா࣌ ۑ ؋࠙ী оמ
թ ࣼઁ 33 ୶ୌ ઁ৻ ؘఠ߬झ ܻ࠙ೞӝ • Auroraীח JOINী
ਃೠ ప࠶ হ • (അ) যܻா࣌ ױ҅ীࢲ JOIN ࣻ೯ • ܻܻா࣌ ࢸ • APIܳ ࢎਊೠ ӝੋ সؘ
1. উੋ ࢲࡂਸ ਤೠ ࣗ ӝ 2. ୶ୌ ઁ৻ ؘఠ߬झ
ܻ࠙ೞӝ 3. API दр ӝ 34 ୶ୌ API ୭ച ೞӝ ୶ୌ API ୭ച ೞӝ
API दр ӝ
36 ޙઁ ੋध API दр ӝ
37 ޙઁ ഛੋ API दр ӝ 2׳ р 3ୡ ࢚
दрਸ о AI ୶ୌ API ਃ = ড 4݅Ѥ ( ਃ 0.1359%)
38 ޙઁ ױ 1 API दр ӝ Django ORM ࢤࢿೠ
ҳݒݾ۾ ઑഥ ௪ܻ: EXPLAIN SELECT `tb_user_book`.`pk_id`, `tb_user_book`.`u_id`,… => tb_user_book ઑഥо बػ.
39 ޙઁ ױ 2 API दр ӝ • Ѩૐ •
ؘఠ MariaDBо ಣࣗ ې (࠙ ୭ 600ߣ ઑഥ) ਸ Ѽ٣ח ഛੋ • Ѿҗ • ҳݒݾ۾ ઑഥীࢲ ठ۽ ௪ܻ ߊࢤ! • ؘఠ DBח நएо ѱ غҊ “ࢲ DBীח ۠ ޙઁо হ؍ Ѫ эؘ…?”
40 API दр ӝ ୶ୌ APIীࢲ ҳݒݾ۾ ઑഥܳ হগ!
ࢎਊ ۽ੌ - ҳݒ - ୭Ӕ ઑഥ 41 API दр
ӝ بࢲр ਬࢎب Batch API AI ୶ୌ ୶ୌ ܻझ ࢤࢿ җ
ࢎਊ ۽ੌ - ҳݒ - ୭Ӕ ઑഥ 42 API दр
ӝ بࢲр ਬࢎب Batch API AI ୶ୌ ୶ୌ ܻझ ࢤࢿ җ
43 ҳݒݾ۾ ӝ߈ ୶ୌ ܻझܳ ܻ ҅ೞ! API दр ӝ
بࢲр ਬࢎب Batch API ҳݒ ۽ੌ ҳݒӝ߈ ୶ୌ ઑഥ ۽ੌ ઑഥӝ߈ ୶ୌ AI ୶ୌ
44 ೧Ѿ଼ Ѩૐ API दр ӝ 3ୡ ࢚ दрਸ о
AI ୶ୌ API ਃ = ѐࢶ 1/8 ( ਃ 0.0176%) * MongoDBܳ ࢎਊೞݶ ࠗ࠙ب ѐࢶؼ Ѫਸ ࢚פ.
45 Ѿۿ • ו՛ • ݣ૽ ੜ ࢲࡂೞח Ѥ
য۰ ੌ • ݽܰҊ ࢎਊೞח Ѫҗ ঌҊ ࢎਊೞח Ѫ ܰ • খਵ۽ ೡ ੌ • ؘఠ ࢎ౭झ ࡳӝ • അ ࢚ടী উೞӝ ঋӝ ୶ୌ API ୭ച ೞӝ
46 THANK YOU хࢎפ