Slide 1

Slide 1 text

๭αʔϏεͷϦχϡʔΞϧͰ ECSΛಋೖͨ͠Α΋΍·࿩ Healthtech Meetup vol.1 2018/05/22 גࣜձࣾΤεɾΤϜɾΤεɹޫफ๎޺

Slide 2

Slide 2 text

ࣗݾ঺հ • ໊લ: ޫफ ๎޺ (@t_mitz ) • ձࣾ: גࣜձࣾΤεɾΤϜɾΤε ϓϩμΫτ։ ൃ෦ ٕज़ਪਐάϧʔϓ • (ϔϧεέΞΆ͍)झຯɿϚϥιϯ ! • ߦಈม༰εςʔδϞσϧ͸ҡ࣋ظ

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

גࣜձࣾΤεɾΤϜɾΤε • IT x ҩྍɾհޢɾϔϧε έΞྖҬͷύΠΦχΞ اۀ • ߴྸࣾձΛऔΓר͘ਓʑ ͕ΠΩΠΩͱੜ׆Ͱ͖ ΔΠϯϑϥͷߏங

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

͸͡ΊΔલʹ

Slide 7

Slide 7 text

࣮͸·ͩಋೖऴΘͬͯ·ͤΜ" • ๭հޢαʔϏεͷΞϓϦέʔγϣϯͷվमͱฒ ߦͯ͠ECSͷߏஙΛ͢͢Ί͍ͯΔ • ຊ൪ӡ༻։࢝·Ͱʹ༻ҙ͓͚ͯ͠͹Α͍Օॴʹ ͍ͭͯ͸·ͩະணखʢAWSͷίετ཈੍ͳͲʣ • ࢼߦࡨޡ͍ͯͨ͠ͱ͜ΖΛੜԹ͔͍໨Ͱ͝ཡ͍ ͚ͨͩΔͱ޾͍Ͱ͢

Slide 8

Slide 8 text

ࠓ೔ͷΞδΣϯμ • ECSΛ࠾༻ͨ͠ཧ༝ • ߏ੒ʹ͍ͭͯ • Α΋΍·࿩

Slide 9

Slide 9 text

ECSΛ࠾༻ͨ͠ཧ༝

Slide 10

Slide 10 text

࠾༻ཧ༝ • ϩʔΧϧ؀ڥʹ͸DockerಋೖࡁΈͩͬͨͷͰຊ൪ ؀ڥͰ΋ಉ͡΋ͷΛಈ͔ͯ͠ݕূ͍ͨ͠ • ࣗલͰίϯςφͷΦʔέετϨʔγϣϯΛ੔උ͢ Δͷ͸ίετ͕ߴ͍ͷͰطଘͷιϦϡʔγϣϯΛ ࢖͍͔ͨͬͨ • ΦϯϓϨ͔ΒύϒϦοΫΫϥ΢υ΁ҠߦͷλΠϛ ϯάͰΞʔΩςΫνϟΛݟ௚ͤΔλΠϛϯά

Slide 11

Slide 11 text

Google Kubernetes Engine ? • GKEͩͱIAM͕AWS΄Ͳࡉ੍͔͘ޚͰ͖ͳ ͍ʢ౰࣌ʣͷͰཁ݅ΛຬͨͤΒΕͳ͔ͬͨ • ࣾ಺ͷผαʔϏε͕ઌͩͬͯAWS΁Ҡߦ͠ ͨͱ͍͏എܠ͕͋Γɺࣾ಺ͷφϨοδ͕ஷ ·Γ΍͍͢Α͏ʹAWSΛબఆ

Slide 12

Slide 12 text

Kubernetes on AWS ? • kube-aws ͔ kops Λར༻ͯࣗ͠લͰΫϥελ Λߏங͢Δඞཁ͕͋Γॳظֶशίετ͸ߴ͍ • ࣗ෼1ਓͰ΍ͬͯͨͷͰͱΓ͋͑ͣαΫοͱಈ ͔ͤΔ؀ڥΛ४උ͢Δඞཁ͕͋ͬͨ • ͳΔ΂͘ϑϧϚωʔδυʹد͔ͤͨͬͨ

Slide 13

Slide 13 text

ߏ੒

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

CircleCI • ࠓ͸ςετͷ࣮ߦͷΈΛ΍͍ͬͯ·͢ • গ͠લ·ͰίίͰdocker imageΛbuild & pushͯ͠·ͨ͠ • CIʹ͔͔࣌ؒΓ͗͢ͰPRͷϚʔδʹӨڹ͋Δ ໰୊

Slide 16

Slide 16 text

CodePipeline • CodePipelineΛར༻ͯ͠GithubͷϒϥϯνΛ ؂ࢹͯ͠ߋ৽͕͋ΔͱECS΁σϓϩΠ • CodebuildͰdocker image build ͯ͠ECR΁ push • CodePipelineͷdeployͰECS΁௚઀σϓϩΠ

Slide 17

Slide 17 text

Deploy to ECS • Ҏલ͸ecs-deployΛ࢖͍͕ͬͯͨɺ CodePipelineΛ࢖͏ํ͕ߏ੒͕γϯϓϧʹ ͳͬͯϝϯςφϯε͠΍͍͢ͷͰ࠾༻ • hako΋ݕ౼ͯ͠Έ্͕ͨهಉ༷ʹ CodePipelineͷํ͕γϯϓϧͩͬͨ

Slide 18

Slide 18 text

Logging • ී௨ʹ awslogs driver Ͱ CloudWatch Logsʹ ऩूͯ͠·͢ • ϩάΛݟΔɺͱ͍͏ࣄʹؔͯ͠͸ࠔ͍ͬͯ· ͤΜʢCloudWatch LogsͰ୳͠ʹ͍͘ͱ͍͏ ͷ͸ஔ͍ͱ͍ͯ

Slide 19

Slide 19 text

ECS • 1αʔϏε1λεΫఆٛ • 1λεΫʹ3ͭͷίϯςφΛఆٛ • h2o • rails • shoryuken

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

Α΋΍·࿩

Slide 22

Slide 22 text

ఆظతͳόονॲཧ • CloudWatch EventsΛར༻ • ࣌ؒʹΑΔఆظ࣮ߦ΋Ͱ͖Δ͠ɺAWSίϯ ϙʔωϯτͷΠϕϯτhook΋Ͱ͖ͯ΂ΜΓ • ECSͷλεΫఆٛΛ༻ҙͯ͠call͢Ε͹OK

Slide 23

Slide 23 text

ߏ੒؅ཧ • ߏ੒؅ཧ͸͢΂ͯCloudFormation • ChangeSets͕΂ΜΓ • IAMͰͷݖݶ؅ཧ͕ڧྗ • awscliʹৄ͘͠ͳΕ·͢

Slide 24

Slide 24 text

Terraform ʹ͠ͳ͔ͬͨཧ༝ • ϚϧνΫϥ΢υʹ͢Δඞཁੑ͕ࠓͷͱ͜Ζͳ͔ͬͨ • HCL͸ಡΈ΍͍͕͢ಠࣗDSLͬͯॴ͕ΠϚΠν • ෳ਺ਓͰߏ੒؅ཧ͢Δͱ͖tfstate؅ཧΛؾʹͨ͘͠ ͳ͔ͬͨ • ࣮ߦޙʹίέͨͱ͖ͷϦΧόϦ͕cfnΑΓίετߴ

Slide 25

Slide 25 text

AWS::Cloudformation::Stack • AWSίϯϙʔωϯτ͝ͱʹstackϑΝΠϧΛఆ ٛͯ͠ɺͦΕΒΛϦιʔεͱͯ͠ωετͯ͠؅ ཧͰ͖Δ΍ͭ • খ͍͞୯ҐͰςϯϓϨʔτΛ࡞͓͚ͬͯ͹૊ Έ߹Θͤͯߏ੒Λม͑ΒΕΔͷͰ΂ΜΓ

Slide 26

Slide 26 text

ൿಗ৘ใ • SSM::Parameter StoreΛར༻ • ΞϓϦʹ౉͢؀ڥม਺͸͜͜Ͱ؅ཧ • Ҏલ͸yaml_vaultΛ࢖ͬͯΞϓϦέʔγϣϯ ʹ͍͚࣋ͨͤͯͨͲɺͪ͜Βͷํ͕γϯϓϧ • AWS Secrets Manager͸͜Ε͔Βݕ౼

Slide 27

Slide 27 text

AutoScaling • EC2 AutoScaling • CPUReservation • ECS Service AutoScaling • ·ͩຊ൪ӡ༻Λ։͍࢝ͯ͠ͳ͍ͷͰະઃఆ • EC2ͱECSͷAutoScaling͕ผϨΠϠͰಈ͘ͷͰΠϯε λϯε૿ݮ࣌ʹλεΫͷ഑ஔΛߟྀ͠ͳ͍ͱ͍͚ͳ͍

Slide 28

Slide 28 text

CPUͱReservedMemory • ECSͰΊΜͲ͍͘͞ͷ͕Clusterʹඥ෇͚ͨEC2ͷϦιʔ εΛTaskDefinitionͰ഑෼Λܭࢉ͢Δඞཁ͕͋Δ͜ͱ • σϓϩΠ࣌ɺMaxMaximumPercent & MinimumHealthyPercent ΋ߟྀͨ͠਺஋ʹ͓͔ͯ͠ͳ ͍ͱࠔΔ͕ීஈ͸Ϧιʔε͕एׯ༨͍ͬͯΔײʹͳΔ… • ༻్ʹΑͬͯ͸Fargate͕౦ژʹ͘Δͱղܾ

Slide 29

Slide 29 text

·ͱΊ

Slide 30

Slide 30 text

·ͱΊ • CloudformationͦΜͳʹѱ͘ͳ͍ͷͰAWSͷ ΈͰด͡Δߏ੒ͳΒ࢖͏ͷΞϦͰ͢ • ECS͸EC2ϨΠϠͱίϯςφϨΠϠͷ؅ཧ͕গ ͠৑௕ʹͳΔͷͰ޻෉͕ඞཁ • Code*γϦʔζ͸ੲΑΓ͜ͳΕ͍ͯΔͷͰ࢖͏ ͱ΂ΜΓͳγʔϯ͕ଟΊͰ͢

Slide 31

Slide 31 text

ΤϯδχΞืूͯ͠·͢ʂ ৄ͘͠͸Wantedlyͷืूͷ֓ཁΛ