Slide 1

Slide 1 text

pixivにIけるコxbxa配信 ϐΫγϒגࣜձࣾ ಓҪढ़հ / MICHII Shunsuke JPNAPϢʔβʔձ 2015-02-12

Slide 2

Slide 2 text

ಓҪ ढ़հ / Harukasan • 2012೥ʹ৽ଔͱͯ͠ΠϯϑϥνʔϜʹ഑ଐ • ίϯςϯπ഑৴Λ͸͡ΊαʔϏεશମͷج൫Λ୲౰ • αʔό͚ͩͰͳ͘σʔλղੳج൫ͷߏஙͳͲ΋ߦ͏ • ٕज़ܥࡶࢽͷࣥචͳͲ΋ ϐΫγϒגࣜձࣾɹΠϯϑϥνʔϜ [email protected]

Slide 3

Slide 3 text

お絵かきがもっと楽しくなる場所

Slide 4

Slide 4 text

pixiv (PC) pixiv touch iOS/Android App. ૑࡞׆ಈ(ΠϥετɾϚϯΨɾখઆ)Λத৺ͱͨ͠
 ιʔγϟϧωοτϫʔΩϯάαʔϏε http://www.pixiv.net/

Slide 5

Slide 5 text

౤ߘɾӾཡΛओͱͨ͠ίϛϡχέʔγϣϯ ධՁ ϒοΫϚʔΫ ίϝϯτ ελϯϓ ϑΥϩʔ

Slide 6

Slide 6 text

ެࣜίϯςετ ೥ؒ50ճҎ্ͷެࣜίϯςετΛ։࠵ ༏ल࡞඼͸ग़൛΍঎඼ԽͳͲ΋

Slide 7

Slide 7 text

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月現在

Slide 8

Slide 8 text

(Gbps) 0 5 10 15 20 2007 2008 2009 2010 2011 2012 2013 2014 2015 Ϣʔβʔ਺ʹ߹ΘͤτϥϑΟοΫ΋૿Ճ 最大使用帯域, 17.517ps
 平均使用帯域, 917ps ※2015年2月現在 最大使用帯域

Slide 9

Slide 9 text

૑࡞׆ಈ͕ΑΓָ͘͠ͳΔ
 γϣοϓ࡞੒αʔϏε ΋ͷͮ͘ΓΛ΋ͬͱָ͘͢͠Δ
 ΞΠςϜ࡞੒αʔϏε
 ૑࡞׆ಈ͕ΑΓָ͘͠ͳΔؔ࿈αʔϏε NEW!

Slide 10

Slide 10 text

pixiv Inc. ϐΫγϒגࣜձࣾ ࣾһ਺: ໿80໊ (ΤϯδχΞ: ໿50໊) ฏۉ೥ྸ: 28.7ࡀ ※2015年2月現在

Slide 11

Slide 11 text

Culture • ։͔ΕͨΦϑΟεεϖʔε • ఆظతʹٕज़ษڧձΛ։࠵

Slide 12

Slide 12 text

pixivにIけるコxbxa配信

Slide 13

Slide 13 text

pixivͷτϥϑΟοΫׂ߹ • ϐΫγϒͷϝΠϯίϯςϯπ͸Πϥετʹը૾ • େྔͷը૾σʔλΛ೗Կʹߴ଎ʹ഑৴͢Δ͔ HTML/JSON 5% Other Image 90% Traffic: 17Gbps (max)

Slide 14

Slide 14 text

Agenda • αʔϏεͱΠϯϑϥετϥΫνϟͷ੒௕ • pixivΛࢧ͑Δίϯςϯπ഑৴Ϋϥελ • ͜Ε͔Βͷίϯςϯπ഑৴

Slide 15

Slide 15 text

サービスと
 インフラストラクチャの成長

Slide 16

Slide 16 text

自社
 サーhuーム 東京
 新宿DC 福島
 白河DC pixivͷΠϯϑϥετϥΫνϟ アプリケーション 開発・小規模サービス 画像・広告配信 • ن໛ͷ֦େʹ߹Θͤ3ڌ఺ʹ֦େ • ༻్ຖʹ࢖͍෼͚

Slide 17

Slide 17 text

• ࣗ࡞αʔό͔Βσʔληϯλʔ΁Ҡߦ • ݹ͍αʔό͸։ൃ༻్ͱͯ͠ར༻ pixivͷΠϯϑϥετϥΫνϟ 0 125 250 375 500 2007 2008 2009 2010 2011 2012 2013 2014 αʔό୆਺ ࣗࣾαʔόϧʔϜ ৽॓DC നՏDC

Slide 18

Slide 18 text

• ࣾ԰಺ʹΞϧϛϥοΫΛઃஔ͠αʔόΛϚ΢ϯτ • ϕετΤϑΥʔτճઢͷͨΊ҆ఆͤͣଳҬ͕ṧഭ • ిݯ༰ྔͱޫέʔϒϧΛҾ͖ࠐΈʹݶք ࣗࣾαʔόϧʔϜ

Slide 19

Slide 19 text

自作αʔόͱDCͷϋΠϒϦουߏ੒ 社屋サーhーuーム 1Gbps ઐ༻ઢ 2D.0新宿cータセxター ਺Gbps 4Gbps ϕετΤϑΥʔτ IDCFόοΫϘʔϯ 画像ストvージ Toッシpクsスタ ςΩετσʔλ ը૾σʔλ • 2010೥ʹσʔληϯλʔͷར༻Λ։࢝ • ҆ఆͨ͠ճઢΛར༻ͯ͠ը૾σʔλΛ഑৴ アプtケーシrx

Slide 20

Slide 20 text

• ౦೔ຊେ਒ࡂΛ͖͔͚ͬʹDC΁ͷҠߦΛՃ଎ • ඃ֐ࣗମ͸ͳ͔ͬͨ΋ͷͷओͩͬͨػೳ͸
 σʔληϯλʔʹҠ͢͜ͱʹ • ࣗ࡞αʔό͔ΒΑΓߴεϖοΫͳ1UαʔόʹҠߦ DC΁ͷҠߦ 自社
 サーhuーム 東京
 新宿DC

Slide 21

Slide 21 text

• ৽॓DCͷϥοΫ͕खڱʹ • ௿஗Ԇ(౦ژ-෱ౡؒ ฏۉ3.5ms) • ϑϧϚωʔδυ(ೖؗϨε) ΑΓ֦ுੑΛٻΊͯനՏDC΁ ASCII.jp - IDCFͷ“ݺٵ͢Δσʔληϯλʔ”ΛനՏͰମײ͖ͯͨ͠ http://ascii.jp/elem/000/000/975/975144/ 福島
 白河DC

Slide 22

Slide 22 text

• നՏ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όοΫϘʔϯ ౦ژ ෱ౡݝനՏ

Slide 23

Slide 23 text

0 10 20 30 40 2007 2008 2009 2010 2011 2012 2013 2014 τϥϑΟοΫͱճઢଳҬ • ੒௕ʹ߹ΘͤͯඞཁͳճઢଳҬΛ૿ઃ͖ͯͨ͠ • ΩϟογϡΫϥελͷಋೖͰεέʔϧ͠΍͍͢ߏ੒ʹ ࢖༻ՄೳଳҬ ࢖༻ଳҬ 10Gճઢಋೖ നՏDC Gbps τϥϑΟοΫ

Slide 24

Slide 24 text

·ͱΊ: αʔϏεͷ੒௕ͱΠϯϑϥ • pixivͷϝΠϯτϥϑΟοΫͰ͋Δը૾σʔλΛ഑৴͢Δڌ఺Λ ߏங͖ͯͨ͠ • ΩϟογϡΫϥελΛεέʔϧͤ͞Δ͜ͱͰ
 ࡹ͚ΔτϥϑΟοΫΛεέʔϧ͠΍͍͢ߏ੒ʹ 自社
 サーhuーム 東京
 新宿DC 福島
 白河DC アプリケーション 開発・小規模サービス 画像・広告配信

Slide 25

Slide 25 text

pixivΛࢧ͑Δ
 ίϯςϯπ഑৴Ϋϥελ

Slide 26

Slide 26 text

഑৴Λࢧ͑ΔΩϟογϡΫϥελ • pixivͷը૾഑৴Λεέʔϧ͍ͯͨ͘͠Ίʹߏங • ΞϓϦέʔγϣϯͱॲཧΛ෼཭ • େ༰ྔͷόοΫϘʔϯͱͦΕΛॲཧͰ͖Δ͚ͩͷੑೳΛ΋ͭ 2D.0新宿cータセxター 2D.0白河cータセxター 画像ストvージ Toッシpクsスタ アプtケーシrx 10Gbps x4

Slide 27

Slide 27 text

pixivͷίϯςϯπ഑৴Ϋϥελ ࠷େτϥϑΟοΫ: ࠷େϦΫΤετ: Ωϟογϡώοτ཰: ฏۉԠ౴࣌ؒ: • pixivͷ90ˋҎ্ͷτϥϑΟοΫΛॲཧ • αʔόʔ໿40୆Ͱߏ੒ 16Gbps (max) 24K Request / sec 97%Ҏ্ 100ms

Slide 28

Slide 28 text

ΩϟογϡΫϥελͷߏ੒ͱ
 Ωϟογϡώοτ཰ mntToッシp cィスクToッシp 画像ストvージ 50% 5% ϝϞϦΛར༻ͨ͠ߴ଎ͳΩϟογϡ SSDΛར༻ͨ͠େ༰ྔΩϟογϡ HDDͷେ༰ྔετϨʔδ 100msͰԠ౴ 300msҎ಺ʹԠ౴ 10msҎ಺ʹԠ౴ • ϝϞϦͱσΟεΫͷ2ஈΩϟογϡߏ੒ • SSDΛར༻͢Δ͜ͱͰ਺ेTBͷΩϟογϡ༰ྔΛ֬อ

Slide 29

Slide 29 text

ίϯςϯπ഑৴Ϋϥελͷߏ੒ 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グ

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

• υϝΠϯΛෳ਺ʹ෼ׂͨ͜͠ͱͰϝϞϦΩϟογϡ΋
 ෳ਺ʹ෼ׂͰ͖Δ • Ωϟογϡώοτ཰͕एׯ޲্ υϝΠϯγϟʔσΟϯάʹΑΔ
 Ωϟογϡ෼ࢄ mntToッシp n:inF mntToッシp n:inF ɾɾɾ mntToッシp n:inF i1.pixiv.net i2.pixiv.net i4.pixiv.net

Slide 32

Slide 32 text

nginxʹΑΔϝϞϦΩϟογϡ • ΠϕϯτۦಈΞʔΩςΫνϟʹΑΔߴ଎ͳHTTPαʔό • HTTPS௨৴ͷղআ • ϝϞϦΩϟογϡ • ϩʔυόϥϯγϯά • nginx͸ϑΝΠϧΩϟογϡػೳΛ࣋ͭͷͰ
 tmpfsΛར༻ͯ͠ϝϞϦ্ʹΩϟογϡϑΝΠϧΛอ࣋

Slide 33

Slide 33 text

ίϯγεςϯτϋογϯάʹΑΔ
 ϩʔυόϥϯγϯά • URLΛΩʔʹͯ͠ϋογϯά͢Δ͜ͱͰ
 ಉ͡URLͰ͸ಉ͡Ωϟογϡαʔόʹ෼ࢄ͢ΔΑ͏ʹ • αʔόͷ௥Ճɺ࡟আΛߦͬͯ΋ϋογϡͷมԽ͕গͳ͍ • Ωϟογϡ༰ྔΛ༰қʹεέʔϧΞ΢τͰ͖Δ cィスクToッシp cィスクToッシp cィスクToッシp ϋογϡςʔϒϧ ϋογϡςʔϒϧ ϋογϡςʔϒϧ /img/a.jpg /img/a.jpg /img/b.jpg /img/a.jpg΁ͷϦΫΤετ͸
 ඞͣ͜ͷαʔόʹ

Slide 34

Slide 34 text

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 負荷が分散

Slide 35

Slide 35 text

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帯域が必要 必要帯域が半減

Slide 36

Slide 36 text

Apache TrafficServerʹΑΔ
 σΟεΫΩϟογϡ • σΟεΫΩϟογϡʹ͸Apache TrafficServer (ATS) Λ࢖༻ • ୯ҰΦϒδΣΫτʹΑΔΩϟογϡͳͷͰϑΝΠϧγεςϜͷ
 inode੍ݶͳͲΛؾʹ͢Δඞཁ͕ͳ͍ • SATA SSDΛmdadmʹΑΓRAID0(ετϥΠϐϯά)͢Δ͜ͱͰ Ԡ౴ੑΛ޲্ 256GB 256GB 256GB Software RAID (mdadm) ATS Cache Volume

Slide 37

Slide 37 text

ಈతαϜωΠϧੜ੒ • Ξοϓϩʔυ࣌ʹඞཁͳαϜωΠϧΛ͢΂ͯੜ੒͢Δͱ: • ඇৗʹ͕͔͔࣌ؒΔ • σβΠϯมߋ࣌ʹมߋ͞ΕΔڪΕ͕͋Γ։ൃ্ͷίετʹ ϦΫΤετ࣌ʹಈతੜ੒͢Δ͜ͱͰ͜ΕΒͷίετΛ࡟ݮ ΦϦδφϧը૾ αϜωΠϧϚελը૾ αϜωΠϧը૾ ϦΫΤετ࣌ Ξοϓϩʔυ࣌ ಈతੜ੒

Slide 38

Slide 38 text

go-thumber https://github.com/pixiv/go-thumber • GoݴޠͰॻ͔ΕͨαϜωΠϧม׵ϓϩΩγ • Φʔϓϯιʔεͱͯ͠ެ։ • JPEG-JPEGͷॲཧʹߜΔ͜ͱͰॲཧΛ࠷దԽ • εέʔϦϯάʹ͸FFMPEGͷϥΠϒϥϦΛ࢖༻ • ৭ۭؒͳͲΛল͖ߴ଎͔ͭણࡉͳαϜωΠϧੜ੒͕Մೳ

Slide 39

Slide 39 text

·ͱΊ:pixivͷίϯςϯπ഑৴Ϋϥελ • Φʔϓϯιʔειϑτ΢ΣΞΛ׆༻ͨ͠
 ίϯςϯπ഑৴ΫϥελΛߏங • ΞϓϦέʔγϣϯ͔Β෼཭͢Δ͜ͱͰ։ൃίετΛ࡟ݮ • 2ஈΩϟογϡߏ଄ʹΑΓεέʔϧ͠΍͍͢ߏ੒ʹ • ಈతαϜωΠϧੜ੒ʹΑΓΞϓϦέʔγϣϯ։ൃίετΛ࡟ݮ

Slide 40

Slide 40 text

これからのコンテンツ配信

Slide 41

Slide 41 text

ΑΓ࢖͍΍͍͢ίϯςϯπ഑৴ • pixivಛ༗ͷ഑৴ػೳΛΑΓҰൠతʹ࢖༻Ͱ͖ΔΑ͏ʹ • ΞΫηϧίϯτϩʔϧ • υϝΠϯγϟʔσΟϯά • αϜωΠϧը૾ੜ੒ • HTTPSͰͷ҆ఆͨ͠഑৴Λ࣮ݱ • HTTP/2ʹΑΔ഑৴ରԠ

Slide 42

Slide 42 text

͓ΘΓʹ • 1ͭ1ͭͷ՝୊Λ஍ಓʹղܾ͠ɺΠϯϑϥετϥΫνϟΛ֦େ • ݁Ռͱͯ͠εέʔϧ͠΍͍͢഑৴ج൫Λ࣮ݱ • ΑΓ࢖͍΍͍͢഑৴Ϋϥελʹ޲͚ͯվળ͠ଓ͚͍ͯ͘