一休.com における改善事例のご紹介 /ikyu-storage-improvement

D2a23b20c732b68bc68017d8fc65afe0?s=47 kentana20
January 16, 2017

一休.com における改善事例のご紹介 /ikyu-storage-improvement

一休 ✕ bitFlyer コラボイベントでのLT資料です

D2a23b20c732b68bc68017d8fc65afe0?s=128

kentana20

January 16, 2017
Tweet

Transcript

  1. Ұٳ.com ʹ͓͚Δ ASP.NET։ൃ վળࣄྫͷ͝঺հ 2017.1.16 Kensuke Tanaka (@kentana20)

  2. ͓࿳ͼ ॾࣄ৘ʹΑΓλΠτϧͱ಺༰Λ มߋ͓ͯ͠࿩͍ͨ͠·͢

  3. ΠϕϯτϖʔδΑΓ

  4. ࠓ೔ͷ͓࿩ Ϋϥ΢υҠߦ΁޲͚ͨ αʔϏεվળͷࣄྫ ʢϑΝΠϧετϨʔδฤʣ

  5. About me • ాத ݈հ • @kentana20 • 2006೥5݄͔ΒҰٳ

  6. Agenda • αʔϏε๊͕͍͑ͯͨ՝୊ʢετϨʔδपΓʣ • վળ಺༰ͱޮՌ • ࠓޙʹ޲͚ͯ • ·ͱΊ

  7. αʔϏεͷ՝୊ ʢετϨʔδฤʣ

  8. എܠ • ҰٳͰ͸ɺ2017೥தʹݱࡏͷΦϯϓϨ؀ڥ͔Β
 Ϋϥ΢υ؀ڥ(AWS)΁ͷҠߦΛ༧ఆ֤ٕͯ͠ज़՝୊
 ʹର͢ΔվળΛਐΊ͍ͯΔ

  9. લఏ • Ұٳ.com Ͱ࢖༻͍ͯ͠Δը૾͸جຊతʹϗςϧɾ ཱྀ͔ؗΒఏڙΛड͚͍ͯΔ

  10. None
  11. None
  12. 1. ϗςϧɾཱྀؗ޲͚ͷ؅ཧը໘
 ͔ΒΞοϓϩʔυ
 2. ϝʔϧͰ΋Βͬͯࣾ಺ͷσβΠφʔ
 ͕Ճ޻ͯ͠Ξοϓϩʔυ(ϦϦʔε) ը૾ͷఏڙύλʔϯ

  13. γεςϜ๊͕͍͑ͯͨ ՝୊

  14. ՝୊ • ڞ༗ετϨʔδ໰୊ • ϨϙδτϦσΧ͗͢໰୊

  15. ڞ༗ετϨʔδ໰୊ • ϗςϧɾཱྀ͕ؗΞοϓϩʔυ͢Δը૾ • ImageMagickͰϦαΠζॲཧ(ಉظॲཧͰ஗͍…) • Shared DiskํࣜͰڞ༗ετϨʔδʹ഑ஔ • ϗςϧɾཱྀؗ਺૿Ճʹ൐͍ɺڞ༗ετϨʔδͷ


    σΟεΫ༰ྔΛѹഭ & ը૾഑৴༻αʔό΁ͷϦΫΤε τ૿Ճ
  16. ڞ༗ετϨʔδ໰୊

  17. ϨϙδτϦσΧ͗͢໰୊ • σβΠϯࢿࡐ΋͢΂ͯGit؅ཧ • σβΠφʔͱσϓϩΠϑϩʔΛἧ͑ΔͨΊʹ࣮ࢪ ͕ͨ͠ɺѱखͩͬͨ • ϨϙδτϦαΠζ͕1.5೥Ͱ4ഒʹ • clone

    / fetch / pull ͳͲͷGitૢ࡞͕ඇৗʹॏ͍
  18. ϨϙδτϦσΧ͗͢໰୊

  19. վળ಺༰ͱޮՌ

  20. վળ಺༰

  21. ڞ༗ετϨʔδΛ΍ΊΔ • Ξοϓϩʔυ͢Δը૾ʢσʔλը૾ʣ͸͢΂ͯS3΁
 ഑ஔ͠Shared Nothingͳߏ੒ʹ • ϦαΠζॲཧ͸LambdaͰ࣮ࢪ • CDNͷOriginΛS3ʹ޲͚ɺը૾഑৴αʔόʹର͢Δ
 ϦΫΤετΛ௿ݮ

  22. มߋલͷߏ੒ ը૾ ΞοϓϩʔυˍϦαΠζ ڞ༻ετϨʔδ ը૾ͷOrigin͸ ը૾഑৴αʔό ը૾഑৴༻αʔό www.ikyu.com cdn.ikyu.com

  23. มߋޙͷߏ੒ ը૾ Ξοϓϩʔυ ϦαΠζॲཧ ڞ༻ετϨʔδ ͸࢖༻͠ͳ͍ σʔλը૾ͷ Origin͸S3 Ξηοτը૾ͷ Origin͸Ұٳαʔό

    cdn.ikyu.com www.ikyu.com
  24. σβΠϯࢿࡐͷGit؅ཧΛ΍ΊΔ • σβΠφʔ͕Ճ޻ͨ͠ը૾͸S3ʹ௚઀Ξοϓϩʔυ͠ɺ Git؅ཧΛ΍ΊΔ • ϨϙδτϦʹೖΕΔͷ͸࠷௿ݶͷΞηοτͷΈ • Gitͷϩά͸γεςϜมߋͷΈʹ(ਐߦத)

  25. มߋલͷӡ༻ ڞ༻ετϨʔδ ը૾഑৴༻αʔό Ճ޻ޙը૾Λ Commit&Push ϦϦʔε σβΠφʔ

  26. มߋޙͷӡ༻ Ճ޻ޙը૾Λ Ξοϓϩʔυ σβΠφʔ Gitɺڞ༻ετϨʔδ͸࢖༻͠ͳ͍

  27. +αͰ࣮ࢪͨ͠ରԠ • Always on SSLʢAOSSLʣ ରԠΛݟਾ͑ͯS3ʹҠߦͨ͠
 ը૾ͷύεΛ͢΂ͯSSLԽʢMixed Contentsରࡦʣ

  28. ϋϚͬͨ͜ͱ • S3ҠߦʹΑͬͯCase SensitiveʹͳΓɺը૾͕ݟ͑ͳ͍ • AkamaiଆͰΩϟογϡ͢ΔͱCase Insentiveʹͳͬͯ ༨ܭʹ΍΍͔ͬͨ͜͠(AkamaiଆΦϓγϣϯ) • ΋ͱ΋ͱΞοϓϩʔυ͞Εͨը૾ͷେจࣈ/খจࣈ͕

    όϥόϥͩͬͨͷͰɺΞοϓϩʔυ࣌ʹ͢΂ͯLower CaseΛ͔͚ͯରԠ
  29. ޮՌ

  30. ޮՌ • ڞ༻ετϨʔδ͸ෆཁʹ • ը૾Ξοϓϩʔυߴ଎Խˍ҆ఆԽ • ը૾഑৴αʔό΁ͷϦΫΤετ͸ܹݮ • σβΠφʔͷӡ༻΋γϯϓϧʹ

  31. ޮՌ

  32. ޮՌ • σβΠφʔΑΓ • ʮը૾ͷࠩ͠ସ͑ͳͲɺස౓ߴ͘ߦ͏࡞ۀ͕
 ɹεϐʔυΞοϓ͠·ͨ͠ʂʯ • ӦۀΞγελϯτΑΓ • ʮը૾ͷΞοϓϩʔυ͕ΊͬͪΌૣ͘ͳͬͨʂʯ

  33. ࠓޙʹ޲͚ͯ

  34. ࠓޙͷରԠʢਐߦதʣ • લड़ͷϨϙδτϦܰྔԽ • σβΠϯࢿࡐͱͦͷཤྺΛফ͢ • Ұ෦ͷσβΠϯ࡞ۀΛCMSԽ • ϦϦʔεͤͣʹίϯςϯπߋ৽ՄೳͳՕॴΛ૿΍͢

  35. σβΠϯ࡞ۀCMSԽ • ߴස౓Ͱߋ৽͢Δ޿ࠂ/͓͢͢Ί࿮ͳͲͷ؅ཧ • TOPϖʔδͷϩʔςʔγϣϯͳͲΛ
 ผΞϓϦέʔγϣϯͰCMSԽ

  36. ͦͷଞͷվળ΋ਐΜͰ͍·͢ • ϝʔϧ഑৴ج൫ͷSaaSҠߦ • όονॲཧج൫RundeckԽ • ΞʔΩςΫνϟ࡮৽ɾΞϓϦέʔγϣϯ෼ׂ • Ϋϥ΢υҠߦ etc..

  37. ͦͷଞͷվળ΋ਐΜͰ͍·͢ • ϝʔϧ഑৴ج൫ͷSaaSҠߦ • όονॲཧج൫RundeckԽ • ΞʔΩςΫνϟ࡮৽ɾΞϓϦέʔγϣϯ෼ׂ • Ϋϥ΢υҠߦ etc..

    ؾʹͳΔํ͸͜ͷޙͷ
 ύωϧσΟεΧογϣϯ͔࠙਌ձͰ ͓࿩͠·͠ΐ͏ʂ
  38. ·ͱΊ

  39. ·ͱΊɾॴײ • ࡢࠓͰ͸౰ͨΓલͷ࿩ • σʔλը૾͸ετϨʔδαʔϏε΁ • ϨϙδτϦ͸γεςϜʹؔΘΔมߋͷΈ • ݱߦͷઃܭɾΞʔΩςΫνϟʹҾͬுΒΕͳ͍ •

    ͋Δ΂͖͔࢟ΒվળࡦΛߟ͑Δ • αʔϏεΛଓ͚Δͱ՝୊͸ग़Δ • ܧଓͨ͠վળΛ͜Ε͔Β΋࣮ࢪ
  40. ͝੩ௌ
 ͋Γ͕ͱ͏͍͟͝·ͨ͠