ScalaͱPerlͰ Microservices in productionid:aereal @ Cookpad Tech Kitchen #11 feat. ͯͳ
View Slide
ࣗݾհ• id:aereal• גࣜձࣾͯͳ (2012ʙ)• ͯͳϒοΫϚʔΫ• ͯͳϒϩά (ςοΫϦʔυ)• Perl, Ruby, Scala, Shell Script
ͯͳʹ͓͚ΔςοΫϦʔυɺ ͦͯ͠αʔϏεϓϥοτϑΥʔϜνʔϜͷςοΫϦʔυʹ͍ͭͯhttp://developer.hatenastaff.com/entry/2017/09/28/110000
ΞδΣϯμ• Microserviceͱͯ͠࡞ͬͨ৽αʔϏεʹ͍ͭͯ• ຊ൪ೖͯ͠ͷ࠾• Ψόφϯε• ڍ͍͛ͯͨ՝ղܾ͞Ε͔ͨ
৽αʔϏεʹ͍ͭͯ
http://hatenablog.com/
“ͯͳϒϩάΛͬͱຊ֨తʹ͍͍ͨํͷͨΊʹɺ༗ྉϓϥϯʮͯͳϒϩάProʯΛ༻ҙ͓ͯ͠Γ·͢ɻࠂͷඇදࣔಠࣗυϝΠϯػೳͳͲɺͯͳϒϩάΛΑΓศརʹ͓͍͍͚ͨͩ·͢ɻ”http://hatenablog.com/guide/pro
ͯͳϙΠϯτΫϨδοτΧʔυίϯϏχৼࠐۜߦৼࠐ༻https://www.hatena.ne.jp/shop/point/list
http://hatena.g.hatena.ne.jp/hatena/20150529/1432869070
վम or ࡞Γ͠• چγεςϜϞϊϦγοΫ• ܾࡁͯͯ͠ͳϙΠϯτΛνϟʔδ͢Δ• ͯͳϙΠϯτΛͬͯߪೖ͢Δ• ༷Λཧ͢Δ͍͍ػձͰ͋Δ
ܾࡁߦαʔϏε (֎෦)ͯͳͷαʔϏε(ϒοΫϚʔΫͳͲ)ݱߦܾࡁγεςϜϙΠϯτཧڞ༗Ϟδϡʔϧ༗ྉϓϥϯཧґଘͯͳͷαʔϏεґଘͯͳͷαʔϏεґଘetc. ΞΧϯτچܾࡁγεςϜͷߏ
چܾࡁγεςϜͷߏ• ܾࡁγεςϜ: WebΞϓϦέʔγϣϯ• APIͳ͘HTMLͷϑΥʔϜ͕͋ΔͷΈ• ڞ༗Ϟδϡʔϧ: ܾࡁߦαʔϏεͱ௨৴͢Δ࣮• ͨ͘͞ΜͷϦϙδτϦ͔Βґଘ͞Ε͍ͯΔ• ڞ༗DBΛૢ࡞͢Δ
چܾࡁγεςϜͷվम?• ΄ͱΜͲݱ࣮తͰͳ͍• ޓੑʹؔ͢ΔεΩʔϜ͕ͳ͍• શޙํޓ or die• ෳͷυϝΠϯ͕ೖΓཚΕ͍ͯΔ• ݱࡏͷ༷ʹӨڹΛڧ͘ड͚Δ• վળ͕·ΘΒͳ͍
ϑϧεΫϥον
৽ܾࡁγεςϜ• ܾࡁߦαʔϏεͷήʔτΣΠͱͯ͠ಇ͘• ͯͳϒϩάProͷ༩ͳͲ֤αʔϏεʹҠৡ• JSON over HTTPͳAPIͷΈΛఏڙ͢Δ• ରSSKDs (= small set of known developers)
৽ܾࡁγεςϜ ߏਤܾࡁߦαʔϏε (֎෦)ͯͳͷαʔϏε༗ྉϓϥϯͷঢ়ଶཧ ৽ܾࡁγεςϜUIAPI
http://staff.hatenablog.com/entry/2017/07/10/160000
ຊ൪ೖͯ͠ͷ࠾
ͦͷલʹৼΓฦΓ
ϚΠΫϩαʔϏεͰ࡞Δ͔• 1ʙ3ষʹ͔͚ͯϝϦοτʮ༏ΕͨαʔϏεʯʹ͍ͭͯड़ΒΕ͍ͯΔ• ϚΠΫϩαʔϏεʹΑͬͯ αʔϏεΑΓΑ͘ͳΔͷ͔• ΨόφϯεͳͲɺ ίετ͑ΔͩΖ͏͔https://www.oreilly.co.jp/books/9784873117607/
ૄ݁߹ͱߴڽूੑ1. ϞϊϦγοΫͰखΛೖΕͮΒ͍ (ີ݁߹)2. ৽ͨʹ༗ྉϓϥϯΛಋೖ͍ͨ͠αʔϏε࠶࣮3. υϝΠϯ͕ࣝྲྀग़ (ڽूੑ)4.
࣋ଓՄೳʹ࡞Γ (ͳ͓͠) ͍ͨ• είʔϓΛখ͘͞໌ྎʹอͭ• ૄ݁߹ (ʰϚΠΫϩαʔϏεΞʔΩςΫνϟʱ3.2.1)• ߴڽूੑ (ʰϚΠΫϩαʔϏεΞʔΩςΫνϟʱ3.2.2)• ׂ౷࣏͢Δ• ٕज़ҟ࣭ੑ• σϓϩΠͷϥΠϑαΠΫϧΛૣΊΔ
͏·͍ͬͨ͘?• Ψόφϯε͏·͍͔ͬͨ͘• ૄ݁߹ʹͳ͔ͬͨ• ߴڽूʹͳ͔ͬͨ
Ψόφϯε: ̋• ͯͳϒϩάͱ৽ܾࡁγεςϜΛ ڠௐͤͯ͞มߋ͢Δඞཁ͕͋Δ• → νʔϜΛϞϊϦγοΫʹ͢Δ͜ͱͰஅΛ͛ͨ• ଞνʔϜͱͷ࿈ܞ͓͓ΉͶى͖ͳ͔ͬͨ• ৽ܾࡁγεςϜͷϏδϣϯΛڞ༗͍ͯͨ͠• → ͍͖ͳΓγεςϜ͕ૠ͛ସΘΔ͜ͱͳ͔ͬͨ
ϞϊϦγοΫͳνʔϜ• ͯͳϒϩάଆͷ։ൃͱ৽ܾࡁγεςϜͷ։ൃϝϯόʔΛҰகͤͨ͞• (ॳɺͯͳϒϩάଆΛଞͷϝϯόʔʹ͓ئ͍͢Δ͜ͱݕ౼͍ͯͨ͠)• → ͕ࣝڽू͞ΕɺຊʹඞཁͳͷΛదʹ࡞Εͨ
ૄ݁߹: ̋• UIͱAPIΛผͷݴޠͰ࣮͢Δ͜ͱͰஅ• UI = Perl, API = Scala• → چγεςϜͰͱͳͬͨڞ༗ΧʔωϧԽΛ͙• ޓ͕ඞཁͳೝূΛUIʹཹΊΒΕͨ• → ݁Ռͱͯ͠UI͕APIʹର͢ΔഊࢭʹͳΔ
ߴڽूੑ: ˚• UIͱAPIͷσϓϩΠλΠϛϯάΛἧ͑Δඞཁ͕͋Δ• → ͚ͩ͜͜ݟΔͱ࣌ظঘૣͩͬͨײ͋Δ• ʮ࠷ॳͷ30ؒແྉͰར༻Ͱ͖Δʯͱ͍͏ใɺ ͯͳϒϩάʹด͍ͯ͡ΔͷͰച্ूܭ͕͍͠• → ϞσϦϯάదͩͬͨͱࢥ͏ͷͰɺ ूܭํ๏ͷվળͳͲͰΞϓϩʔν͍ͨ͠
࠾: 70• ͋ͱ͔ΒϦΧόʔͮ͠Β͍ (ྫ: Ψόφϯε) ઌʹखΛଧͯͨ• Ұํɺٕज़తͳΞϓϩʔν (ྫ: σϓϩΠɺ౷߹ςετ) ·ͩ·ͩΕΔ͜ͱ͕͋Δ
·ͱΊ
MicroservicesԽΞϦ͔• ৽ܾࡁγεςϜͰ࠾༻ͨ͠ͷਖ਼ղͩͬͨ• MicroservicesܥΛ࡞ΔͨΊͷσβΠϯ• = νʔϜ (ਓɺ৫) ·ͰϚΠΫϩʹׂ͢Δඞཁͳ͍• ͦͷΘΓ͖ͪΜͱࢠΛඃΓͤͳ͍ͱ͍͚ͳ͍