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

Microservices in Action

Microservices in Action

マイクロサービスの概要と適用

Naoto Takai

December 09, 2015
Tweet

More Decks by Naoto Takai

Other Decks in Technology

Transcript

  1. .JDSPTFSWJDFTͷ֓ཁͱద༻

    View Slide

  2. ઈࢍɺαʔϏε։ൃΤϯδχΞืूதͰ͢ʂ

    View Slide

  3. .JDSPTFSWJDFTͱ͸Կ͔ʁ

    View Slide

  4. View Slide

  5. In short, the microservice architectural style is an approach
    to developing a single application as a suite of small
    services, each running in its own process and
    communicating with lightweight mechanisms, often an
    HTTP resource API.
    — James Lewis and Martin Fowler

    View Slide

  6. Our main aim in writing this article is to explain the major
    ideas and principles of microservices. … We have recently
    built several systems using the style and know of others
    who have used and favor this approach.
    Those we know about who are in some way pioneering the
    architectural style include Amazon, Netflix, The Guardian,
    the UK Government Digital Service, realestate.com.au,
    Forward and comparethemarket.com.
    — James Lewis and Martin Fowler

    View Slide

  7. ͳΜ͔ͩ஌Βͳ͍͚Ͳɺ͜Μͳײ͡ͷ͍ͬͺ͍͋Δ
    ˠ͡Ό໊͋લΛ෇͚ͯهड़ͯ͠ΈΑ͏ʂ

    View Slide

  8. Banquet
    Cuisine
    Venue
    Banquet
    Cuisine
    Venue
    Banquet
    Cuisine
    Venue
    Load Balancer
    Venue Service Cuisine Service Banquete Service
    API Gateway
    Monolithic Architecture Microservices Architecture
    Database Database Database Database

    View Slide

  9. αʔϏεʹΑΔίϯϙʔωϯτԽʗϏδωεέΠύϏϦςΟ
    ʹجͮ͘૊৫ԽʗϓϩδΣΫτͰ͸ͳ͘ϓϩμΫτʗεϚʔ
    τΤϯυϙΠϯτɺμϜύΠϓʗ෼ࢄΨόφϯεʗ෼ࢄσʔ
    λ؅ཧʗΠϯϑϥετϥΫνϟࣗಈԽʗো֐ͷͨΊͷઃܭ
    ʗਐԽతઃܭ
    .JDSPTFSWJDFTʹΈΒΕΔ۝ͭͷಛ௃

    View Slide

  10. αʔϏεʹΑΔίϯϙʔωϯτԽ
    .POPMJUI"SDIJUFDUVSF
    Πϯϓϩηεͷϝιουݺ
    ͼग़͠ʢϥΠϒϥϦʣʹΑ
    ͬͯίϯϙʔωϯτͱͯ͠
    ར༻͢Δɻ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    ผϓϩηεͰಈ࡞͢Δαʔ
    ϏεΛωοτϫʔΫ௨৴ʹ
    Αͬͯίϯϙʔωϯτͱ͠
    ͯར༻͢Δɻ

    View Slide

  11. ϏδωεέΠύϏϦςΟʹجͮ͘૊৫Խ
    .POPMJUI"SDIJUFDUVSF
    ٕज़ϨΠϠʔʹج͍ͮͯν
    ʔϜΛ૊৫͢Δɻͦͷ݁
    ՌɺΞϓϦέʔγϣϯ͸ٕ
    ज़ϨΠϠʔͰ෼ׂ͞ΕΔɻ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    ϏδωεέΠύϏϦςΟʹ
    ج͍ͮͯαʔϏεΛ෼ׂ͢
    ΔɻνʔϜ͸ΫϩεϑΝϯ
    ΫγϣφϧͱͳΔɻ

    View Slide

  12. ϓϩδΣΫτͰ͸ͳ͘ϓϩμΫτ
    .POPMJUI"SDIJUFDUVSF
    ΞϓϦέʔγϣϯ͸ɺϓϩ
    δΣΫτͱͯ͠։ൃ͞Ε
    Δɻ׬੒ޙʹνʔϜ͸ղࢄ
    ͠ɺӡ༻νʔϜʹҾ͖ܧ͕
    ΕΔɻ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    ΞϓϦέʔγϣϯ͸ɺϓϩ
    μΫτͱͯ͠։ൃ͞ΕΔɻ
    νʔϜ͸ɺӡ༻΋ؚΊαʔ
    Ϗεͷ͢΂ͯʹ੹೚Λ࣋
    ͭɻ

    View Slide

  13. εϚʔτΤϯυϙΠϯτͱμϜύΠϓ
    .POPMJUI"SDIJUFDUVSF
    ૬ޓ઀ଓʹ&4#Λར༻͢
    Δɻ&4#͸ϧʔςΟϯάɺ
    ίϨΦάϥϑΟɺτϥϯε
    ϑΥʔϝʔγϣϯͳͲચ࿅
    ͞ΕͨػೳΛ࣋ͭɻ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    ૬ޓ઀ଓʹ͸)551΍ܰྔ
    ϝοηʔδΩϡʔΛར༻͢
    Δɻܦ࿏͸୯७ͳμϜύΠ
    ϓͰΤϯυϙΠϯτͷΈ͕
    ػೳΛ΋ͭɻ

    View Slide

  14. ෼ࢄΨόφϯε
    .POPMJUI"SDIJUFDUVSF
    ඪ४ԽʹΑͬͯɺͻͱͭͷ
    ٕज़ϓϥοτϑΥʔϜʹߜ
    ΓࠐΉɻ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    αʔϏεຖʹ࠷దͳٕज़͕
    બ୒͞ΕΔɻ·ͨɺඪ४Խ
    Ͱ͸ͳ͘Φʔϓϯιʔεత
    ͳ΍Γํ͕ͱΒΕΔɻ

    View Slide

  15. ෼ࢄσʔλ؅ཧ
    .POPMJUI"SDIJUFDUVSF
    ͻͱͭͷσʔλϕʔεΛΞ
    ϓϦέʔγϣϯʹΘͨͬͯ
    ڞ༗͢ΔɻҰ؏ੑ͸σʔλ
    ϕʔετϥϯβΫγϣϯʹ
    ΑΓ୲อ͞ΕΔɻ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    σʔλ͸ʮڥք͚ͮΒΕͨ
    ίϯςΩετʯͰ෼ׂ͞Ε
    Δɻ·ͨɺϙϦάϩοτӬ
    ଓԽϞσϧɺ݁Ռ੔߹ੑ΋
    ࠾༻͞ΕΔɻ

    View Slide

  16. ΠϯϑϥετϥΫνϟࣗಈԽ
    .POPMJUI"SDIJUFDUVSF
    ܧଓతσϦόϦ͕࣮ݱ͞Εɺ
    ࣗಈςετɺࣗಈσϓϩΠ
    ͳͲ͕࠾༻͞Ε͍ͯΔɻ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    ܧଓతσϦόϦ͕࣮ݱ͞Εɺ
    ࣗಈςετɺࣗಈσϓϩΠ
    ͳͲ͕࠾༻͞Ε͍ͯΔɻ

    View Slide

  17. ো֐ͷͨΊͷઃܭ
    .POPMJUI"SDIJUFDUVSF
    ϚΠΫϩαʔϏεʹൺ΂ͯ
    ෳࡶ͞͸গͳ͍ɻΠϯϓϩ
    ηεͷݺͼग़͠Ͱ͸ϦΞϧ
    λΠϜͳ؂ࢹ͸ͦΕ΄Ͳॏ
    ཁͰ͸ͳ͍ɻ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    ΞϓϦέʔγϣϯ͸αʔϏ
    εͷো֐ʹ଱ੑΛ࣋ͭΑ͏
    ʹઃܭ͞ΕΔɻαʔϏεؒ
    ݺͼग़͠ͷϦΞϧλΠϜͳ
    ؂ࢹ͕ॏཁͱͳΔɻ

    View Slide

  18. ਐԽతઃܭ
    .POPMJUI"SDIJUFDUVSF
    ܭըతઃܭ͕ͱΒΕ͕ͪɻ
    ͲΜͳมߋ΋ϑϧϏϧυͱ
    શମͷσϓϩΠ͕ඞཁͱͳ
    Δɻ
    .JDSPTFSWJDFT"SDIJUFDUVSF
    ਐԽతઃܭ͕࠾༻͞ΕΔɻ
    αʔϏε෼ׂ͸มԽΛՃ଎
    ͤ͞ΔͨΊͷπʔϧͱͯ͠
    Έͳ͞ΕΔɻ

    View Slide

  19. Banquet
    Cuisine
    Venue
    Banquet
    Cuisine
    Venue
    Banquet
    Cuisine
    Venue
    Load Balancer
    Venue Service Cuisine Service Banquete Service
    API Gateway
    Monolithic Architecture Microservices Architecture
    Database Database Database Database

    View Slide

  20. ͍ͭ.JDSPTFSWJDFTΛద༻͢΂͖͔ʁ

    View Slide

  21. don’t even consider microservices unless you have a
    system that's too complex to manage as a monolith.
    — Martin Fowler

    View Slide

  22. IUUQNBSUJOGPXMFSDPNCMJLJ.JDSPTFSWJDF1SFNJVNIUNM

    View Slide

  23. ͜ΕͰɺNJDSPTFSWJDFT͕෼͔ͬͨਓʁ

    View Slide

  24. ࣮͸ɺ.BSUJO'PXMFSͷهࣄ͚ͩͰ͸ɺ
    NJDSPTFSWJDFTͷ࣮ଶ͸෼͔Γ·ͤΜʂ

    View Slide

  25. Banquet
    Cuisine
    Venue
    Banquet
    Cuisine
    Venue
    Banquet
    Cuisine
    Venue
    Load Balancer
    Venue Service Cuisine Service Banquete Service
    API Gateway
    Monolithic Architecture Microservices Architecture
    Database Database Database Database

    View Slide

  26. Service Service
    Service
    Microservices Architecture
    Service
    Service
    Service
    Service
    Service

    View Slide

  27. Service Service
    Service
    Microservices Architecture
    Service
    Service
    Service
    Service
    Service
    ೝূೝՄͲ͏͢Δͷʁ
    ௨৴ϓϩτίϧ͸ʁ
    αʔϏεσΟεΧόϦͲ͏͢Δʁ
    ઃఆมߋΛͲ͏؅ཧ͢Δʁ
    εϩοτϦϯάඞཁͩΑͶʁ
    Τϥʔ؂ࢹͲ͏͢Δʁ
    ϦΫΤετ͸࣮ࡍʹͲͷϊʔυͰॲཧ͞Εͨͷʁ
    ϘτϧωοΫͲ͜ʁ
    ϑΝϯΞ΢τͯ͠ϦΫΤετ૿͑ͯΔʁ
    αʔΩοτϒϨʔΧʔඞཁͩΑͶʁ
    ςετͲ͏͢Μͷʁ
    ίϯςφʁɹϋΠύʔόΠβʔʁ
    αʔϏεΠϯɾΞ΢τͲ͏͢Μͷʁ
    ৑௕ԽͲ͏͢Δʁ
    ฒྻϦΫΤετͲ͏͢Δʁ
    αʔϏεͷґଘؔ܎ͬͯʁ

    View Slide

  28. Service Service
    Service
    Microservices Architecture
    Service
    Service
    Service
    Service
    Service
    ೝূೝՄͲ͏͢Δͷʁ
    ௨৴ϓϩτίϧ͸ʁ
    αʔϏεσΟεΧόϦͲ͏͢Δʁ
    ઃఆมߋΛͲ͏؅ཧ͢Δʁ
    εϩοτϦϯάඞཁͩΑͶʁ
    Τϥʔ؂ࢹͲ͏͢Δʁ
    ϦΫΤετ͸࣮ࡍʹͲͷϊʔυͰॲཧ͞Εͨͷʁ
    ϘτϧωοΫͲ͜ʁ
    ϑΝϯΞ΢τͯ͠ϦΫΤετ૿͑ͯΔʁ
    αʔΩοτϒϨʔΧʔඞཁͩΑͶʁ
    ςετͲ͏͢Μͷʁ
    ίϯςφʁɹϋΠύʔόΠβʔʁ
    αʔϏεΠϯɾΞ΢τͲ͏͢Μͷʁ
    ৑௕ԽͲ͏͢Δʁ
    ฒྻϦΫΤετͲ͏͢Δʁ
    αʔϏεͷґଘؔ܎ͬͯʁ
    ͦ΋ͦ΋Կʹࠔͬͯͨͷʁ

    View Slide

  29. I am sorry to disappoint my fellow techies, but the
    reason we migrated to microservices had to do much
    more with productivity than pure technical matters.
    — Phil Calçado

    View Slide

  30. ࣄྫɿ/FUqJY

    View Slide

  31. w ಈը഑৴ͷձࣾͰ"84ͷେޱސ٬
    w ΠϯλʔωοτͷଳҬͷΛ઎ΊΔ
    w .JDSPTFSWJDFTͷ୅දతࣄྫ
    w ελοΫΛ044ͱͯ͠ެ։

    View Slide

  32. View Slide

  33. ڞ௨ϥϯλΠϜαʔϏεͱϥΠϒϥϦʔ
    ŠŠϚΠΫϩαʔϏεΛՃ଎͢ΔϥϯλΠϜίϯςφʔͱϥΠϒϥϦʔɺαʔϏεɻ
    Ϋϥ΢υϓϥοτϑΥʔϜ͸ɺ/FUqJYͷେ෦෼Λ઎ΊΔαʔϏε܈ͷجૅͰ͋ΓɺςΫϊϩδʔελοΫͰ͢ɻ
    Ϋϥ΢υϓϥοτϑΥʔϜ͸ɺΫϥ΢υαʔϏε΍ΞϓϦέʔγϣϯϥΠϒϥϦɺΞϓϦέʔγϣϯίϯς
    φ͔Βߏ੒͞Ε·͢ɻಛʹϓϥοτϑΥʔϜʹΑͬͯɺ&VSFLBʹΑΔαʔϏεσΟεΧόϦɺ"SDIBJVTʹΑΔ
    ෼ࢄઃఆ؅ཧɺ3JCCPOʹΑΔϨδϦΤϯεͰΠϯςϦδΣϯτͳϓϩηεʗαʔϏεؒ௨৴ͳͲ͕ɺఏڙ͞
    Ε·͢ɻ୯ҰͷαʔϏεݺͼग़͠ʹͱͲ·Βͳ͍৴པੑΛఏڙ͢ΔͨΊʹɺ)ZTUSJYʹΑͬͯϥϯλΠϜͰಠ
    ཱͨ͠଱ϨΠςϯγͱ଱ো֐ੑ͕ఏڙ͞Ε·͢ɻ͜ΕΒͷϥΠϒϥϦʔ΍αʔϏε͸ɺ+7.ϕʔείϯςφͰ
    ͋Ε͹ͲͷΑ͏ͳ؀ڥͰ΋ಈ࡞͠·͢ɻ
    ·ͨɺϓϥοτϑΥʔϜ͸+7.ίϯςφαʔϏεΛɺ,BSZPOͱ(PWFSOBUPSɺඇ+BWBϥϯλΠϜ؀ڥ޲͚ʹ͸
    1SBOBαΠυΧʔʹΑΓɺఏڙ͠·͢ɻ1SBOB͕Πϯελϯε಺ͰϓϩΩγػೳΛఏڙ͢Δͷʹର͠ɺ;VVM
    ʢ)ZTUSJYͱ&VSFLBɺ3JCCPOͷϓϩηεؒ௨৴ػೳΛ౷߹͢Δ΋ͷʣ͸ɺΫϥ΢υ؀ڥͷڥքʹ͓͚Δಈతʹ
    εΫϦϓτʹΑ੍ͬͯޚՄೳͳϓϩΩγΛఏڙ͠·͢ɻ

    View Slide

  34. ύϧεͷϑΝϧγͷϧγ͕ύʔδͰ
    ίΫʔϯʘ ?P?
    ʗ

    View Slide

  35. ڞ௨ϥϯλΠϜαʔϏεͱϥΠϒϥϦʔ
    ŠŠϚΠΫϩαʔϏεΛՃ଎͢ΔϥϯλΠϜίϯςφʔͱϥΠϒϥϦʔɺαʔϏεɻ
    Ϋϥ΢υϓϥοτϑΥʔϜ͸ɺ/FUqJYͷେ෦෼Λ઎ΊΔαʔϏε܈ͷجૅͰ͋ΓɺςΫϊϩδʔελοΫͰ͢ɻ
    Ϋϥ΢υϓϥοτϑΥʔϜ͸ɺΫϥ΢υαʔϏε΍ΞϓϦέʔγϣϯϥΠϒϥϦɺΞϓϦέʔγϣϯίϯς
    φ͔Βߏ੒͞Ε·͢ɻಛʹϓϥοτϑΥʔϜʹΑͬͯɺ&VSFLBʹΑΔαʔϏεσΟεΧόϦɺ"SDIBJVTʹΑΔ
    ෼ࢄઃఆ؅ཧɺ3JCCPOʹΑΔϨδϦΤϯεͰΠϯςϦδΣϯτͳϓϩηεʗαʔϏεؒ௨৴ͳͲ͕ɺఏڙ͞
    Ε·͢ɻ୯ҰͷαʔϏεݺͼग़͠ʹͱͲ·Βͳ͍৴པੑΛఏڙ͢ΔͨΊʹɺ)ZTUSJYʹΑͬͯϥϯλΠϜͰಠ
    ཱͨ͠଱ϨΠςϯγͱ଱ো֐ੑ͕ఏڙ͞Ε·͢ɻ͜ΕΒͷϥΠϒϥϦʔ΍αʔϏε͸ɺ+7.ϕʔείϯςφͰ
    ͋Ε͹ͲͷΑ͏ͳ؀ڥͰ΋ಈ࡞͠·͢ɻ
    ·ͨɺϓϥοτϑΥʔϜ͸+7.ίϯςφαʔϏεΛɺ,BSZPOͱ(PWFSOBUPSɺඇ+BWBϥϯλΠϜ؀ڥ޲͚ʹ͸
    1SBOBαΠυΧʔʹΑΓɺఏڙ͠·͢ɻ1SBOB͕Πϯελϯε಺ͰϓϩΩγػೳΛఏڙ͢Δͷʹର͠ɺ;VVM
    ʢ)ZTUSJYͱ&VSFLBɺ3JCCPOͷϓϩηεؒ௨৴ػೳΛ౷߹͢Δ΋ͷʣ͸ɺΫϥ΢υ؀ڥͷڥքʹ͓͚Δಈతʹ
    εΫϦϓτʹΑ੍ͬͯޚՄೳͳϓϩΩγΛఏڙ͠·͢ɻ

    View Slide

  36. ରԠσόΠε͕ଟ͘ɺϝϞϦ͕ݶΒΕͨσόΠε
    ΋͋Δɻ·ͨɺϞόΠϧར༻΋૝ఆͯ͠ɺ௨৴ճ
    ਺ΛݮΒ͍ͨ͠ɻ

    View Slide

  37. ΫϥΠΞϯτ
    3&45GVM"1*
    Ϧιʔε
    3&45GVM"1*
    Ϧιʔε
    3&45GVM"1*
    Ϧιʔε
    3FTPVSDFCBTFE"1*
    ΫϥΠΞϯτ͕ϦιʔεΛऩूɾ
    ੔ܗͯ͠දࣔ

    View Slide

  38. ΫϥΠΞϯτ
    3&45GVM"1*
    Ϧιʔε
    3&45GVM"1*
    Ϧιʔε
    3&45GVM"1*
    Ϧιʔε
    "1*(BUFXBZ
    &YQFSJFODFCBTFE"1*
    ;VVMΫϥ΢υ؀ڥͷڥքʹ͓͚Δಈతʹ
    εΫϦϓτʹΑ੍ͬͯޚՄೳͳϓϩΩγ
    "1*(BUFXBZ͕ϦιʔεΛऩूɾ
    ੔ܗɺΫϥΠΞϯτ͕දࣔ

    View Slide

  39. Ұ෦ͷαʔϏεͷো֐Λશମʹ೾ٴͤ͞Δ͜ͱͳ͘
    αʔϏεશମͷϨδϦΤϯεΛߴΊ͍ͨɻ

    View Slide

  40. ΫϥΠΞϯτ
    3&45GVM"1*
    Ϧιʔε
    3&45GVM"1*
    Ϧιʔε
    3&45GVM"1*
    Ϧιʔε
    "1*(BUFXBZ
    ͻͱͭͷαʔϏεʹো֐͕͋Δͱ
    શମͷαʔϏε͕ো֐ͱͳΔ
    Մ༻ੑͷαʔϏε͕ݸ
    ʹˠ
    ʹສϦΫΤετˠສΤϥʔ

    View Slide

  41. ΫϥΠΞϯτ
    3&45GVM"1*
    Ϧιʔε
    3&45GVM"1*
    Ϧιʔε
    3&45GVM"1*
    Ϧιʔε
    "1*(BUFXBZ
    )ZTUSJY଱ϨΠςϯγͱ଱ো֐ੑ
    αʔϏεϨϕϧͷάϨʔεϑϧɾ
    σάϨʔγϣϯΛ࣮ݱ
    ϑΣΠϧϑΝετʗϑΣΠϧαΠϨϯτʗϑΥʔϧ
    όοΫɺαʔΩοτϒϨʔΧʔ

    View Slide

  42. αʔϏε਺͕૿͑ΔʹͭΕͯ
    ಺෦ϩʔυόϥϯαʔͷ؅ཧ͕ࠔ೉ʹͳΔ

    View Slide

  43. ϩʔυόϥϯα
    "1*(BUFXBZ
    αʔϏε
    ϊʔυ
    αʔϏε
    ϊʔυ
    αʔϏε
    ϊʔυ
    αʔϏεͷ਺͚ͩ಺෦ϩʔυόϥϯαΛ؅ཧ͢Δ

    ඞཁ͕͋Δ
    ಺෦ϩʔυόϥϯα

    View Slide

  44. "1*(BUFXBZ
    αʔϏε
    ϊʔυ
    αʔϏε
    ϊʔυ
    αʔϏε
    ϊʔυ
    3JCCPOΫϥΠΞϯταΠυϩʔυόϥ
    ϯγϯάʹΑΔϨδϦΤϯεͰΠϯςϦ
    δΣϯτͳϓϩηεʗαʔϏεؒ௨৴
    ΫϥΠΞϯταΠυ

    ϩʔυόϥϯγϯά

    View Slide

  45. ϊʔυΛ௥Ճ͢Δ͚ͩͰαʔϏεΛ
    εέʔϧͰ͖ΔΑ͏ʹ͢Δ

    View Slide

  46. &VSFLBαʔϏεσΟεΧόϦʹΑΔ

    ಈతͳϊʔυͷొ࿥ͱཁٻ
    "1*(BUFXBZ
    αʔϏε
    ϊʔυ
    αʔϏε
    ϨδετϦ
    ొ࿥
    Ұཡ
    αʔϏεϨδετϦʹΑΔ

    σΟεΧόϦ

    View Slide

  47. ,BSZPOαʔϏεϨδετϦ΁ͷొ࿥ͳͲΛ

    ఏڙ͢Δ+7.ίϯςφαʔϏε
    αʔϏε
    ϨδετϦ
    ొ࿥
    ϔϧενΣοΫ
    ίϯςφαʔϏε
    ΞϓϦέʔγϣϯ
    ίϯςφαʔϏεͷಋೖ

    View Slide

  48. 1SBOBαΠυΧʔύλʔϯ
    ʹΑΓଞαʔϏεϊʔυʹ
    ରͯ͠Πϯελϯε಺Ͱϓ
    ϩΩγػೳΛఏڙ
    αʔϏε
    ϨδετϦ
    1SBOB
    BQQSC
    αʔϏε
    ϊʔυ
    αʔϏε
    ϊʔυ
    ϦΫΤετ
    ϦΫΤετ
    ొ࿥
    ϔϧενΣοΫ
    ϦΫΤετ
    ϔϧε
    νΣοΫ
    αΠυΧʔύλʔϯ

    View Slide

  49. ;VVM
    3JCCPO)ZTUSJY
    &VSFLB
    ,BSZPO 1SBOB
    ϦΫΤετ
    ΫϥΠΞϯτ ΞϓϦέʔγϣϯ
    "1*(BUFXBZ
    αʔϏε
    ϨδετϦ
    Ϩεϙϯε
    ొ࿥
    ϦΫΤετ
    Ұཡ
    Ϩεϙϯε
    ΞϓϦέʔγϣϯ
    ίϯςφαʔϏε
    ΞϓϦέʔγϣϯ
    ίϯςφαʔϏε
    ϩʔυόϥϯγϯάʴ
    ଱ϨΠςϯγɾ଱ো֐ϨΠϠʔ
    ϦΫΤετͷͳ͕Ε

    View Slide

  50. ࣄྫɿ$PPLQBE

    View Slide

  51. w ϨγϐαΠτͰ"84ͷސ٬
    w ʙ୅ঁੑͷ΄ͱΜͲ͕ར༻
    w ࠃ಺Ͱ͸3VCZPO3BJMTͷ୅දతࣄྫ
    w ελοΫΛ044ͱͯ͠ެ։

    View Slide

  52. View Slide

  53. w ࣄۀྖҬ͕֦େ͠αʔϏε͕૿͑ΔʹͭΕͯɺ
    σʔλ࿈ܞͷχʔζ͕ߴ·͖ͬͯͨ
    w ϞόΠϧΞϓϦͷ୆಄ʹΑͬͯϞόΠϧϑΝʔ
    ετΛલఏͱͨ͠։ൃʢʹ"1*લఏʣ͕ॏཁʹ
    ͳ͖ͬͯͨ

    View Slide

  54. w ෳ਺αϒγεςϜؒͰͷίʔυͷڞ༗ʹΑΓί
    ʔυϕʔε͕ڊେʹͳΓɺશମ͕೺ѲͰ͖ͳ͍
    w ܧଓతΠϯςάϨʔγϣϯͰ෼ؒϏϧυΛक
    ΔͨΊʹଟେͳίετ͕͔͔Δ
    w Ұ෦ػೳͷͨΊʹશମͷσϓϩΠϝϯτ͕Ͱ͖
    ͳ͔ͬͨΓɺϩʔϧόοΫ͢Δඞཁ͕ൃੜ͢Δ

    View Slide

  55. .POPMJUIJDBSDIJUFDUVSFͷ΋ͱͷෳࡶੑͷݶք
    ˠ.JDSPTFSWJDFTBSDIJUFDUVSF΁ͷ଩औΓ

    View Slide

  56. ͍͔ʹͯ͠"1*Λఏڙ͢Δ͔ʁ
    ˠ3&45GVM)ZQFSNFEJB"1*ͷಋೖ

    View Slide

  57. (BSBHF
    w )"5&0"4ʹݱ࣮తͳϨϕϧͰରԠ
    w 3VCZPO3BJMTʹϦιʔεͷ֓೦Λಋೖ͢Δ

    ʹઃܭࢥ૝ɾγϦΞϥΠθʔγϣϯܗࣜͷ౷Ұ
    w 0"VUIͱ౷߹͞ΕͨΞΫηε੍ޚ
    w ಉ͡ΫϥΠΞϯτϥΠϒϥϦ͕ར༻Մೳ

    View Slide

  58. ࣮ࡍʹ"1*࿈ܞͯ͠ΈΔͱʜʜ
    w Ұ෦ͷαʔϏεো֐͕શମʹ೾ٴͯ͠͠·͏
    w αʔϏεؒ௨৴͕஗͍
    ˠΫϥΠΞϯτʹ଱ো֐ੑɺ଱ϨΠςϯγʔ͕ඞཁ
    ˠΫϥΠΞϯτʹฒྻϦΫΤετػೳ͕ඞཁ

    View Slide

  59. &YQFEJUPS
    w /FUqJYͷIZTUSJYΛΠϯεύΠΞ
    w ඇಉظ࣮ߦɺϑΥʔϧόοΫɺλΠϜΞ΢τɺ
    ϦτϥΠɺεϨουϓʔϧɺαʔΩοτϒϨΠ
    ΧʔͳͲΛ࣮૷

    View Slide

  60. ϩʔυόϥϯαʔʢ&-#ʣΛར༻͍͕ͯͨ͠ʜʜ
    w αʔϏεͷ਺͚ͩ಺෦ϩʔυόϥϯαʔ͕ඞཁͱ
    ͳΓɺ؅ཧίετ͕૿େ͢Δ
    w શମͷαʔϏεϨϕϧ͕&-#ʹґଘͯ͠͠·͏
    ˠ&-#͔ΒΫϥΠΞϯταΠυϩʔυόϥϯγϯά΁

    View Slide

  61. Load Balancer
    ELB
    Service
    Service
    Client ELB
    Service
    Service

    View Slide

  62. Client-side Load Balancing
    Client
    HAProxy Service
    HAProxy
    Service
    HAProxy
    Service
    HAProxy
    Service
    HAProxy

    View Slide

  63. ΫϥΠΞϯτϩʔυόϥϯγϯάΛಋೖ͕ͨ͠ʜʜ
    w αʔϏεϊʔυͷ௥Ճ࣌ʹશϊʔυͷ)"1SPYZͷ
    ઃఆΛมߋ͢Δඞཁ͕͋Δ
    ˠ෼ࢄઃఆ؅ཧͷಋೖ

    View Slide

  64. ෼ࢄઃఆ؅ཧ
    w FUDE ʜઃఆ৘ใ؅ཧͷͨΊͷσʔϞϯ
    w FUDWBVMUʜಁաతͳ҉߸ԽΛఏڙ
    w FUDFOW ʜEPUFOWɺEPDLFSFOWϑΝΠϧʹରԠ

    View Slide

  65. αʔϏεΛؾܰʹ௥ՃͰ͖ΔΑ͏ʹͳ͕ͬͨʜʜ
    w αʔϏε͝ͱɺεςʔδ͝ͱʢ։ൃɾςετɾε
    ςʔδϯάɾϓϩμΫγϣϯɾόονʣͷ؀ڥߏ
    ங͕൥ࡶʹͳͬͯ͠·͏
    ˠ%PDLFSίϯςφʔͷར༻֦େ

    View Slide

  66. ؀ڥߏங͸ίϯςφʔԽ͞Ε͕ͨʜʜ
    w αʔϏεؒ࿈ܞͷςετ͕೉͍͠
    w ϞοΫΛར༻͢ΔͱαʔόαΠυͷมߋʹؾ෇͘
    ͜ͱ͕Ͱ͖ͣʹࣦഊ͢Δ
    ˠ3BDL7$3ͷಋೖ

    View Slide

  67. 3BDL7$3
    w 7$3͸ϦΫΤετϞοΫ༻ϥΠϒϥϦ
    w αʔόαΠυ͕ΫϥΠΞϯτʹ͔ͭΘ͍ͤͨσʔ
    λΛੜ੒͓ͯ͘͠
    w ΫϥΠΞϯταΠυ͸ςετલʹςετσʔλΛ
    μ΢ϯϩʔυ͔ͯ͠ΒςετΛ࣮ߦ

    View Slide

  68. .JDSPTFSWJDFTద༻ͷϙΠϯτ

    View Slide

  69. αʔϏεʹΑΔίϯϙʔωϯτԽʗϏδωεέΠύϏϦςΟ
    ʹجͮ͘૊৫ԽʗϓϩδΣΫτͰ͸ͳ͘ϓϩμΫτʗεϚʔ
    τΤϯυϙΠϯτɺμϜύΠϓʗ෼ࢄΨόφϯεʗ෼ࢄσʔ
    λ؅ཧʗΠϯϑϥετϥΫνϟࣗಈԽʗো֐ͷͨΊͷઃܭ
    ʗਐԽతઃܭ
    .JDSPTFSWJDFTʹΈΒΕΔ۝ͭͷಛ௃

    View Slide

  70. Service Service
    Service
    Microservices Architecture
    Service
    Service
    Service
    Service
    Service
    ೝূೝՄͲ͏͢Δͷʁ
    ௨৴ϓϩτίϧ͸ʁ
    αʔϏεσΟεΧόϦͲ͏͢Δʁ
    ઃఆมߋΛͲ͏؅ཧ͢Δʁ
    εϩοτϦϯάඞཁͩΑͶʁ
    Τϥʔ؂ࢹͲ͏͢Δʁ
    ϦΫΤετ͸࣮ࡍʹͲͷϊʔυͰॲཧ͞Εͨͷʁ
    ϘτϧωοΫͲ͜ʁ
    ϑΝϯΞ΢τͯ͠ϦΫΤετ૿͑ͯΔʁ
    αʔΩοτϒϨʔΧʔඞཁͩΑͶʁ
    ςετͲ͏͢Μͷʁ
    ίϯςφʁɹϋΠύʔόΠβʔʁ
    αʔϏεΠϯɾΞ΢τͲ͏͢Μͷʁ
    ৑௕ԽͲ͏͢Δʁ
    ฒྻϦΫΤετͲ͏͢Δʁ
    αʔϏεͷґଘؔ܎ͬͯʁ

    View Slide

  71. w ઌୡͨͪͷ஌ݟΛ׆༻͢Δ
    w ·͡Ίʹٕज़తͳ͜ͱʹऔΓ૊Ή
    w ʢ΋͘͠͸ɺ"84͕Կͱ͔͢ΔͷΛ଴ͭʣ

    View Slide

  72. ઈࢍɺαʔϏε։ൃΤϯδχΞืूதͰ͢ʂ

    View Slide