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
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.2k
Write your own mrbgem, Create your own device
harukasan
PRO
1
410
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.9k
WebRTC動画をトランスコードする / Transcoding video streams from WebRTC
harukasan
PRO
5
1.7k
Other Decks in Technology
See All in Technology
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
450
プロダクトだけじゃない、社内プロセスにおける自動化・省力化ノススメ
kakehashi
PRO
1
3.6k
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
2
710
世界、断片、モデル。そして理解
ardbeg1958
1
110
LLM/Agent評価:トップ営業の発言を「正解」にする 〜暗黙的正解による評価を営業資産に変える〜
takkuhiro
1
210
AIと共生する開発者プラットフォーム:バクラクのモノレポ×マイクロサービス基盤
sakajunquality
2
3.4k
生成AIの活用/high_school2026
okana2ki
0
130
地域 SRE コミュニティ最前線 / SRE NEXT 2026 Discussion Night Track C
muziyoshiz
0
210
GuardrailからGovernanceへ~AIエージェント運用の次の課題~
sbspsy
2
270
kintone の AI コワーカーを、 Anthropic にエージェントを"ホストさせて"作った話 #devkinmeetup
sugimomoto
0
100
知らん間に、回ってる
ming_ayami
0
500
最近評価が難しくなった
maroon8021
0
340
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Bash Introduction
62gerente
615
220k
Discover your Explorer Soul
emna__ayadi
2
1.2k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
340
Optimising Largest Contentful Paint
csswizardry
37
3.8k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
460
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Un-Boring Meetings
codingconduct
0
340
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
170
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ͭͷ՝Λಓʹղܾ͠ɺΠϯϑϥετϥΫνϟΛ֦େ • ݁Ռͱͯ͠εέʔϧ͍͢͠৴ج൫Λ࣮ݱ • ΑΓ͍͍͢৴Ϋϥελʹ͚ͯվળ͠ଓ͚͍ͯ͘