Slide 1

Slide 1 text

ӡ༻ࣄ݅฽ ߹ಉษڧձ IN ෱Ԭ KOMURO, Hiraku @com4dc

Slide 2

Slide 2 text

ࣗݾ঺հ SELF INTRODUCTION ▸ খࣨ ܒ ▸ ϞόΠϧόοΫΤϯυΤϯδχΞʢJava, AWS, ͪΐͬͱऄʣ ▸ ࡛ۄݝग़਎࡛ۄҭͪɺݱࡏ๺ւಓࡳຈࡏॅ ▸ ΫϥεϝιουגࣜձࣾϞόΠϧΞϓϦαʔϏε෦ ▸ ʢࣗশʣ஍ํ։୓ຽ ▸ ΫϥεϝιουSteam෦෦һʢFPSɺTPSʣ

Slide 3

Slide 3 text

๺ւಓ঺հ ๺ւಓ͔Βདྷ·ͨ͠ ▸ Ҡಈڑ཭ʹͯ͠2000km௒ ▸ ݱࡏ๺ւಓ͸ʮݫౙظʯݱࡏɺઇ·ͭΓਅͬ࠷த ཮ࣗͷ ຊؾݐ଄෺

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

͜Ε͕(ࠓͷ)๺ւಓͩʂ

Slide 8

Slide 8 text

ؓ࿩ٳ୊

Slide 9

Slide 9 text

ӡ༻ͯ͠ΔϓϩδΣ Ϋτʹ͍ͭͯ

Slide 10

Slide 10 text

ϓϩδΣΫτʹ͍ͭͯ ϓϩδΣΫτ֓ཁ ▸ ઃܭɺ։ൃ͔ΒΠϯϑϥ੔උɺӡ༻αϙʔτ·ͰΛ୲౰ ▸ σʔλҠߦର৅͕300ສϢʔβʔ΄Ͳ ▸ ϐʔΫ࣌ͷΞΫηε͸ೝূαʔόʔʹ͓͍ͯ෼ؒ5ɺ6ສΞΫ ηε ▸ ϞόΠϧΞϓϦͷDL਺͸100ສ௒ఔ౓ ▸ ࣗ෼ͷ୲౰͸Oauthೝূج൫ͷΧελϜΫϥΠΞϯταʔόʔ

Slide 11

Slide 11 text

ϓϩδΣΫτʹ͍ͭͯ ϓϩδΣΫτମ੍ ▸ ։ൃϓϩδΣΫτ͕ಉ࣌ฒߦͰ3ͭ ▸ ͦΕͧΕ։ൃ։࢝ظ͕ؒҟͳΔ ▸ ϓϩύʔͱύʔτφʔ͕൒ʑ͘Β͍ͷׂ߹

Slide 12

Slide 12 text

։ൃ࣌ͷମ੍

Slide 13

Slide 13 text

ϓϩδΣΫτʹ͍ͭͯ MICRO SERVICE܈Ͱߏ੒ ϞόΠϧAPI ΧελϜೝূAPI OAUTH2 ೝূج൫ ϞόΠϧ୺຤

Slide 14

Slide 14 text

ϓϩδΣΫτʹ͍ͭͯ ϓϩδΣΫτͷ͓Αͦͷ࣌ؒ࣠ ϞόΠϧAPI։ൃ ೝূAPI։ൃ ؅ཧCMS։ൃ 2016೥1݄͘Β͍ 2016೥8݄͘Β͍ ϞόΠϧAPIӡ༻

Slide 15

Slide 15 text

։ൃޙͷӡ༻ϑΣʔζ

Slide 16

Slide 16 text

ϓϩδΣΫτʹ͍ͭͯ ΄ͱΜͲશ͕ͯҟͳΔϓϩδΣΫτ܈ ϞόΠϧ ೝূ CMS AWS։ൃ༻
 ൿີ伴 伴1 伴2 伴2 ϑϨʔϜ ϫʔΫ Play for Scala SpringBoot Ruby on Rails σϓϩΠํ๏ Golden AMI CodeDeploy CodeDeploy ݴޠ Scala Java8 Ruby

Slide 17

Slide 17 text

ϓϩδΣΫτʹ͍ͭͯ ϓϩδΣΫτΛߏ੒͢ΔେྔͷαʔϏε

Slide 18

Slide 18 text

ଟ͗͢ͳ͍ɾɾɾʁ

Slide 19

Slide 19 text

ϓϩδΣΫτʹ͍ͭͯ ։ൃ͔࣌Βͷେ෯ͳମ੍มߋ ▸ ScalaϓϩάϥϚʔ͕3໊ˠ0໊΁ ▸ JavaͱRubyΤϯδχΞ͕ࣣసീ౗͠ͳ͕ΒɺPlay ScalaΛอक ▸ AWSαʔϏεͷো֐΋͋ΔͨΊɺJavaɺRubyΤϯδχΞ͕͜ ΕΒͷରԠ΋݉຿ ▸ ݁Ռ ▸ AWSɺJavaɺScalaɺʢPythonʣͱ͍͏εΩϧηοτ͕ര஀

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

ϓϩδΣΫτʹ͍ͭͯ ӡ༻ॳظͷঢ়گ ▸ ιʔείʔυ΍BacklogͷWikiΛαϧϕʔδͯ͠಺෦ߏ଄Λ ཧղ͢Δ೔ʑʢ͢Ͱʹ։ൃϝϯόʔ͕͍ͳ͍ͨΊʣ ▸ ҟͳΔDeployπʔϧ΍؀ڥΛɺͲͷΑ͏ʹ੾Γସ͑Δ͔Λ ໛ࡧʢखॱ͕େ෯ʹҟͳΔͨΊɺΦϖϨʔγϣϯϛε͕ൃੜ ͦ͠͏ʣ ▸ ো֐࣌ͷϩάௐࠪͷखॱΛൿ఻ͷखॱΛେࢸٸ໌จԽ͢Δ ʢ͜͜Ͱϩάͷ໰୊΋ൃ֮͢Δɻ͜Ε͸·ͨผͷ࿩ʣ

Slide 22

Slide 22 text

ࣄ݅฽

Slide 23

Slide 23 text

ࣄ݅฽ ͦͦ͜͜ͷࣄ݅Ұཡ ▸ CASE1. ϞόΠϧΞϓϦϦϦʔεϛεʹΑΔεςʔδϯά؀ڥࢮ๢ࣄނ ▸ CASE2. DynamoDB Streamsࢮ๢ʹΑΓDBಉظࣦഊࣄ݅ ▸ ʢ୭΋ؾ͔ͮͳ͔ͬͨͷͰ΄ͱΜͲີࣨࡴਓঢ়ଶɻূڌ΋ͳ͠ʣ ▸ CASE3. fluentd ͷϓϥάΠϯ๫૸ʹΑΔϩάফࣦࣄ݅ɻ஍ࠈͷαϧ ϕʔδ࡞ۀʢ·ͩͪΐͬͱ͚ͩଓ͍ͯΔΜ͡ΌΑʣ ▸ CASE4. EC2ΨνϟʹΑΔύϑΥʔϚϯε௿Լࣄނ ▸ ʢ௨ৗͷ1/10ҎԼɻ͞ΕͲϔϧενΣοΫ͸มԽͳ͠ʣ

Slide 24

Slide 24 text

ࣄ݅฽ ࣄ݅ൈਮ ▸ CASE1. ϞόΠϧΞϓϦϦϦʔεϛεʹΑΔεςʔδϯά؀ڥࢮ๢ࣄނ ▸ CASE2. DynamoDB Streamsࢮ๢ʹΑΓDBಉظࣦഊࣄ݅ ▸ ʢ୭΋ؾ͔ͮͳ͔ͬͨͷͰີࣨࡴਓʣ ▸ CASE3. fluentd ͷϓϥάΠϯ๫૸ʹΑΔϩάফࣦࣄ݅ɻ஍ࠈͷαϧ ϕʔδ࡞ۀʢ·ͩͪΐͬͱ͚ͩଓ͍ͯΔΜ͡ΌΑʣ ▸ CASE4. EC2ΨνϟʹΑΔύϑΥʔϚϯε௿Լࣄނ ▸ ʢ௨ৗͷ1/10ҎԼɻ͞ΕͲϔϧενΣοΫ͸ϔϧγʔʣ ॾࣄ৘ʹΑΓࠓճ͸͜ΕҰ୒

Slide 25

Slide 25 text

CASE.1

Slide 26

Slide 26 text

εςʔδϯά؀ڥ΁޲͚ͨϞόΠ ϧΞϓϦΛετΞʹϦϦʔεͪ͠Ό ͍·ͨ͠

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

ࣄ݅̍ ঢ়گΛ੔ཧ ▸ ετΞਃ੥Λ͔͚ͯެ։ͨ͠ΞϓϦέʔγϣϯͷAPI઀ଓઌ ͕ɺεςʔδϯά؀ڥΛ޲͍͍ͯͨͱ͍͏ใࠂ ▸ ͢Ͱʹ਺ඦϢʔβʔ͕DLࡁΈ ▸ AndroidΞϓϦͷΈ ▸ ͜ΕʹΑΓ։ൃεςʔδϯάαʔόʔ͕࣮࣭ࢮ๢ʢຊ൪ͷΞ ϓϦ͕ࢀর͍ͯ͠ΔՄೳੑ͕͋ΔͨΊʣ

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

ͭ·Γ

Slide 31

Slide 31 text

ຊདྷ͜͏͋Δ΂͖؀ڥ͕

Slide 32

Slide 32 text

͜͏ͳͬͨ

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

ࣄ݅̍ ଈ࣌ۓٸରԠ ▸ ޡͬͨΞϓϦέʔγϣϯ͔ΒͷΞΫ ηεΛःஅ ▸ ڧ੍ΞοϓσʔτઃఆΛಋೖ ʢ403ΤϥʔͰฦ٫ʣ ▸ Ϧιʔεʹؔͯ͠͸શͯຊ൪؀ڥͱ ಉ౳ͷ΋ͷ͔ۭσʔλʹͯ͠ɺΤο δαʔόʔͷΩϟογϡΛશͯΫϦ Ξ

Slide 35

Slide 35 text

ࣄ݅̍ ۓٸରԠͷ੒Ռ ▸ ޡͬͨΞϓϦέʔγϣϯ͔ΒͷΞΫηεΛःஅ ▸ ݁Ռతʹ͜ͷରԠ͸ෆཁɻΞϓϦ಺Ͱอ͍࣋ͯ͠ΔΞΫηετʔΫϯ ID͸ɺϓϩμΫγϣϯ؀ڥ޲͚Ͱ͋Γɺεςʔδϯά؀ڥͱಥ͖߹Θ ͤΔͱ౰વଘࡏ͠ͳ͍ͨΊɺແޮͳΞΫηετʔΫϯͱͯ͠ॲཧ͞Ε Δ ▸ Ϧιʔεʹؔͯ͠͸શͯຊ൪؀ڥͱಉ౳ͷ΋ͷ͔ۭσʔλʹ ▸ ޡͬͨΞϓϦ͔Βݟͯ΋৽੡඼৘ใͳͲ։ൃ৘ใ͕ग़͍ͯͳ͍͜ͱ͕ ֬ೝͰ͖ͨɻ͜͜ͷϦιʔε͸ϩάΠϯ͍ͯ͠ͳͯ͘΋ݟΕΔ৘ใͰ ͋ΔͨΊɺ͜ͷରԠ͸ඞਢͩͬͨ

Slide 36

Slide 36 text

ରԠࡦ1 εςʔδϯάαʔόʔ࠶ߏங

Slide 37

Slide 37 text

ରԠࡦ1 ؀ڥͷશͯΛෳ੡͢Δ

Slide 38

Slide 38 text

શͯͷ؀ڥΛෳ੡͢Δ ϝϦοτ ▸ طଘͷεςʔδϯά؀ڥΛอશͰ͖Δ ▸ Πϯϑϥ؀ڥ͸΄ͱΜͲCloudFormationͷςϯϓϨʔτͰ ߏங͞Ε͍ͯΔͨΊɺ৽ͨͳ؀ڥߏங͸ଈ࠲ʹՄೳ

Slide 39

Slide 39 text

શͯͷ؀ڥΛෳ੡͢Δ σϝϦοτ ▸ ؀ڥͷશͯΛෳ੡͢ΔͨΊAWSͷར༻අ͕୯७ʹ2ഒͱͳΔ ▸ DeployεΫϦϓτ΍πʔϧͳͲ΋मਖ਼ͷӨڹ͕ग़ͯ͠·͏

Slide 40

Slide 40 text

ରԠࡦ2 εςʔδϯάαʔόʔ࠶ߏங

Slide 41

Slide 41 text

ରԠࡦ2 ୀආαʔόʔΛߏங͢Δ

Slide 42

Slide 42 text

ୀආαʔόʔΛߏங ϝϦοτ ▸ શͯͷϦιʔεΛෳ੡͢Δͷʹରͯ͠ѹ౗తʹඅ༻ΛѹॖͰ ͖Δ ▸ DeployπʔϧͳͲ΁ͷӨڹ͕࠷খݶͱͳΓɺӨڹൣғΛۃ ΊͯݶఆͰ͖Δ

Slide 43

Slide 43 text

ୀආαʔόʔΛߏங σϝϦοτ ▸ ୀආαʔόʔͷߏங޻਺͕ൃੜ͢Δ ▸ Route53ͷมߋͳͲൺֱతखॱ͕ෳࡶʹͳΔ ▸ CloudFront΁ͷมߋͱ৽ن࡞੒͕ೖΔͨΊ͕͔͔࣌ؒΔ ʢฒྻԽͰ͖ͳ͍ʣ ▸ nginxͷConfigurationΛAnsibleͰߏ੒͢ΔͨΊͷௐ͕ࠪඞ ཁʹͳΔ

Slide 44

Slide 44 text

ରԠࡦ3 εςʔδϯάαʔόʔ࠶ߏங

Slide 45

Slide 45 text

ରԠࡦ3 ୀආαʔόʔΛߏங͢Δʢվળʣ

Slide 46

Slide 46 text

ୀආαʔόʔΛߏஙʢMODIFIEDʣ ϝϦοτ ▸ શͯͷϦιʔεΛෳ੡͢Δͷʹରͯ͠ѹ౗తʹඅ༻ΛѹॖͰ ͖Δ ▸ DeployπʔϧͳͲ΁ͷӨڹ͕࠷খݶͱͳΓɺӨڹൣғΛۃ ΊͯݶఆͰ͖Δ ▸ ʢNewʂʣCloudFrontͷઃఆมߋͷӨڹ͕ޡͬͯϦϦʔε ͞ΕͨΞϓϦͷϢʔβʔ΁೾ٴ͠ͳ͍ʂ

Slide 47

Slide 47 text

ୀආαʔόʔΛߏஙʢMODIFIEDʣ σϝϦοτ ▸ ୀආαʔόʔͷߏங޻਺͕ൃੜ͢Δ ▸ Route53ͷมߋͳͲൺֱతखॱ͕ෳࡶʹͳΔ ▸ ʢDeletedʂʣCloudFrontͷ৽ن࡞੒͞ΕΔͨΊɺ͕͔࣌ؒ ͔ͬͯ͠·͏ ▸ nginxͷConfigurationΛAnsibleͰߏ੒͢ΔͨΊͷௐ͕ࠪඞ ཁʹͳΔ

Slide 48

Slide 48 text

࠷ऴతͳखॱ εςʔδϯάαʔόʔ࠶ߏங

Slide 49

Slide 49 text

࠷ऴతͳ࠶ߏஙखॱ ରԠࡦ3Λ࠾༻ ▸ ੩తϨεϙϯεΛฦ٫͢ΔnginxΛखಈͰߏஙʢEC2x2ʣ ▸ ୀආ༻ͷ੩తϦιʔεΛ഑ஔ͢ΔS3όέοτΛ CloudFormationͰ෦෼ߏங ▸ طଘͷCloudFrontͷCNAMEsʹ৽͍͠εςʔδϯά؀ڥͷ υϝΠϯʢstg2.hogeʣΛઃఆ ▸ Route53ͷ໊લղܾͷઃఆΛมߋ

Slide 50

Slide 50 text

࠷ऴతͳ࠶ߏஙखॱ ࠷ऴҊ

Slide 51

Slide 51 text

·ͱΊ

Slide 52

Slide 52 text

·ͱΊ ࣄ݅͸ࢥ͍΋ΑΒͳ͍ͱ͜Ζ͔Β༙͍ͯ͘Δ ▸ ΞϓϦέʔγϣϯΤϯδχΞͱ͸ݴ͑ɺߏ੒Λཧղ͍ͯ͠ͳ ͍ͱӨڹൣғΛίϯτϩʔϧ͢ΔରԠ͕Ͱ͖ͳ͍ ▸ ӡ༻ʹܞΘͬͨ࣌఺Ͱɺࣗ෼ͷൣғ֎ͷ෼໺΋Φʔόʔϥο ϓͯ͠αϙʔτɾֶश͍ͯ࢟͘͠੎͕ඞཁ ▸ ͨͩɺτϥϒϧ͕ى͖Δͱ೴Έ͕ͦϑϧճసͯͪ͠ΐͬͱς ϯγϣϯ্͕͕Δͷ΋ࣄ࣮Ͱ͋ΔΘ͚Ͱʢ͋·Γྑ͘ͳ͍ ▸ ӡ༻͸৻ॏʹʂ࣌ʹେ୾ʹʂ

Slide 53

Slide 53 text

FIN. ଞͷࣄ݅ͷ ৄࡉ͸࠙਌ձͰ