Slide 1

Slide 1 text

Infrastructure as CodeʹർΕͨͷͰ ๻͕ͨͪຊདྷ΍Γ͔ͨͬͨ͜ͱΛ੔ཧ͢Δ +α X-Tech JAWS & JAWS-UGΞʔΩςΫνϟઐ໳ࢧ෦ ίϥϘษڧձ#02 Shogo Muranushi

Slide 2

Slide 2 text

Shogo Muranushi ABEJA, Inc. - ABEJA Platform Product Owner - Site Reliability Engineer Tech Lead

Slide 3

Slide 3 text

No content

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

ΞδΣϯμ • JAWS DaysͰ࿩ͨ͠಺༰ͷ͓͞Β͍ • ͦͷޙʹ৭ʑͳਓͱ࿩ͨ݁͠࿦ • ͡Ό͋ɺԿ͔Β࢝ΊΔʁͦͷޙͷIaCͷτϨϯυ • αΫοͱ΍ͬͯϋϚΓͦ͏ͳ৚݅Λ·ͱΊΔ • ·ͱΊ

Slide 8

Slide 8 text

JAWS DaysͰ࿩ͨ͠಺༰ͷ͓͞Β͍ ʢ5෼όʔδϣϯʣ

Slide 9

Slide 9 text

ࠓͷ๻ͷঢ়ଶ ύτϥογϡͷֆΛ ૝૾͍ͯͩ͘͠͞

Slide 10

Slide 10 text

ຊηογϣϯͰͷ Infrastructure as Code ͸ओʹAWSΛߏ੒ ͢ΔͨΊͷπʔϧ܈Λࢦ͠·͢ɻ ղΛ͍࣋ͬͯΔΘ͚Ͱ͸͋Γ·ͤΜɻ ϕετͳҊ΋͍࣋ͬͯͳ͍ͷͰΈΜͳͰ౴͑Λग़͠·͠ΐ ͏ɻ ஫ҙࣄ߲

Slide 11

Slide 11 text

• Chef: 1೥ • Ansible: 2೥ • CloudFormation: 2೥ • Terraform: 3೥ ๻ͷวྺ

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

• σΟϨΫτϦઃܭ • Environment Λ෼͚Δ • tfstate ͸ s3 backend ʹ • Workspace ͷ׆༻ • Map ؔ਺ϑϧ׆༻ ৄղʂTerraform Best Practices in 2017

Slide 14

Slide 14 text

• σΟϨΫτϦઃܭ ӨڹൣғΛݶఆ͢ΔͨΊ not_immutableͱimmutableΛ෼͚Δ ࠶ར༻ੑΛߴΊΔͨΊɺϦιʔε͸moduleԽ͢Δ

Slide 15

Slide 15 text

• EnvironmentΛ෼͚Δ WorkspaceΛ׆༻͠ɺ؀ڥΛ෼͚Δ ݺͼग़࣌͢͸ ${terraform.workspace}

Slide 16

Slide 16 text

• Map ؔ਺ϑϧ׆༻ ؀ڥຖʹϦʔδϣϯΛม͑Δྫ υοτ۠੾ΓͰvariableΛఆٛ

Slide 17

Slide 17 text

• tfstate ͸ s3 backend ʹ

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

ৄղʂTerraform Best Practices in 2017

Slide 20

Slide 20 text

• ࣾһͷΦϯϘʔσΟϯάʹ͕͔͔࣌ؒΔ • ਺ϲ݄ޙʹࣗ෼Ͱ࡞Δ࣌ʹࢥ͍ग़͢ͷʹ͕͔͔࣌ؒΔ • ҰఆͷεΩϧΛ͍࣋ͬͯΔਓ͕͍Δ ϕετϓϥΫςΟε͔΋͠Εͳ͍͚Ͳෳࡶ໰୊

Slide 21

Slide 21 text

• ApplyʹؾΛ࢖͏ • Destroy/Create͠ͳ͍͔৻ॏʹͳΔ • ಈ࡞Λཧղ͍ͯ͠ͳ͍ਓʹ҆қʹ࡞ۀΛ೚ͤΒΕͳ͍ • ͭ·ΓɺҰఆͷεΩϧΛ͍࣋ͬͯΔਓ͕͍Δ มߋͷࠩ෼Λҡ࣋͢Δͷʹख͕͔͔ؒΔ

Slide 22

Slide 22 text

• TerraformɺCFnͷରԠΛ଴ͯͳ͍৔߹͸खͰ΍Δʁ • ͱ͍͏͜ͱ͸શ෦ΛίʔυԽग़དྷͳ͍ • ରԠޙʹࠩ෼൓өΛ͠ͳ͖Όɻ݁ߏؾΛ࢖͏ΑͶ • ͭ·ΓɺҰఆͷεΩϧΛ͍࣋ͬͯΔਓ͕͍Δ ৽͍͠αʔϏεɾػೳʹରԠͯ͠ͳ͍͕࣌͋Δ

Slide 23

Slide 23 text

• ελʔτΞοϓ͸ͦΜͳʹਓ͕͍ͳ͔ͬͨ • ډͨͱͯ͠΋Value͋Δ։ൃΛͯ͠΄͍͠ ͭ·ΓɺҰఆͷεΩϧΛ͍࣋ͬͯΔਓ͕͍Δ

Slide 24

Slide 24 text

ΠΩϦظ ਃ͠༁͍͟͝·ͤΜɻෳࡶͰͨ͠

Slide 25

Slide 25 text

• ϩγΞਓʮDynamoDBͷTerraformͷίʔυΛ࡞ͬͯཉ ͍͠ʯ • ଜओʮΦοέʔʯ ͱ͋Δ೔

Slide 26

Slide 26 text

1. ·ͣSampleΛͦͷ··࣮ߦ͢Δ 2. σΟϨΫτϦઃܭ 3. EnvironmentΛ෼͚Δ 1. s3 backend 4. Workspaceͷ׆༻ 1. Mapؔ਺ϑϧ׆༻ ΍Δ͜ͱ

Slide 27

Slide 27 text

1. ·ͣSampleΛͦͷ··࣮ߦ͢Δ

Slide 28

Slide 28 text

2. σΟϨΫτϦઃܭ ӨڹൣғΛݶఆ͢ΔͨΊ not_immutableͱimmutableΛ෼͚Δ ࠶ར༻ੑΛߴΊΔͨΊɺϦιʔε͸moduleԽ͢Δ

Slide 29

Slide 29 text

3. EnvironmentΛ෼͚Δ WorkspaceΛ׆༻͠ɺ؀ڥΛ෼͚Δ ݺͼग़࣌͢͸ ${terraform.workspace}

Slide 30

Slide 30 text

4. tfstate ͸ s3 backend ʹ

Slide 31

Slide 31 text

5. tfstate ͸ s3 backend ʹ ؀ڥຖʹϦʔδϣϯΛม͑Δྫ υοτ۠੾ΓͰvariableΛఆٛ

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

• 1೥ͿΓʹTerraformΛௐ΂Δ • forจ͸Ͱ͖ͳ͍ʁʂͯ͜ͱ͸ɾɾ • Μʁ0.12Ͱ͸forจ͕࢖͑Δͱͳ • 0.12ΛϏϧυ͢Δ͔ʁ͍΍ɺ·ͱ΋ʹಈ͔ͳ͍ͷ΋໘౗ͩͳ • ΜʁTerraform Module Registryͱ͍͏΋ͷ͕͋ΔͧɻGithubʹ ίʔυ্͕͕ͬͯΔ • moduleͷࢀߟʹͤͯ͞΋Β͓͏ ΋ͬͱΩϨΠʹॻ͚ͳ͍΋ͷ͔

Slide 35

Slide 35 text

Terraform Module Registry

Slide 36

Slide 36 text

Terraform Module Registry ৺ͷ੠ ʮ͍΍ɺԶ͜Μͳࣄͯ͠Δ৔߹͡Όͳ͍ʯ

Slide 37

Slide 37 text

๻ͷ໾ׂ Πϯϑϥ ୲౰ऀ Πϯϑϥ ੹೚ऀ ϓϩμΫτ Φʔφʔ Time ੹೚

Slide 38

Slide 38 text

• ʮͦΕ࡞ͬͯফͯ͠࡞ͬͯফͯ͠ɺຬ଍ߦ͘ίʔυ͸ͲΕ͘Β͍ ͷ࣌ؒͰ࡞ΕΔʁʯ • ʮ୭͕໘౗ݟΕΔʁʯ • ʮͦ΋ͦ΋DynamoDBͬͯͦΜͳԿճ΋࡞Δʁʯ • ʮDynamoDBͷมߋ࡞ۀ΋গͳ͘Ͷʁʯ • ʮࠩ෼ؾʹ͠ͳ͕ΒɺίʔυͷϦϑΝΫλߟ͑ͳ͕Β࢖͏ϝ Ϧοτ͋Δʁʯ ͦͷ࣌ͷ৺ͷ੠ू

Slide 39

Slide 39 text

• ʮͦ͏͍͑͹ɺRedshiftͷ࣌΋ࢥͬͨʯ • ʮSampleࢼͯ͠ɺmoduleԽͯ͠ɺΩϨΠͳίʔυʹͯ͠…ʯ • ʮͰɺRedshiftͷσϓϩΠ͕Ұճ20-30෼͔͔Δ͔ΒɺԿճ͔΍Γ ௚ͯ͠…ʯ • ʮͦΕԿ͔͔࣌ؒΔͶΜɻϘλϯϙνϙνͰ਺෼Ͱग़དྷΔ΍Μʯ • ʮdevɺstgɺprod࡞ͬͯ΋࡞ۀ࣌ؒ͸10෼ఔ౓΍Μʯ • ʮࠩ෼ؾʹ͠ͳ͕ΒɺίʔυͷϦϑΝΫλߟ͑ͳ͕Β࢖͏ϝϦο τ͋Δʁʯ ͦͷ࣌ͷ৺ͷ੠ू ͦͷ̎

Slide 40

Slide 40 text

• ʮͦ͏͍͑͹ɺRedshiftͷ࣌΋ࢥͬͨʯ • ʮSampleࢼͯ͠ɺmoduleԽͯ͠ɺΩϨΠͳίʔυʹͯ͠…ʯ • ʮͰɺRedshiftͷσϓϩΠ͕Ұճ20-30෼͔͔Δ͔ΒɺԿճ͔΍Γ ௚ͯ͠…ʯ • ʮͦΕԿ͔͔࣌ؒΔͶΜɻϘλϯϙνϙνͰ਺෼Ͱग़དྷΔ΍Μʯ • ʮdevɺstgɺprod࡞ͬͯ΋࡞ۀ࣌ؒ͸10෼ఔ౓΍Μʯ • ʮࠩ෼ؾʹ͠ͳ͕ΒɺίʔυͷϦϑΝΫλߟ͑ͳ͕Β࢖͏ϝϦο τ͋Δʁʯ ͦͷ࣌ͷ৺ͷ੠ू ͦͷ̎ ʮ͍΍ɺແཧʯ

Slide 41

Slide 41 text

FacebookͰᄁ͖ɺࠓʹࢸΔ

Slide 42

Slide 42 text

Infrastructure as CodeʹർΕͨͷͰɺ ๻͕ͨͪຊདྷ΍Γ͔ͨͬͨ͜ͱΛ੔ཧ͢Δ Shogo MuranushiɹABEJA, Inc. Product Owner & Lead Infrastructure Engineer

Slide 43

Slide 43 text

• Infrastructure as Codeͱ͸ • ࣗಈԽɺόʔδϣϯ؅ཧɺςετɺܧଓతΠϯςάϨʔγϣ ϯɺܧଓతσϓϩΠͱ͍ͬͨɺιϑτ΢ΣΞ։ൃͷϓϥΫςΟ εΛγεςϜ؅ཧʹԠ༻͢ΔͨΊͷํ๏࿦ • ޻਺࡟ݮɺ࡞ۀཤྺɺςετࣗಈԽɺΦϖϛε࡟ݮɺϨϏϡʔɾ ϑϩʔͷϝϦοτ ͦ΋ͦ΋ Infrastrucure as CodeͰ࣮ݱ͔ͨͬͨ͜͠ͱ

Slide 44

Slide 44 text

• ϙνϙνΛ਺෼ͰऴΘΔ͸͕ͣ • ίʔυԽʹ͕͔͔࣌ؒΔ • ϦϑΝΫλ͍ͨ͠ප͕ൃප͢Δ • ࠩ෼ͷ੔߹ΛऔΔͷʹ࣌ؒͱؾΛ࢖͏ • ίʔυͷ֦ுੑΛ্͛ΔͱɺՄಡੑ͕Լ͕ΓෳࡶʹͳΔɻෑډ্͕͕Δ • ίʔυͷγϯϓϧʹ͢ΔͱɺՄಡੑ͸্͕Δ͕֦ுੑʹ͚ܽΔ • moduleͷ࠶ར༻ੑͷ೉͠͞ ͨͩ͠ɺਏ͍͜ͱ͕ͨ͘͞Μ͋Δ

Slide 45

Slide 45 text

ߟ͑Δ΂͖ϙΠϯτ

Slide 46

Slide 46 text

• ମ੍ • ૊৫ • ࣄۀϑΣʔζ ࣗ෼͕ஔ͔Ε͍ͯΔ؀ڥʹΑͬͯద༻༗ແΛߟ͑Δ େࣄ

Slide 47

Slide 47 text

• ʮίʔυԽ͸ਖ਼ٛʯഇࢭ͢Δ • ROIΛߟ͑ͯख࡞ۀ΋ࢹ໺ʹ ͳΜͰ΋͔ΜͰ΋ίʔυԽ͢Δͷ͸ࣙΊΔ • ref:

Slide 48

Slide 48 text

• Φϖϛε͕͋Δ • ه࿥͕࢒Βͳ͍ • ࠶ݱੑ͕ͳ͍ • ࢖͍ճͤͳ͍ • ϨϏϡʔ͕Ͱ͖ͳ͍ ख࡞ۀͰ͸μϝͳͷ͔ɻԿ͕μϝͳͷ͔

Slide 49

Slide 49 text

• Φϖϛε͕͋Δ • Φϖϛεͯ͠΋OKͳͱ͜ΖɺNGͳͱ͜Ζ෼͚ͯΔʁ • ه࿥͕࢒Βͳ͍ • ࡞ۀ಺༰ɺཤྺ͸ʢExcelʣGithubͰ؅ཧ • ٯʹࠓͷঢ়ଶΛExport͍ͨ͠ • ࠶ݱੑ͕ͳ͍ • ຊ౰ʹ࠶ݱ͢Δඞཁ͋Δʁ ୅Ҋ͸ʁ

Slide 50

Slide 50 text

• ࢖͍ճͤͳ͍ • ຊ౰ʹ࢖͍ճ͢ʁʁ • ٯʹࠓͷঢ়ଶΛExport => Import͍ͨ͠ • ϨϏϡʔ͕Ͱ͖ͳ͍ • ࡞ۀ಺༰ɺมߋ͢ΔύϥϝʔλΛࣄલʹϨϏϡʔ͢Δ ୅Ҋ͸ʁ

Slide 51

Slide 51 text

• CLIͷίϚϯυΛه࿥ʹ࢒ͯ͠ɺ࣮ߦ͢Δ • Φϖϛεগͳ͍ • ه࿥͸࢒Δ • ࠶ݱੑ͸͋Δ • ࢖͍ճͤΔ • ϨϏϡʔͰ͖Δ • ႈ౳Ͱ͸ͳ͍ɻએݴతͰ͸ͳ͍ ୅Ҋ͸ʁ

Slide 52

Slide 52 text

ͭ·Γ

Slide 53

Slide 53 text

εϥϜμϯΫઋಓ͞Μ ʮ·ͩ͋ΘͯΔΑ͏ͳ࣌ؒ͡Όͳ͍ʯ

Slide 54

Slide 54 text

• ख࡞ۀͰ͸Կ͕μϝͳͷ͔ɺμϝͳཧ༝Λ΋͏Ұ౓ચ͍ग़͢ • CLI΍ଞͷ୅Ҋ͕ग़ͯ͘Δ • ঢ়گΛؑΈͯཁ݅Λຬͨͭͭ͠ɺίετɺεϐʔυɺϦεΫΛධ Ձ͠ɺ୅Ҋͷํ͕ίʔυԽΑΓROI͕ߴ͍ͳΒɺ୅ҊͰOK • ྫʣDBͱ͔CDNͬͯԿճ΋࡞Βͳ͍ΑͶɾɾʁ • ίετɺεϐʔυɺϦεΫͷ؍఺ͰίʔυԽͷํ͕ROI͕ߴ͍ͳ ΒɺίʔυԽͰOK ʢࣗ෼ʹରͯ͠ʣྫྷ੩ʹͳΓ·͠ΐ͏

Slide 55

Slide 55 text

ROIΛߟ͑Δ

Slide 56

Slide 56 text

• ίʔυԽ͠ͳ͍ • DBͱ͔CDNͷΑ͏ͳԿճ΋࡞Βͳ͍Α͏ͳ΍ͭʢίετޮ཰ѱ͍ʣ • ҙਤ͠ͳ͍ಈ࡞Λڐ༰Ͱ͖ͳ͍εςʔτ࣋ͭܥʢϦεΫΛڐ༰Ͱ͖ͳ͍ʣ • Πϯϑϥͷਓ਺͕গͳ͍ʢֶशίετ͕͔͔ΓɺεϐʔυམͪΔʣ ίετɺεϐʔυɺϦεΫͷධՁྫ

Slide 57

Slide 57 text

• ίʔυԽ͢Δ • ALB + EC2 + RDBͷηοτ͸όϯόϯ࡞ΔΜͩΑͶʔʢίετޮ཰ྑ͍ʣ • DR༻ʹ͙͢ʹ্ཱͪ͛Δඞཁ͕͋Δʢεϐʔυ͋Δʣ • ଟϦʔδϣϯʹαʔϏεల։͢Δ໺๬͕͋Δʢεϐʔυ͋Δʣ • ϦιʔεؒΛܨ͍Ͱ͍Δܥʢίετޮ཰ߴ͍ʣ • ΦϖϛεΛՄೳͳݶΓഉআ͍ͨ͠ʢࣗಈԽʹΑΔϦεΫϔοδ͸Մೳʣ • ͕͔ͩ͠͠ ίετɺεϐʔυɺϦεΫͷධՁྫ

Slide 58

Slide 58 text

• ա౓ʹΩϨΠʹ͠ա͗ͳ͍ • ଍Γͳ͍ػೳΛิ͏ͨΊʹத਎͕ෳࡶͳίʔυʹϋʔυϧ্͕Δ • ඞཁ͋Β͹ຊՈʹPRग़ͦ͏ • ׂΓ੾ͬͯखͰ΋ྑ͍΍Μ ίʔυԽ͢Δ࣌ͷ஫ҙ఺

Slide 59

Slide 59 text

ࠓͷ๻ͷঢ়ଶ ͜͏ͳΒͳ͍Α͏ʹ ROIߟ͑·͠ΐ͏

Slide 60

Slide 60 text

ͦͷޙʹ৭ʑͳਓͱ࿩ͨ݁͠࿦

Slide 61

Slide 61 text

IaCͷ֓೦͸ྑ͍͕ʮπʔϧ͕௥͍͍͍ͭͯͳ͍ʯ

Slide 62

Slide 62 text

Infrastructure as Code IaCͷ֓೦͸ྑ͍͕ʮπʔϧ͕௥͍͍͍ͭͯͳ͍ʯ ֓೦

Slide 63

Slide 63 text

IaCͷ֓೦͸ྑ͍͕ʮπʔϧ͕௥͍͍͍ͭͯͳ͍ʯ Infrastructure as Code Tool ֓೦ πʔϧ

Slide 64

Slide 64 text

Infrastructure as Code Tool IaCͷ֓೦͸ྑ͍͕ʮπʔϧ͕௥͍͍͍ͭͯͳ͍ʯ ֓೦ πʔϧ ར఺ ՝୊

Slide 65

Slide 65 text

Infrastructure as Code Tool IaCͷ֓೦͸ྑ͍͕ʮπʔϧ͕௥͍͍͍ͭͯͳ͍ʯ ֓೦ πʔϧ ར఺ ՝୊

Slide 66

Slide 66 text

πʔϧ ֓೦ IaCͷ֓೦͸ྑ͍͕ʮπʔϧ͕௥͍͍͍ͭͯͳ͍ʯ Infrastructure as Code Tool ͦΕٻΊ͗ͪ͢Ό͏ʁ

Slide 67

Slide 67 text

ଞͷ֓೦΋ಉ͡ • ϚΠΫϩαʔϏεͳͲ΋ಉ͡ • ֓೦͸ྑ͍͚Ͳπʔϧ͕௥͍͍͍ͭͯͳ͍͜ͱ͕ଟ͍ • ͭ·Γʮۜͷ஄ؙͰ͸ͳ͍ʯঢ়ଶ

Slide 68

Slide 68 text

Կ͕͠ΜͲ͔͔ͬͨ • πʔϧ͕ղܾͯ͘͠ΕΔ՝୊ͱɺπʔϧ͕௥͍͍͍ͭͯͳ͍෦෼ ΛΧόʔ͢Δγϯυ͞ • ͜ͷఱṝͷόϥϯεΛؑΈͯɺࣄۀϑΣʔζɺ๻ͷཱ৔ɺνʔϜ ମ੍ͩͱIaC͸γϯυ͔ͬͨ

Slide 69

Slide 69 text

࠾༻ɾෆ࠾༻ج४ʹ͍ͭͯ • ֓೦͕ղܾ͢Δ՝୊͸͘͢͝ଟ͍͕ɺਓͦΕͧΕ૊৫΍ஔ͔Ε͍ͯΔཱ৔ɺ ࣄۀϑΣʔζ͕ҧ͏ͨΊɺ՝୊ʹରͯ͠ͷॏΈ͕ҧ͏ • Agile΍DevOpsͷ֓೦΋ࣅͨΑ͏ͳ΋ͷ • ͦΕΒ͕ղܾ͢Δ՝୊ͱ͸ʁࠓͷࣄۀϑΣʔζɺνʔϜͷεΩϧɾମ੍ɾҾ ͖ܧ͗ͳͲɺͲ͏͍͏νʔϜʹ͍͔ͨ͠ʁͰมΘͬͯ͘Δ

Slide 70

Slide 70 text

৽͍ٕ͠ज़΍֓೦͸ɺࣄۀϑΣʔζɺνʔϜͷମ ੍ɺࠓޙɺͳͲΛ౿·͑ͯݕ౼͠·͠ΐ͏ νʔϜن໛ ੒௕༏ઌ ҆ఆ༏ઌ ଐਓԽഉআ ଐਓԽͪ͠Ό͏ ಉ͡εΩϧͷਓগͳ͍ ಉ͡εΩϧͷਓଟ͍ ച্

Slide 71

Slide 71 text

৽͍ٕ͠ज़΍֓೦͸ɺࣄۀϑΣʔζɺνʔϜͷମ ੍ɺࠓޙɺͳͲΛ౿·͑ͯݕ౼͠·͠ΐ͏ νʔϜن໛ ੒௕༏ઌ ҆ఆ༏ઌ ଐਓԽഉআ ଐਓԽͪ͠Ό͏ ಉ͡εΩϧͷਓগͳ͍ ಉ͡εΩϧͷਓଟ͍ ച্ ٞ࿦͢Δͱ͖͸ ͜ͷลΓͷೝࣝΛ߹ΘͤΔ

Slide 72

Slide 72 text

ͱ͸͍͑ศརͳ͜ͱ͸͋Δ ͳͷͰɺશͯΛͦͷٕज़Ͱղܾ͢Δඞཁ͸ͳ͍

Slide 73

Slide 73 text

ʮશͯΛIaCͰ΍Δඞཁ͸ͳ͍ʯ • ొஃޙ͸͜ͷҙݟ͕ଟ͔ͬͨ • શ෦IaCͰద༻͢Δͷ͸ʮRDBΛࣺͯͯશͯKVSʂʯ΍ʮશ෦αʔ όϨε΍Ͱ͐ʯͱಉ͡ɻదࡐదॴ͕Ұ൪ύϑΥʔϚϯε͕ྑ͍ • freee͞ΜͷࢿྉͰʮશͯͷཁ݅ΛkubernetesͰ࣮૷ʯ͡Όͳ͘ ͯɺஔ͖׵͑Մೳͳ෦඼ʹ͓ͯ͘͜͠ͱɻͱ͔͸௨ͣΔ • ͡Ό͋ʮదࡐదॴʯΛݟ෼͚Δʹ͸ʁ

Slide 74

Slide 74 text

ٕज़౤ࢿɻ௒େࣄɻઈର΍Δ΂͖

Slide 75

Slide 75 text

ݸਓͷ੒௕͕ձࣾͷ੒௕ • ྫ͑͹ɺτϨϯυͷٕज़ͷ༻్ΛݟۃΊͯదࡐదॴͰ৭ʑͳαʔϏεɾπʔϧΛ૊ Έ߹ΘͤΕ͹ແବ͕ݮΓࣄۀ੒௕͕Ճ଎͢Δ • AWSΛֶͿ͜ͱͰʮނোͷͨΊͷઃܭʢdesign for faillerʣʯΛֶ΂Δ • KubernetesΛֶͿ͜ͱͰʮએݴతΞʔΩςΫνϟ͸͜͏͍͏͜ͱ͔ʯͱ͍͏ઃ ܭΛֶ΂ΔɺͳͲ • ͦΕͳΒ͹ɺࣄۀΛ੒௕ͤ͞Δ্Ͱ৽͍ٕ͠ज़΍֓೦ͷशಘʢ౤ࢿʣ͸ඞਢ • ୭͔͚ͩ৽͍͜͠ͱΛֶͿͷ͸ଞ͕෇͍ͯ͜ͳ͍͔΋͠Εͳ͍ͷͰɺνʔϜ಺Ͱͦ ΕͧΕٕज़Λֶͼ߹͍ɺ͓ޓ͍Ͱڞ༗͋͠͏ͷ΋͋Γ

Slide 76

Slide 76 text

ݸਓత౤ࢿײ֮͸10-20%ఔ౓ɻͦͷఔ౓͸৽͠ ͍νϟϨϯδʹճ͢ • KubernetesͰ΋ྑ͍͠ɺTerraformͰ΋ྑ͍ɻͱΓ͋͑ͣ࢖ͬͯΈΔͬͯ΋ͷ༗Γͩ͠ɺ ͩ͜ΘͬͯϕετϓϥΫςΟεΛݟ͚ͭʹߦ͘ͷ΋͋Γ • ͪΐͬͱͰ΋ྑ͍͔Βຊ൪ʹऔΓೖΕͯΈΔɻେࣄɻݕূͱຊ൪Ͱ͸ֶ΂Δྔ͕਺ഒҧ͏ • ʮ๩͍͔͠Β10-20%΋औΕͳ͍ʯ͸ݴ͍༁ɻ୭͕ѱ͍ͬͯ૊৫ͷ੹೚ऀ͕ѱ͍ɻ૊৫Λ ੒௕ͤ͞Δؾ͸͋Δͷ͔ɻͦ͜ʹίϛοτ͢Δؾ͕͋ΔͷʹͰ͖ͳ͍ͳΒଵຫɻਓͷΞα Πϯ΋ؚΊͯମ੍ͮ͘ΓΛ͢΂͖ • ࣦഊ΋੒௕ͷҰͭʢԿ͕μϝͩͬͨͷ͔΋ཧղͰ͖Δʣ

Slide 77

Slide 77 text

͡Ό͋ɺԿ͔Β࢝ΊΔʁͦͷޙͷIaCͷτϨϯυ

Slide 78

Slide 78 text

2019೥ͷτϨϯυ • AWS CDK —> ॕGAʂʂ • Terraform —> v0.12 ϦϦʔεʂʂ • Terraformer ??

Slide 79

Slide 79 text

AWS CDK • ͨͿΜ୭͔͕঺հͯ͘͠ΕΔͱࢥ͏ͷͰɺҰൠతͳ͜ͱ͸ॻ͔ͳ͍ • No YAML, Yes Programing Language. • গͳ͍ίʔυྔͰଟ͘ͷ͜ͱ͕࣮ݱͰ͖Δ • Ͱ΋ɺCFnͳͷͰద༻࣌ͷڍಈͷཧղ͸ඞཁɻ࡞Δ͚ͩͷ෼͸ָ • ͨͿΜҰੈΛ෩ᴆ͢ΔΜ͡Όͳ͍͔ͳ • ࣾ಺Ͱ͸SDKͰ΋ྑ͍Μ͡ΌͶʁͱ͍͏੠͕
 ʢಈ͖෼͔Δͱ͍͏ҙຯͰʣ

Slide 80

Slide 80 text

Terraform v0.12 • for, for_eachจ͕ॻ͚ΔΑ͏ʹͳͬͨ • NullΛׂΓ౰ͯՄೳʹʢʹఆٛͯ͠ͳ͍͜ͱͱಉ͡ʣ • Split΋ѻ͍΍͘͢ • ͦͷଞ৭ʑ • ͑ɺɺ͜͜·ͰདྷͨΒϓϩάϥϛϯάݴޠͰॻ͘CDKͷํ͕…? • ͋·ΓτϦοΩʔͳػೳΛ࢖͍͗͢Δͱ୭΋෇͍ͯ͜Εͳ͍ͷͰ
 ༻๏༻ྔ͸஫ҙ͠·͠ΐ͏

Slide 81

Slide 81 text

Terraformer

Slide 82

Slide 82 text

ݸਓతײ૝ • ਺೥ޙʹ͸ ൚༻ݴޠ vs DSL ໰୊͕ຄൃ͢Δ • Ͱ΋ɺঃʑʹऩଋָͯ͠ʹͳΔ͸ͣͳͷͰWelcome • CDKͩͱॻ͘͜ͱ͸ָʹͳΔ • ͚Ͳɺӡ༻ɾҡ࣋͢Δ͜ͱ͸ผɻCFnΛϥοϓ͍ͯ͠Δ͚ͩͳ ͷͰίʔυͷద༻࣌ͷڍಈ͸มΘΒͣཧղ͕ඞཁ

Slide 83

Slide 83 text

ݸਓతײ૝ • ʮ࡞Δʯͬͯͷ͸IaCͰ՝୊ղܾͯ͠ɺʮӡ༻ʯ͸IaCͰղܾ͠ͳ ͍ͷ͸͋Γɻ • IaC͸࢖͍ࣺͯɻ͋͘·ͰɺαʔϏεؒͷܨ͗ͱ͔Λදݱ͢Δ΋ ͷɻߏஙखॱͱͯ͠දݱ͢Δ΋ͷɻͱ͔ɻ࣮ࡍͷύϥϝʔλ͸ AWSίϯιʔϧݟͯͶͱ͔༗Γͩͱࢥ͏ɻ

Slide 84

Slide 84 text

Infrastructure as Code Tool ࢖͍ࣺͯIaCͷ৔߹ͷ Pro/Con

Slide 85

Slide 85 text

αΫοͱ΍ͬͯϋϚΓͦ͏ͳ৚݅Λ·ͱΊΔ

Slide 86

Slide 86 text

·͞ʹ޲͍͍ͯΔɻ͙͢ʹͰ΋΍ͬͨํ͕͍͍΍ͭ • ඵͰ൓ө͞ΕΔ • ফͯ͠΋ɺ͙͢ʹద༻͢Ε͹໰୊ͳ͍ • Կճ΋࡞Δ • ྫ • Datadog: Monitor • AWS: CloudTrail, SNS, SQS, Route53, etc… • ͜ͷล͔Β࢝ΊΔͱɺॻ͖ํ΍࢖͍উख͕෼͔Δ

Slide 87

Slide 87 text

·͞ʹ޲͍͍ͯͳ͍ • ࡞੒ʹ͕͔͔࣌ؒΔ΍ͭʢDBܥʣ • Կճ΋࡞Βͳ͍΍ͭʢRedShift΍CloudFrontʣ • ফ͢ͱϚζΠ΍ͭ • Α͘มߋ͢Δ΍ͭ • ͜ͷล͔Β࢝ΊΔͱɺ1ճ1ճͷ࡞ۀ͕ා͍ɻࠩ෼͕ग़ͨͱ͖ʹຖ ճٵऩ͢Δͷ͕ਏ͍ɻ͔͔࣌ؒΔͷͰςετ͔ͳΓ͠ΜͲ͍

Slide 88

Slide 88 text

·ͱΊ • ֓೦ʹπʔϧ͕௥͍͔ͭͳ͍͜ͱ͸Α͋͘Δɻਏ͍ɻROIߟ͑Δɻ • Ͱ΋֓೦ʢίϯηϓτʣ΍πʔϧ͔Βֶ΂Δ͜ͱ͸ଟ͍ɻ • 10 - 20%ఔ౓ʢ਺஋͸ࣗ༝ʣͷٕज़౤ࢿ͸ߦֶ͍ͼଓ͚Δɻ • ֶͦͯ͠Μͩ͜ͱΛࣄۀͷ੒௕଎౓ʹ׆͔͢ɻࣦഊ΋ؚΊͯɻ

Slide 89

Slide 89 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠