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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
Building a Standalone Programming Environment
harukasan
PRO
1
1.8k
Successor to PicoRabbit: Ruby Programming Envorinment / RubyKaigi 2025 follow up
harukasan
PRO
1
1.1k
Write your own mrbgem, Create your own device
harukasan
PRO
1
400
PicoRabbit: a Tiny Presentation Device Powered by Ruby
harukasan
PRO
2
1.7k
pixivを支える技術 / 技育CAMPアカデミア
harukasan
PRO
3
610
20240401 新卒研修 - ピクシブにおける技術領域
harukasan
PRO
1
940
ピクシブのコンテンツ配信基盤技術 / pixiv TECH SALON
harukasan
PRO
5
5.9k
Goにおける画像ファイル処理 / golang.tokyo #19
harukasan
PRO
7
6.8k
WebRTC動画をトランスコードする / Transcoding video streams from WebRTC
harukasan
PRO
5
1.7k
Other Decks in Technology
See All in Technology
レガシーな広告配信システムでのAI駆動開発/運用の挑戦
i16fujimoto
0
120
Flow 不死:AI 時代 DevOps 的不變本質
cheng_wei_chen
2
500
クラウドファンディング版StackChan 3体(4体)をインタラクティブな体験型作品にして展示もした話 / スタックチャンお誕生日会2026
you
PRO
0
180
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
0
340
AI-DLCを “そのまま導入しなかった”話 ~組織に合わせてアジャストした 私たちの実践共有~
hiroramos4
PRO
1
420
徹底討論!ECS vs EKS!
daitak
3
1.7k
MySQL & MySQL HeatWave Report - June 2026
freshdaz
0
110
5分でわかるDuckDB Quack
chanyou0311
3
250
AWS Security Hub CSPMの成功・失敗体験
cmusudakeisuke
0
540
ロボティクスの技術 / Robotics Technology
ks91
PRO
0
130
Bucharest Tech Week 2026 - Guardians of the Cloud-Native Galaxy
edeandrea
PRO
0
140
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
5
1.7k
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
187
22k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
210
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Abbi's Birthday
coloredviolet
3
8.2k
The Limits of Empathy - UXLibs8
cassininazir
1
370
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Mobile First: as difficult as doing things right
swwweet
225
10k
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
870
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
480
How to Ace a Technical Interview
jacobian
281
24k
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ͭͷ՝Λಓʹղܾ͠ɺΠϯϑϥετϥΫνϟΛ֦େ • ݁Ռͱͯ͠εέʔϧ͍͢͠৴ج൫Λ࣮ݱ • ΑΓ͍͍͢৴Ϋϥελʹ͚ͯվળ͠ଓ͚͍ͯ͘