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
pixivにおけるコンテンツ配信 / JPNAP users meeting 2015-02
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Harukasan
PRO
October 14, 2015
Technology
7.4k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
pixivにおけるコンテンツ配信 / JPNAP users meeting 2015-02
JPNAPユーザー会 / 2015-02-12
Harukasan
PRO
October 14, 2015
More Decks by Harukasan
See All by Harukasan
Harucom Follow-up
harukasan
PRO
1
33
Building a Standalone Programming Environment
harukasan
PRO
1
2.1k
Successor to PicoRabbit: Ruby Programming Envorinment / RubyKaigi 2025 follow up
harukasan
PRO
1
1.3k
Write your own mrbgem, Create your own device
harukasan
PRO
1
460
PicoRabbit: a Tiny Presentation Device Powered by Ruby
harukasan
PRO
2
1.9k
pixivを支える技術 / 技育CAMPアカデミア
harukasan
PRO
3
630
20240401 新卒研修 - ピクシブにおける技術領域
harukasan
PRO
1
960
ピクシブのコンテンツ配信基盤技術 / pixiv TECH SALON
harukasan
PRO
5
6k
Goにおける画像ファイル処理 / golang.tokyo #19
harukasan
PRO
7
6.9k
Other Decks in Technology
See All in Technology
Benchmarking Vector Databases: pgvector vs. LanceDB
tsho
0
140
Level Up Your CDK DX: 5 Tools I’ve Been Building
gotok365
2
190
KPIだけでは評価できないプロダクトが考えるべき Evalsという第二の評価系 / Beyond KPIs: Evals as a Second Evaluation Framework for Products #PdEConf
aki_iinuma
4
3.6k
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.6k
Bet AI Day 2026丨How We Bet AI: AIとともに働く場をつくる
layerx
PRO
1
2.2k
生成AIのテナント制御とシャドーMCP対策 | AIを"止めずに"、情報を守る
yukun
0
110
AI時代におけるプロダクト横断勉強会の設計
zozotech
PRO
0
150
Genie Code ワークショップ 基礎編 / Genie-Code-Workshop-fundamental
databricksjapan
PRO
0
350
『止めない』を設計する — 制約の中で、事業の根幹を支える判断
hiroyaterui
0
190
生成AI時代の クレデンシャルとパーミッション設計
nrinetcom
PRO
3
1.5k
AIエージェントの開発・提供におけるセキュリティリスクの論点と対策
flatt_security
1
570
推論の観測、できていますか? 〜 Google Cloud Gemini Enterprise Agent Platformで 3つの Gemini モデルを実測して踏んだ、評価の罠 〜
shukob
PRO
0
140
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Paper Plane
katiecoart
PRO
2
53k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
680
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Between Models and Reality
mayunak
4
450
So, you think you're a good person
axbom
PRO
2
2.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
Unsuck your backbone
ammeep
672
58k
Transcript
pixivにIけるコxbxa配信 ϐΫγϒגࣜձࣾ ಓҪढ़հ / MICHII Shunsuke JPNAPϢʔβʔձ 2015-02-12
ಓҪ ढ़հ / Harukasan • 2012ʹ৽ଔͱͯ͠ΠϯϑϥνʔϜʹଐ • ίϯςϯπ৴Λ͡ΊαʔϏεશମͷج൫Λ୲ • αʔό͚ͩͰͳ͘σʔλղੳج൫ͷߏஙͳͲߦ͏
• ٕज़ܥࡶࢽͷࣥචͳͲ ϐΫγϒגࣜձࣾɹΠϯϑϥνʔϜ
[email protected]
お絵かきがもっと楽しくなる場所
pixiv (PC) pixiv touch iOS/Android App. ࡞׆ಈ(ΠϥετɾϚϯΨɾখઆ)Λத৺ͱͨ͠ ιʔγϟϧωοτϫʔΩϯάαʔϏε http://www.pixiv.net/
ߘɾӾཡΛओͱͨ͠ίϛϡχέʔγϣϯ ධՁ ϒοΫϚʔΫ ίϝϯτ ελϯϓ ϑΥϩʔ
ެࣜίϯςετ ؒ50ճҎ্ͷެࣜίϯςετΛ։࠵ ༏ल࡞ग़൛ԽͳͲ
1日Nアクbィブユーザ, 1日N投稿作品, ձһ1,000ສϢʔβʔΛಥഁ 0 200 400 600 800 1000 1200
1400 2007 2008 2009 2010 2011 2012 2013 2014 2015 200万ユーザー 2010年5月22日 400万ユーザー 2012年1月28日 600万ユーザー 2013年1月30日 800万ユーザー 2013年8月14日 1000万ユーザー 2014年2月22日 (ສਓ) ※2015年2月現在 登録ユーザー数 167万人 25,000作品 1,350万ユーザー 2015年2月現在
(Gbps) 0 5 10 15 20 2007 2008 2009 2010
2011 2012 2013 2014 2015 Ϣʔβʔʹ߹ΘͤτϥϑΟοΫ૿Ճ 最大使用帯域, 17.517ps 平均使用帯域, 917ps ※2015年2月現在 最大使用帯域
࡞׆ಈ͕ΑΓָ͘͠ͳΔ γϣοϓ࡞αʔϏε ͷͮ͘ΓΛͬͱָ͘͢͠Δ ΞΠςϜ࡞αʔϏε ࡞׆ಈ͕ΑΓָ͘͠ͳΔؔ࿈αʔϏε NEW!
pixiv Inc. ϐΫγϒגࣜձࣾ ࣾһ: 80໊ (ΤϯδχΞ: 50໊) ฏۉྸ: 28.7ࡀ ※2015年2月現在
Culture • ։͔ΕͨΦϑΟεεϖʔε • ఆظతʹٕज़ษڧձΛ։࠵
pixivにIけるコxbxa配信
pixivͷτϥϑΟοΫׂ߹ • ϐΫγϒͷϝΠϯίϯςϯπΠϥετʹը૾ • େྔͷը૾σʔλΛԿʹߴʹ৴͢Δ͔ HTML/JSON 5% Other Image 90%
Traffic: 17Gbps (max)
Agenda • αʔϏεͱΠϯϑϥετϥΫνϟͷ • pixivΛࢧ͑Δίϯςϯπ৴Ϋϥελ • ͜Ε͔Βͷίϯςϯπ৴
サービスと インフラストラクチャの成長
自社 サーhuーム 東京 新宿DC 福島 白河DC pixivͷΠϯϑϥετϥΫνϟ アプリケーション 開発・小規模サービス 画像・広告配信
• نͷ֦େʹ߹Θͤ3ڌʹ֦େ • ༻్ຖʹ͍͚
• ࣗ࡞αʔό͔ΒσʔληϯλʔҠߦ • ݹ͍αʔό։ൃ༻్ͱͯ͠ར༻ pixivͷΠϯϑϥετϥΫνϟ 0 125 250 375 500
2007 2008 2009 2010 2011 2012 2013 2014 αʔό ࣗࣾαʔόϧʔϜ ৽॓DC നՏDC
• ࣾʹΞϧϛϥοΫΛઃஔ͠αʔόΛϚϯτ • ϕετΤϑΥʔτճઢͷͨΊ҆ఆͤͣଳҬ͕ṧഭ • ిݯ༰ྔͱޫέʔϒϧΛҾ͖ࠐΈʹݶք ࣗࣾαʔόϧʔϜ
自作αʔόͱDCͷϋΠϒϦουߏ 社屋サーhーuーム 1Gbps ઐ༻ઢ 2D.0新宿cータセxター Gbps 4Gbps ϕετΤϑΥʔτ IDCFόοΫϘʔϯ 画像ストvージ
Toッシpクsスタ ςΩετσʔλ ը૾σʔλ • 2010ʹσʔληϯλʔͷར༻Λ։࢝ • ҆ఆͨ͠ճઢΛར༻ͯ͠ը૾σʔλΛ৴ アプtケーシrx
• ౦ຊେࡂΛ͖͔͚ͬʹDCͷҠߦΛՃ • ඃࣗମͳ͔ͬͨͷͷओͩͬͨػೳ σʔληϯλʔʹҠ͢͜ͱʹ • ࣗ࡞αʔό͔ΒΑΓߴεϖοΫͳ1UαʔόʹҠߦ DCͷҠߦ 自社 サーhuーム
東京 新宿DC
• ৽॓DCͷϥοΫ͕खڱʹ • Ԇ(౦ژ-ౡؒ ฏۉ3.5ms) • ϑϧϚωʔδυ(ೖؗϨε) ΑΓ֦ுੑΛٻΊͯനՏDC ASCII.jp -
IDCFͷ“ݺٵ͢Δσʔληϯλʔ”ΛനՏͰମײ͖ͯͨ͠ http://ascii.jp/elem/000/000/975/975144/ 福島 白河DC
• നՏDCʹը૾ΩϟογϡΫϥελΛҠస • 4ຊͷ10GճઢΛෑઃ ΑΓ֦ுੑΛٻΊͯനՏDC 2D.0新宿cータセxター 2D.0白河cータセxター 1Gbps x 4
画像ストvージ Toッシpクsスタ アプtケーシrx 10Gbps x 1 10Gbps x 4 IDCFόοΫϘʔϯ IDCFόοΫϘʔϯ ౦ژ ౡݝനՏ
0 10 20 30 40 2007 2008 2009 2010 2011
2012 2013 2014 τϥϑΟοΫͱճઢଳҬ • ʹ߹ΘͤͯඞཁͳճઢଳҬΛ૿ઃ͖ͯͨ͠ • ΩϟογϡΫϥελͷಋೖͰεέʔϧ͍͢͠ߏʹ ༻ՄೳଳҬ ༻ଳҬ 10Gճઢಋೖ നՏDC Gbps τϥϑΟοΫ
·ͱΊ: αʔϏεͷͱΠϯϑϥ • pixivͷϝΠϯτϥϑΟοΫͰ͋Δը૾σʔλΛ৴͢ΔڌΛ ߏங͖ͯͨ͠ • ΩϟογϡΫϥελΛεέʔϧͤ͞Δ͜ͱͰ ࡹ͚ΔτϥϑΟοΫΛεέʔϧ͍͢͠ߏʹ 自社 サーhuーム
東京 新宿DC 福島 白河DC アプリケーション 開発・小規模サービス 画像・広告配信
pixivΛࢧ͑Δ ίϯςϯπ৴Ϋϥελ
৴Λࢧ͑ΔΩϟογϡΫϥελ • pixivͷը૾৴Λεέʔϧ͍ͯͨ͘͠Ίʹߏங • ΞϓϦέʔγϣϯͱॲཧΛ • େ༰ྔͷόοΫϘʔϯͱͦΕΛॲཧͰ͖Δ͚ͩͷੑೳΛͭ 2D.0新宿cータセxター 2D.0白河cータセxター 画像ストvージ
Toッシpクsスタ アプtケーシrx 10Gbps x4
pixivͷίϯςϯπ৴Ϋϥελ ࠷େτϥϑΟοΫ: ࠷େϦΫΤετ: Ωϟογϡώοτ: ฏۉԠ࣌ؒ: • pixivͷ90ˋҎ্ͷτϥϑΟοΫΛॲཧ • αʔόʔ40Ͱߏ 16Gbps
(max) 24K Request / sec 97%Ҏ্ 100ms
ΩϟογϡΫϥελͷߏͱ Ωϟογϡώοτ mntToッシp cィスクToッシp 画像ストvージ 50% 5% ϝϞϦΛར༻ͨ͠ߴͳΩϟογϡ SSDΛར༻ͨ͠େ༰ྔΩϟογϡ HDDͷେ༰ྔετϨʔδ
100msͰԠ 300msҎʹԠ 10msҎʹԠ • ϝϞϦͱσΟεΫͷ2ஈΩϟογϡߏ • SSDΛར༻͢Δ͜ͱͰेTBͷΩϟογϡ༰ྔΛ֬อ
ίϯςϯπ৴Ϋϥελͷߏ cィスクToッシp -p68h9 5A6ffi8 49Av9A cィスクToッシp -p68h9 5A6ffi8 49Av9A mntToッシp
hsxシxグ n:inF uーbィxグ n:inF uーbィxグ n:inF サムネイu生成 :o ChDm79A mntToッシp hsxシxグ n:inF 画像ストvージ ɾɾɾ ɾɾɾ ɾɾɾ cィスクToッシp -p68h9 5A6ffi8 49Av9A mntToッシp hsxシxグ n:inF uーbィxグ n:inF emイxシoーcィxグ&D34sSxeロix コxシスbxトgッシxグ
i1.pixiv.net: DNSϨίʔυ i2.pixiv.net: im:.piFiv.n9C. 200 23 - 203.0.113.1 im:.piFiv.n9C. 200
23 - 203.0.113.2 im:.piFiv.n9C. 200 23 - 203.0.113.3 im:.piFiv.n9C. 200 23 - 203.0.113.4 G im:.piFiv.n9C. 200 23 - 203.0.113.1 im:.piFiv.n9C. 200 23 - 203.0.113.2 im:.piFiv.n9C. 200 23 - 203.0.113.3 im:.piFiv.n9C. 200 23 - 203.0.113.4 G im:.piFiv.n9C. 200 23 - 203.0.113.1 im:.piFiv.n9C. 200 23 - 203.0.113.2 im:.piFiv.n9C. 200 23 - 203.0.113.3 im:.piFiv.n9C. 200 23 - 203.0.113.4 G i3.pixiv.net: υϝΠϯγϟʔσΟϯάͱ DNSϥϯυϩϏϯ • DNSϥϯυϩϏϯʹΑΓτϥϑΟοΫΛࢄ • UDPʹΑΔDNSԠ512byte·Ͱ • ը૾IDͷϋογϡ͝ͱʹυϝΠϯΛׂ͢Δ͜ͱͰ DNSϨίʔυαΠζΛݮ i.pixiv.net: im:.piFiv.n9C. 200 23 - 203.0.113.1 im:.piFiv.n9C. 200 23 - 203.0.113.2 im:.piFiv.n9C. 200 23 - 203.0.113.3 im:.piFiv.n9C. 200 23 - 203.0.113.4 G 512byte: 10ݸఔ 512byte 512byte 512byte
• υϝΠϯΛෳʹׂͨ͜͠ͱͰϝϞϦΩϟογϡ ෳʹׂͰ͖Δ • Ωϟογϡώοτ͕एׯ্ υϝΠϯγϟʔσΟϯάʹΑΔ Ωϟογϡࢄ mntToッシp n:inF mntToッシp
n:inF ɾɾɾ mntToッシp n:inF i1.pixiv.net i2.pixiv.net i4.pixiv.net
nginxʹΑΔϝϞϦΩϟογϡ • ΠϕϯτۦಈΞʔΩςΫνϟʹΑΔߴͳHTTPαʔό • HTTPS௨৴ͷղআ • ϝϞϦΩϟογϡ • ϩʔυόϥϯγϯά •
nginxϑΝΠϧΩϟογϡػೳΛ࣋ͭͷͰ tmpfsΛར༻ͯ͠ϝϞϦ্ʹΩϟογϡϑΝΠϧΛอ࣋
ίϯγεςϯτϋογϯάʹΑΔ ϩʔυόϥϯγϯά • URLΛΩʔʹͯ͠ϋογϯά͢Δ͜ͱͰ ಉ͡URLͰಉ͡Ωϟογϡαʔόʹࢄ͢ΔΑ͏ʹ • αʔόͷՃɺআΛߦͬͯϋογϡͷมԽ͕গͳ͍ • Ωϟογϡ༰ྔΛ༰қʹεέʔϧΞτͰ͖Δ cィスクToッシp
cィスクToッシp cィスクToッシp ϋογϡςʔϒϧ ϋογϡςʔϒϧ ϋογϡςʔϒϧ /img/a.jpg /img/a.jpg /img/b.jpg /img/a.jpgͷϦΫΤετ ඞͣ͜ͷαʔόʹ
2ஈΩϟογϡʹΑΔར: ಛఆαʔόʹෛՙ͕ภΔͷΛ͙ • ϋογϯάʹΑΔࢄΛߦ͏ͱಛఆαʔόʹෛՙ͕ภΔ • 1ஈʹϝϞϦΩϟογϡ͕͋Δ͜ͱͰΑ͘ϦΫΤετ ͞ΕΔϑΝΠϧෳͷαʔόͰԠग़དྷΔ cィスクToッシp /img/a.jpg 負荷が集中
cィスクToッシp /img/a.jpg 1ஈʹΩϟογϡ͕ͳ͍߹ cィスクToッシp /img/a.jpg cィスクToッシp /img/a.jpg 1ஈʹΩϟογϡ͕͋Δ߹ mntToッシp mntToッシp 負荷が分散
10Gbps 10Gbps 5Gbps 10Gbps 2ஈΩϟογϡʹΑΔར: αʔόؒτϥϑΟοΫΛݮΒ͢ • 1ஈʹΩϟογϡ͕͋Δ͜ͱͰɺόϥϯγϯά͠ͳ͚Ε ͳΒͳ͍ϦΫΤετ͕ݮ •
ϩʔΧϧΤϦΞͷτϥϑΟοΫΛ͑Δ͜ͱ͕Ͱ͖Δ cィスクToッシp /img/a.jpg cィスクToッシp /img/a.jpg 1ஈʹΩϟογϡ͕ͳ͍߹ cィスクToッシp /img/a.jpg cィスクToッシp /img/a.jpg 1ஈʹΩϟογϡ͕͋Δ߹ mntToッシp mntToッシp 同じ容量N帯域が必要 必要帯域が半減
Apache TrafficServerʹΑΔ σΟεΫΩϟογϡ • σΟεΫΩϟογϡʹApache TrafficServer (ATS) Λ༻ • ୯ҰΦϒδΣΫτʹΑΔΩϟογϡͳͷͰϑΝΠϧγεςϜͷ
inode੍ݶͳͲΛؾʹ͢Δඞཁ͕ͳ͍ • SATA SSDΛmdadmʹΑΓRAID0(ετϥΠϐϯά)͢Δ͜ͱͰ ԠੑΛ্ 256GB 256GB 256GB Software RAID (mdadm) ATS Cache Volume
ಈతαϜωΠϧੜ • Ξοϓϩʔυ࣌ʹඞཁͳαϜωΠϧΛͯ͢ੜ͢Δͱ: • ඇৗʹ͕͔͔࣌ؒΔ • σβΠϯมߋ࣌ʹมߋ͞ΕΔڪΕ͕͋Γ։ൃ্ͷίετʹ ϦΫΤετ࣌ʹಈతੜ͢Δ͜ͱͰ͜ΕΒͷίετΛݮ ΦϦδφϧը૾ αϜωΠϧϚελը૾
αϜωΠϧը૾ ϦΫΤετ࣌ Ξοϓϩʔυ࣌ ಈతੜ
go-thumber https://github.com/pixiv/go-thumber • GoݴޠͰॻ͔ΕͨαϜωΠϧมϓϩΩγ • Φʔϓϯιʔεͱͯ͠ެ։ • JPEG-JPEGͷॲཧʹߜΔ͜ͱͰॲཧΛ࠷దԽ • εέʔϦϯάʹFFMPEGͷϥΠϒϥϦΛ༻
• ৭ۭؒͳͲΛল͖ߴ͔ͭણࡉͳαϜωΠϧੜ͕Մೳ
·ͱΊ:pixivͷίϯςϯπ৴Ϋϥελ • ΦʔϓϯιʔειϑτΣΞΛ׆༻ͨ͠ ίϯςϯπ৴ΫϥελΛߏங • ΞϓϦέʔγϣϯ͔Β͢Δ͜ͱͰ։ൃίετΛݮ • 2ஈΩϟογϡߏʹΑΓεέʔϧ͍͢͠ߏʹ • ಈతαϜωΠϧੜʹΑΓΞϓϦέʔγϣϯ։ൃίετΛݮ
これからのコンテンツ配信
ΑΓ͍͍͢ίϯςϯπ৴ • pixivಛ༗ͷ৴ػೳΛΑΓҰൠతʹ༻Ͱ͖ΔΑ͏ʹ • ΞΫηϧίϯτϩʔϧ • υϝΠϯγϟʔσΟϯά • αϜωΠϧը૾ੜ •
HTTPSͰͷ҆ఆͨ͠৴Λ࣮ݱ • HTTP/2ʹΑΔ৴ରԠ
͓ΘΓʹ • 1ͭ1ͭͷ՝Λಓʹղܾ͠ɺΠϯϑϥετϥΫνϟΛ֦େ • ݁Ռͱͯ͠εέʔϧ͍͢͠৴ج൫Λ࣮ݱ • ΑΓ͍͍͢৴Ϋϥελʹ͚ͯվળ͠ଓ͚͍ͯ͘