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
pixivにおけるコンテンツ配信 / JPNAP users meeting 2015-02
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Harukasan
PRO
October 14, 2015
Technology
7.5k
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
61
Building a Standalone Programming Environment
harukasan
PRO
1
2.2k
Successor to PicoRabbit: Ruby Programming Envorinment / RubyKaigi 2025 follow up
harukasan
PRO
1
1.4k
Write your own mrbgem, Create your own device
harukasan
PRO
1
530
PicoRabbit: a Tiny Presentation Device Powered by Ruby
harukasan
PRO
2
2k
pixivを支える技術 / 技育CAMPアカデミア
harukasan
PRO
3
660
20240401 新卒研修 - ピクシブにおける技術領域
harukasan
PRO
1
1k
ピクシブのコンテンツ配信基盤技術 / pixiv TECH SALON
harukasan
PRO
5
6k
Goにおける画像ファイル処理 / golang.tokyo #19
harukasan
PRO
7
6.9k
Other Decks in Technology
See All in Technology
Technical Project Manager の役割とやりがい、少しだけ AI
yoshiiryo1
0
480
Vibe-to-Spec開発_実践ガイド
happysamurai294
0
130
Snowflake でできることが増えたら、 ABAC が必要になった
kaeton
0
130
"計画的無茶振り"を通してAIネイティブ世代の新人を育てる
subroh0508
1
130
cdk deployとcdkd deploy、実際にデプロイして5倍速近くの差を実測した
yama3133
1
150
「作れる」と「リリースできる」の間にあったもの── PdMを外して見えた、PdMがやるべき仕事/Buildable ≠ Shippable: What Removing the PM Taught Me About the PM’s Job
yappli_developers
0
400
AI AgentによるEmbedded SREの取り組み
tgidgd
1
300
あなたのDartコードは丸見えかもしれない ~reFlutterで暴くFlutterアプリの中身と多層防御~
zozotech
PRO
0
710
これだけは抑えておきたい!後悔しない re:Invent の過ごし方 / AWS re:Invent 2026 prestudy
kinunori
2
610
AX時代の自治体支援リソース再配分と役割分担の再構成:戦略とロードマップ(概要)
sishi2026
0
150
(swiftc) NonCopyableとライフタイム修飾子
teamhimeh
0
160
reInvent2026stby LT00 "Change your life!"
shinichirokawano
1
500
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
430
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
The World Runs on Bad Software
bkeepers
PRO
72
12k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
23k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
910
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
820
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
410
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ͭͷ՝Λಓʹղܾ͠ɺΠϯϑϥετϥΫνϟΛ֦େ • ݁Ռͱͯ͠εέʔϧ͍͢͠৴ج൫Λ࣮ݱ • ΑΓ͍͍͢৴Ϋϥελʹ͚ͯվળ͠ଓ͚͍ͯ͘