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
高速なシステムを作る方法
Search
emuaki
March 27, 2016
Technology
10
8.5k
高速なシステムを作る方法
NewsPicksの広告配信システム(アドサーバー)を構築した際に高速に処理するためにアーキテクチャや設計上工夫したポイントの説明資料です。
emuaki
March 27, 2016
Tweet
Share
Other Decks in Technology
See All in Technology
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
~Everything as Codeを諦めない~ 後からCDK
mu7889yoon
3
500
生成AIと余白 〜開発スピードが向上した今、何に向き合う?〜
kakehashi
PRO
0
160
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
210
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
610
Claude_CodeでSEOを最適化する_AI_Ops_Community_Vol.2__マーケティングx_AIはここまで進化した.pdf
riku_423
2
610
OpenShiftでllm-dを動かそう!
jpishikawa
0
140
Claude Code for NOT Programming
kawaguti
PRO
1
100
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
210
Oracle AI Database移行・アップグレード勉強会 - RAT活用編
oracle4engineer
PRO
0
110
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
320
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
760
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
300
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.2k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
330
The Invisible Side of Design
smashingmag
302
51k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
How to Ace a Technical Interview
jacobian
281
24k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Un-Boring Meetings
codingconduct
0
200
Transcript
ߴͳγεςϜΛ ߴʹ࡞ͬͨ ਿӜਖ਼໌
NewsPicksͱ
ࠂ৴γεςϜͰߦ͍ͬͯΔ͜ͱ ࠂओ Ϣʔβʔ ສ ࠂ৴ γεςϜ 広告効果・利益・ユーザー体験の バランスをとりながら最適化 /FXT1JDLT ܝࡌ
ࠂ৴Ͱߦ͍ͬͯΔ͜ͱ ɾࠂΩϟϯϖʔϯͷܝࡌظؒνΣοΫ ɾࠂΩϟϯϖʔϯͷ༧ࢉνΣοΫ ɾ༗ޮɺແޮϑϥάఆ ɾࠂจͷࠂࢦఆɾΧςΰϦࢦఆνΣοΫ ɾ࠷ೖࡳֹͷνΣοΫ ɾϑϦʔΫΤϯγʔͷνΣοΫ ɾೖࡳՁ֨ͷൺֱ $1$จͷೖࡳՁ֨Λ$1.ࢉ ηΧϯυϓϥΠεΦʔΫγϣϯํࣜʹΑΔམࡳՁ֨ܭࢉ
ɾೖࡳ݁Ռͷه ۃ Ί ͯ ͍ ࣌ ؒ
ฏۉϨΠςϯγ 平均レイテンシは2ms - 5ms
ϨΠςϯγͷ҆ NTҎ্ Կ͔͓͔͍͠ NT Կߟ͑ͳ࣮ͯ͘ݱͰ͖Δ NT ϓϩϑΣογϣφϧͷඪ NT ͕ඞཁ NT
൚༻04ͷݶք NT ϦΞϧλΠϜ04'1("ͳͲͷॿ͚͕ඞཁ
Ͳ͏ͬͯߴԽͤ͞Δͷ͔ ͍ݪҼ*0ɻ*0Λগͳ͘͢ΕߴԽ͢Δɻ ɾ%#ΞΫηε ɾϑΝΠϧΞΫηε ɾωοτϫʔΫΞΫηε సૹ.#ඵ ϝϞϦ 44% )%%
Ͳ͏ͬͯߴԽͤ͞Δͷ͔ εέʔϧΞτ ͣ͠Β͘ͳΔ プロセス間でキャッシュを同期できない。 キャッシュサーバーを⽤意すると、スケールアウトし ない。単⼀障害点になりがち。 「全ての必要データ」をキャッシュする ACIDΛ ຬͨͤͳ͘ͳΔ メモリとDBで不整合が発⽣。
複数データソースを使った際にトランザクションが分 かれる。 େྔͷϝϞϦ͕ඞཁ 全てのデータをメモリに載せるためには多くのメモリ 容量が⾜りない。 ৭ʑͳ՝͕... ՝ ՝ ՝
Ͳ͏ͬͯߴԽͤ͞Δͷ͔ ΠϯϝϞϦ ΞʔΩςΫνϟ ・⾮同期DB書き込み ・定期的にメモリとDBを同期させる仕組み DDD ・集約(Aggrigate) 単位にキャッシュ
ΠϯϝϞϦΞʔΩςΫνϟ - αʔόʔஔਤ (؆қ൛)
"Eϓϩηε "Eϓϩηε "Eϓϩηε ΠϯϝϞϦΞʔΩςΫνϟ - ͞Βʹ؆қ൛ /FXT1JDLT αʔόʔϓϩηε %# %#ॻ͖ࠐΈ
ϓϩηε ɾ3&%0ϩάʢతͳϑΝΠϧʣΛ4ʹஔ ɾ%#ॻ͖ࠐΈΛฒྻඇಉظ࣮ߦʹ͢Δ ɾ%#ॻ͖ࠐΈΛϦϥϯՄೳʹ͢Δ ʢ͖ͱ͏ੑΛ࣋ͨͤΔʣ 4 ߋ৽௨ 3FEJT
ΠϯϝϞϦΞʔΩςΫ νϟͱͷ૬ੑͷྑ͞ ・集約(Aggrigate)をロードすれば後は処理するだけ ͳͥυϝΠϯۦಈͳͷ͔ ۀϩδοΫΛΓग़ ͍͢͠ ・アーキテクチャと業務ロジックを分離しやすい ・業務ロジック中にキャッシュ等システムを意識する コードを埋め込む必要がない 1
2
ͳͥυϝΠϯۦಈͳͷ͔
ͳͥυϝΠϯۦಈͳͷ͔
ΠϯϝϞϦ ΞʔΩςΫνϟ ・I/Oを少なくする ・全ての必要なデータをキャッシュする ・⾮同期にDB書き込みを⾏う ߴԽ·ͱΊ DDD ・業務を切り出す ・正しい設計を⾏い、適切なサイズでキャッシュ 1
2 ⾼速なシステムを作るために