Poiboy改善への道

 Poiboy改善への道

320c2f42c11d624354adda00b5539b81?s=128

Daichi Toma

January 23, 2019
Tweet

Transcript

  1. Poiboyվળ΁ͷಓ Matching Dev Meetup#2 - ServerSide January 23, 2019 Daichi

    TOMA
  2. About Me ᙛᚸ େઍ @Amothic גࣜձࣾ Diverse ϛΫγΟʹ৽ଔೖࣾ͠ɺmixi ΍ϞϯελʔετϥΠ ΫͷαʔόαΠυ։ൃʹैࣄ


    ਌ձࣾͷมߋʹ൐͍ɺגࣜձࣾDiverseʹస੶
 ݱࡏ͸PoiboyͷαʔόαΠυ΍ΠϯϑϥͷվળΛ ߦͬͯ·͢
  3. Poiboy • Πέϝϯָ͕͘͠ݟ͔ͭΔϚονϯάΞϓϦ • 2016೥ϦϦʔε • ձһ਺100ສਓಥഁ

  4. None
  5. 2017೥4݄ Poiboyͷ։ൃʹδϣΠϯɾɹɹ

  6. ৽͍͠ΞϓϦͳͷʹ ົʹݹΊ͔͍͠ॴ͕ଟ͍

  7. ؤுͬͯ௚͔͢͠ͳ͍

  8. ՝୊͸ࢁੵΈ

  9. Ͳͷॱ൪Ͱ௚͍͔ͯ͘͠

  10. վળ΁ͷಓ

  11. վળ΁ͷಓ 1. (ࢲͷ) ։ൃͷ΍Δؾ͕ͳ͘ͳΔݪҼΛվળ 2. ์ஔ͍ͯ͠ΔͱΠϯγσϯτ͕ى͖ΔՕॴͷ վળ 3. ਝ଎ʹ։ൃͰ͖ͳ͍ཧ༝Λվળ

  12. վળ΁ͷಓ 1. ։ൃ؀ڥΛDockerԽ 2. GitHub΁Ҡߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏ੒؅ཧΛAnsible΁ 5.

    ΦϯϓϨϛε͔Βͷ୤٫ 6. ૊৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
  13. վળ΁ͷಓ 1. ։ൃ؀ڥΛDockerԽ 2. GitHub΁Ҡߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏ੒؅ཧΛAnsible΁ 5.

    ΦϯϓϨϛε͔Βͷ୤٫ 6. ૊৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
  14. ։ൃ؀ڥͷDockerԽ • ࣮͸ݩ͔ΒDocker͕ͩͬͨɺ
 ͳ͔ͥ։ൃ؀ڥͷηοτΞοϓʹ1೔͔͔Δ • DockerΛVMͷΑ͏ʹ࢖͍ͬͯͨͷ͕ݪҼ • Docker͸VMͰ͸ͳ͍ • Ұ൪࠷ॳʹਏ͍ؾ࣋ͪʹͳͬͨͷͰɺ


    Ұ൪࠷ॳʹ΍Δ͜ͱʹͨ͠
  15. ։ൃ؀ڥͷDockerԽ • DockerfileΛ࡞Γ௚͠ɺDocker Hub ͰࣗಈϏϧυ͢ΔΑ͏ʹ • docker-composeΛ׆༻ɺ1ίϯςφ1αʔϏεʹͳΔΑ͏ʹ
 ੔ཧ੔಴ • ϕʔεΠϝʔδʹalpineΛ࠾༻ɺΠϝʔδͷαΠζΛ


    3GB → 200MBҎԼʹ (ѹॖαΠζ͸70MBҎԼ) • ηοτΞοϓʹ1೔͔͔͍ͬͯͨͷ͕ɺ
 15෼Ҏ಺ͰऴΘΔΑ͏ʹͳͬͨ
  16. վળ΁ͷಓ 1. ։ൃ؀ڥΛDockerԽ 2. GitHub΁Ҡߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏ੒؅ཧΛAnsible΁ 5.

    ΦϯϓϨϛε͔Βͷ୤٫ 6. ૊৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
  17. GitHub΁ͷҠߦ • ݩʑ͸ϩʔΧϧ؀ڥͷGitLabΛར༻͍ͯͨ͠ • ͋Μ·ΓΠέͯΔUXͰ͸ͳ͍ (ݸਓͷ޷ΈͰ͢) • GitLabΛࣗલͰϝϯς͢Δίετ͕ߴ͍ • OSSͷίʔυ͸େମGitHubʹ͋Δ


    GitHubʹ׳Ε͓ͯ͘ϝϦοτ͸ΘΓͱ͋Δ
  18. GitHub΁ͷҠߦ • ઌʹGitLab CI͔ΒCircleCI΁ςετΛҠߦ
 (ద੾ͳDockerԽ͞Ε͍ͯΕ͹؆୯) • CIΛҠͨ͠λΠϛϯάͰ׬શҠߦ • શࣾͰ։ൃʹར༻ͨ͠ίʔυ͕ࣾ֎ʹެ։͞ΕΔ Α͏ʹͳͬͨ


    (ݱࡏɺDiverse ͷ Public Repositoryͷ਺ 23ݸ)
  19. վળ΁ͷಓ 1. ։ൃ؀ڥΛDockerԽ 2. GitHub΁Ҡߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏ੒؅ཧΛAnsible΁ 5.

    ΦϯϓϨϛε͔Βͷ୤٫ 6. ૊৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
  20. DBϚΠάϨʔγϣϯπʔϧͷಋೖ • େྔͷsqlϑΝΠϧ͕ϦϙδτϦʹ
 ஔ͔Ε͍ͯΔ͚ͩͷঢ়ଶͩͬͨ • Ͳ͜·Ͱద༻͔ͨ͠ద༻͍ͯ͠ͳ͍͔
 ෼͔Βͳ͍ • ઈରͦͷ͏ͪࣄނΔ

  21. DBϚΠάϨʔγϣϯπʔϧͷಋೖ • RidgepoleΛಋೖ • SchemafileʹςʔϒϧఆٛΛॻ͍͓ͯ͘ͱ applyίϚϯυͰ൓өͰ͖Δਆπʔϧ • ႈ౳ੑ͕͋Γɺ࢖͍΍͍͢

  22. վળ΁ͷಓ 1. ։ൃ؀ڥΛDockerԽ 2. GitHub΁Ҡߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏ੒؅ཧΛAnsible΁ 5.

    ΦϯϓϨϛε͔Βͷ୤٫ 6. ૊৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
  23. ߏ੒؅ཧΛAnsible΁ • ߏ੒؅ཧ͕υΩϡϝϯτʹΑΔਓྗ • Α͋͘Δ͜ͱͳͷͰɺͬ͘͞ͱAnsibleʹ͢Δ • RolesΛ্ख͘࢖͍ɺ࠶ར༻ੑΛߴΊ͓ͯ͘ • ॻ͖ํ͸geerlingguy͞ΜͷϦϙδτϦΛ
 ࢀߟʹ͢Δͷ͕ϕετϓϥΫςΟε

    (ͩͱࢥ͍ͬͯΔ)
  24. վળ΁ͷಓ 1. ։ൃ؀ڥΛDockerԽ 2. GitHub΁Ҡߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏ੒؅ཧΛAnsible΁ 5.

    ΦϯϓϨϛε͔Βͷ୤٫ 6. ૊৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
  25. ΦϯϓϨϛε͔Βͷ୤٫ • ΦϯϓϨϛεͰಈ͍͍ͯͨ
 (ਖ਼֬ʹ͸ϗεςΟϯάαʔϏε) • ґཔ͢ΔͷʹϝʔϧΛ౤͛ͯɺ2~3೔଴ͭ
 ඞཁ͕͋Δ • ΍Γ͍ͨ͜ͱΛ఻͑Δͷ͕େม

  26. ΦϯϓϨϛε͔Βͷ୤٫ • ਝ଎ʹɺ࣮ͦͯ֬͠ʹ։ൃ͢ΔͨΊ
 AWSҠߦΛܾҙ • ͳΔ΂͘ϑϧϚωʔδυαʔϏεΛ׆༻͠
 Ҡߦίετ͸Լ͛Δ

  27. ΦϯϓϨϛε͔Βͷ୤٫ • Ҡߦ͢Δ΂͖΋ͷҰཡ • DNS • Image Server • DB

    • memcached • App
  28. ΦϯϓϨϛε͔Βͷ୤٫
 DNS • Route 53Λར༻ • ଞ͔Βͷґଘ͕গͳ͍ͷͰҰ൪༰қ • ͔͠͠ࣄނΔͱ࣮֬ʹࢮ͵ͷͰɺ
 ςετ͸͔ͬ͠Γ΍Δ

  29. ΦϯϓϨϛε͔Βͷ୤٫
 Image Server • ը૾ͷΩϟογϡͱม׵Λߦ͏ઐ༻ͷαʔό ͕ෳ਺୆͋ͬͨ • Ωϟογϡͱม׵Λ෼͚ͯߟ͑Δ • Ωϟογϡ

    → CloudFront΁ • ม׵ → DockerԽ͠ɺECSͰӡ༻
  30. ΦϯϓϨϛε͔Βͷ୤٫
 DB • ࣗલӡ༻ͷMySQL͔ΒAurora΁Ҡߦ • AWSͰAuroraΛ࢖Θͳ͍ཧ༝͕͋·Γͳ͍

  31. ΦϯϓϨϛε͔Βͷ୤٫
 memcached • ී௨ʹElastiCacheΛ࢖͏

  32. ΦϯϓϨϛε͔Βͷ୤٫
 App • ansibleΛͦͷ··࢖͍͔ͨͬͨͷͰEC2΁ • ࠓͩͬͨΒFargateʹ͍ͯͨ͠ͱࢥ͍·͢ • ਝ଎ͳεέʔϧ͕Մೳʹͳͬͨ (ࠓ·Ͱ͸਺೔ ͔͔ͬͨ)

  33. ΦϯϓϨϛε͔Βͷ୤٫
 ͦͷଞ • AWSҠߦͯ͠ো֐ରԠ͕ѹ౗తʹݮͬͨ • ίετ΍ظ͕ؒඇৗʹ͔͔ΔݟࠐΈͩͬͨͷ ͰɺDirectConnect͸࢖Θͣਂ໷ʹ4࣌ؒ΄Ͳ ఀࢭͯ͠׬શҠߦͨ͠

  34. վળ΁ͷಓ 1. ։ൃ؀ڥΛDockerԽ 2. GitHub΁Ҡߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏ੒؅ཧΛAnsible΁ 5.

    ΦϯϓϨϛε͔Βͷ୤٫ 6. ૊৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
  35. ૊৫ͷϧʔϧΛม͑Δ (൪֎ฤ) • ίϯ΢ΣΠͷ๏ଇ
 γεςϜΛઃܭ͢Δ૊৫͸ɺͦͷߏ଄Λͦͬ ͘Γ·Ͷͨߏ଄ͷઃܭΛੜΈग़ͯ͠͠·͏ • ૊৫վળ͢Δ͜ͱͰɺγεςϜΛվળͰ͖Δ
 ˠ ٯίϯ΢ΣΠઓུ

  36. ૊৫ͷϧʔϧΛม͑Δ (൪֎ฤ) • ΞδϟΠϧͳ։ൃ͕͚ͨ͠Ε͹
 ΞδϟΠϧͳνʔϜʹ͢Δ • ։ൃ͕૊৫ʹҾͬுΒΕΔ͜ͱ͸ଟ͍ • ͦ΋ͦ΋ٕज़తෛ࠴͕ཷ·ΔݪҼ͸
 ૊৫ͷ໰୊͕େ͖͍

  37. վળ΁ͷಓ 1. ։ൃ؀ڥΛDockerԽ 2. GitHub΁Ҡߦ 3. DBϚΠάϨʔγϣϯπʔϧͷಋೖ 4. ߏ੒؅ཧΛAnsible΁ 5.

    ΦϯϓϨϛε͔Βͷ୤٫ 6. ૊৫ͷϧʔϧΛม͑Δ (൪֎ฤ)
  38. վળ΁ͷಓ 1. (ࢲͷ) ։ൃͷ΍Δؾ͕ͳ͘ͳΔݪҼΛվળ 2. ์ஔ͍ͯ͠ΔͱΠϯγσϯτ͕ى͖ΔՕॴͷ վળ 3. ਝ଎ʹ։ൃͰ͖ͳ͍ཧ༝Λվળ

  39. վળ΁ͷಓ • ্͔ΒཁٻϕʔεͰվળ͕߱Γͯ͘Δ͜ͱ͸ ͋·Γͳ͍ • ࣗ෼ࣗ਎Ͱ໰୊Λݟ͚ͭɺೳಈతʹղܾͯ͠ ͍͘ඞཁ͕͋Δ • ࠷ۙ͸վળσʔΛઃ͚ͯɺνʔϜΈΜͳͰ
 ΍ΔΑ͏ʹ͍ͯ͠·͢

  40. Join our team! https://diverse-inc.co.jp/recruit/