Upgrade to Pro — share decks privately, control downloads, hide ads and more …

pixivにおけるコンテンツ配信 / JPNAP users meeting 2015-02

Harukasan
October 14, 2015

pixivにおけるコンテンツ配信 / JPNAP users meeting 2015-02

JPNAPユーザー会 / 2015-02-12

Harukasan

October 14, 2015
Tweet

More Decks by Harukasan

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

  4. pixiv (PC) pixiv touch iOS/Android App.
    ૑࡞׆ಈ(ΠϥετɾϚϯΨɾখઆ)Λத৺ͱͨ͠

    ιʔγϟϧωοτϫʔΩϯάαʔϏε
    http://www.pixiv.net/

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. (Gbps)
    0
    5
    10
    15
    20
    2007 2008 2009 2010 2011 2012 2013 2014 2015
    Ϣʔβʔ਺ʹ߹ΘͤτϥϑΟοΫ΋૿Ճ
    最大使用帯域, 17.517ps

    平均使用帯域, 917ps
    ※2015年2月現在
    最大使用帯域

    View Slide

  9. ૑࡞׆ಈ͕ΑΓָ͘͠ͳΔ

    γϣοϓ࡞੒αʔϏε
    ΋ͷͮ͘ΓΛ΋ͬͱָ͘͢͠Δ

    ΞΠςϜ࡞੒αʔϏε

    ૑࡞׆ಈ͕ΑΓָ͘͠ͳΔؔ࿈αʔϏε
    NEW!

    View Slide

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

    View Slide

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

    View Slide

  12. pixivにIけるコxbxa配信

    View Slide

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

    View Slide

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

    View Slide

  15. サービスと

    インフラストラクチャの成長

    View Slide

  16. 自社

    サーhuーム
    東京

    新宿DC
    福島

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. • ౦೔ຊେ਒ࡂΛ͖͔͚ͬʹDC΁ͷҠߦΛՃ଎
    • ඃ֐ࣗମ͸ͳ͔ͬͨ΋ͷͷओͩͬͨػೳ͸

    σʔληϯλʔʹҠ͢͜ͱʹ
    • ࣗ࡞αʔό͔ΒΑΓߴεϖοΫͳ1UαʔόʹҠߦ
    DC΁ͷҠߦ
    自社

    サーhuーム
    東京

    新宿DC

    View Slide

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

    白河DC

    View Slide

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

    View Slide

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

    View Slide

  24. ·ͱΊ: αʔϏεͷ੒௕ͱΠϯϑϥ
    • pixivͷϝΠϯτϥϑΟοΫͰ͋Δը૾σʔλΛ഑৴͢Δڌ఺Λ
    ߏங͖ͯͨ͠
    • ΩϟογϡΫϥελΛεέʔϧͤ͞Δ͜ͱͰ

    ࡹ͚ΔτϥϑΟοΫΛεέʔϧ͠΍͍͢ߏ੒ʹ
    自社

    サーhuーム
    東京

    新宿DC
    福島

    白河DC
    アプリケーション
    開発・小規模サービス 画像・広告配信

    View Slide

  25. pixivΛࢧ͑Δ

    ίϯςϯπ഑৴Ϋϥελ

    View Slide

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

    View Slide

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

    View Slide

  28. ΩϟογϡΫϥελͷߏ੒ͱ

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

    View Slide

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

    View Slide

  30. 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

    View Slide

  31. • υϝΠϯΛෳ਺ʹ෼ׂͨ͜͠ͱͰϝϞϦΩϟογϡ΋

    ෳ਺ʹ෼ׂͰ͖Δ
    • Ωϟογϡώοτ཰͕एׯ޲্
    υϝΠϯγϟʔσΟϯάʹΑΔ

    Ωϟογϡ෼ࢄ
    mntToッシp
    n:inF
    mntToッシp
    n:inF
    ɾɾɾ
    mntToッシp
    n:inF
    i1.pixiv.net i2.pixiv.net i4.pixiv.net

    View Slide

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

    tmpfsΛར༻ͯ͠ϝϞϦ্ʹΩϟογϡϑΝΠϧΛอ࣋

    View Slide

  33. ίϯγεςϯτϋογϯάʹΑΔ

    ϩʔυόϥϯγϯά
    • URLΛΩʔʹͯ͠ϋογϯά͢Δ͜ͱͰ

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

    ඞͣ͜ͷαʔόʹ

    View Slide

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

    View Slide

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

    View Slide

  36. Apache TrafficServerʹΑΔ

    σΟεΫΩϟογϡ
    • σΟεΫΩϟογϡʹ͸Apache TrafficServer (ATS) Λ࢖༻
    • ୯ҰΦϒδΣΫτʹΑΔΩϟογϡͳͷͰϑΝΠϧγεςϜͷ

    inode੍ݶͳͲΛؾʹ͢Δඞཁ͕ͳ͍
    • SATA SSDΛmdadmʹΑΓRAID0(ετϥΠϐϯά)͢Δ͜ͱͰ
    Ԡ౴ੑΛ޲্
    256GB 256GB 256GB
    Software RAID (mdadm)
    ATS Cache Volume

    View Slide

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

    View Slide

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

    View Slide

  39. ·ͱΊ:pixivͷίϯςϯπ഑৴Ϋϥελ
    • Φʔϓϯιʔειϑτ΢ΣΞΛ׆༻ͨ͠

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide