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.9k
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
430
PicoRabbit: a Tiny Presentation Device Powered by Ruby
harukasan
PRO
2
1.8k
pixivを支える技術 / 技育CAMPアカデミア
harukasan
PRO
3
620
20240401 新卒研修 - ピクシブにおける技術領域
harukasan
PRO
1
950
ピクシブのコンテンツ配信基盤技術 / pixiv TECH SALON
harukasan
PRO
5
6k
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
SO-101×VLAによる3色キューブのピック&プレース
abeja
0
160
ラジオの科学
frievea
0
280
攻撃と防御で学ぶAI時代のプロダクトセキュリティ演習
recruitengineers
PRO
7
2.2k
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
230
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
53k
モバイルアプリ開発概論2026
recruitengineers
PRO
3
500
GitHub CopilotのFinOps- AI CreditのObservabilityと価値を生むためのエージェント設計
yuriemori
0
140
取引先から届く 「セキュリティチェックシート」の読み解き方
kamadamakoto
0
140
ボトムアップ文化が強い組織で セキュリティをどう根付かせていくかの現在進行形の話 / Making Security Stick in a Bottom-Up Organization
yamaguchitk333
0
200
20260608_Codexの可能性_ノンプログラマー向け_大城追記
doradora09
PRO
0
780
SmartHR Engineering Team Deck
smarthr
1
1.3k
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
240
Featured
See All Featured
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
200
First, design no harm
axbom
PRO
2
1.2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
How to Think Like a Performance Engineer
csswizardry
28
2.7k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
340
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
200
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
500
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Accessibility Awareness
sabderemane
1
170
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Docker and Python
trallard
47
4.1k
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ͭͷ՝Λಓʹղܾ͠ɺΠϯϑϥετϥΫνϟΛ֦େ • ݁Ռͱͯ͠εέʔϧ͍͢͠৴ج൫Λ࣮ݱ • ΑΓ͍͍͢৴Ϋϥελʹ͚ͯվળ͠ଓ͚͍ͯ͘