Slide 1

Slide 1 text

C o p i l o t ʹΑΔ ͓खܰ3෼ ECSΫοΩϯά

Slide 2

Slide 2 text

৽Ҫ խ໵ ᖛా ޹࣏ .BTBZB"SBJ ,PKJ)BNBEB ϑϧελοΫσΟϕϩούʔ ."%νʔϜϚωʔδϟʔ "1/"845PQ&OHJOFFST +BQBO"1/"NCBTTBEPS 本⽇のウェイター 本⽇のシェフ $PQJMPUͷઆ໌୲౰ $PQJMPUͷσϞ୲౰ !NTZ !IBNBLP

Slide 3

Slide 3 text

ࠓ೔ͷϝΠϯσΟογϡ͸ $PQJMPUͰ͢ɻ ࣄલʹϋϚίʔγΣϑʹΑΔ ؆୯ͳԼ͝͠Β͑ͷ༷ࢠΛݟͯΈ·͠ΐ͏ɻ σϞ

Slide 4

Slide 4 text

վΊͯɺࠓ೔ͷϝΠϯσΟογϡ͸ $PQJMPUͰ͢ɻ

Slide 5

Slide 5 text

AWSϚωʔδυͳίϯςφαʔϏεͱ͍͑͹ɺ

Slide 6

Slide 6 text

AWSϚωʔδυͳίϯςφαʔϏεͱ͍͑͹ɺ

Slide 7

Slide 7 text

AWSϚωʔδυͳίϯςφαʔϏεͱ͍͑͹ɺ Amazon ECS AWS Fargate (コントロールプレーン) (データプレーン)

Slide 8

Slide 8 text

ͦΕͳΓͷ࢓ࠐΈ࡞ۀ ECS & Fargate Λ৯ͨ͢Ίʹ͸ɺ ͕ඞཁͱͳΓ·͢ɻ

Slide 9

Slide 9 text

ͦΕͳΓͷ࢓ࠐΈ࡞ۀ ECS & Fargate Λ৯ͨ͢Ίʹ͸ɺ ͕ඞཁͱͳΓ·͢ɻ ʮ࢓ࠐΈʯͱ͸Ͳ͏͍͏ҙຯʁ

Slide 10

Slide 10 text

࢓ࠐΈ࡞ۀͷશ༰Λ ݟ͍͖ͯ·͢ɻ

Slide 11

Slide 11 text

ҎԼΛલఏͱ͠·͢ɻ ίϯςφΞϓϦ͕४උࡁΈ "84ΞΧ΢ϯτௐୡࡁΈ σϓϩΠ͢Δͷ͸ 8FCΞϓϦ

Slide 12

Slide 12 text

71$ͷ࡞੒ 4UFQ

Slide 13

Slide 13 text

TVCOFUͷ࡞੒ 4UFQ Ϛϧν ";ߏ੒Λ૊Ήલఏͱͯ͠ɺ 1VCMJDTVCOFUͱ 1SJWBUFTVCOFUΛ ͦΕͧΕͭͣͭ࡞੒ɻ

Slide 14

Slide 14 text

Πϯλʔωοτ(8ͱ ϧʔτςʔϒϧͷ࡞੒ 4UFQ 1VCMJD4VCOFUͷσϑΥϧτϧʔτΛ Πϯλʔωοτ(8ʹ޲͘Α͏ʹ͢Δɻ

Slide 15

Slide 15 text

"-#ͷ࡞੒ 4UFQ -#ɺϦεφʔɺλʔήοτάϧʔϓ࡞੒ɻ λʔήοτάϧʔϓͷͿΒԼ͛ઌͳ͠ɻ "-#༻ηΩϡϦςΟάϧʔϓΛ࡞੒ɻ

Slide 16

Slide 16 text

&$3ͷ࡞੒ 4UFQ ࡞੒ͨ͠ίϯςφΞϓϦΛ &$3ʹϓογϡɻ

Slide 17

Slide 17 text

$MPVE8BUDI -PH(SPVQͷ࡞੒ 4UFQ ίϯςφͷϩάग़ྗઌͱͯ͠༻ҙɻ

Slide 18

Slide 18 text

&$4Ϧιʔε࡞੒ 4UFQ ϋϚΓͲ͜Ζ͕Ұ൪ଟ͍࡞ۀɻ ؔ࿈ *".ϩʔϧɺ&$4Ϋϥελʔɺ &$4λεΫఆٛɺ&$4αʔϏεΛ࡞੒ɻ

Slide 19

Slide 19 text

ΞϓϦσϓϩΠ 4UFQ 'BSHBUF্ʹల։͞Εͨ ίϯςφ8FCΞϓϦͷಈ࡞֬ೝΛߦ͏ɻ

Slide 20

Slide 20 text

71$ͷ ࡞੒ 4VCOFUͷ ࡞੒ *(8ͱϧʔτ ςʔϒϧ࡞੒ "-#ͷ ࡞੒ &$3ͷ ࡞੒ $8-PHTͷ ࡞੒ &$4ͷ ࡞੒ ΞϓϦ σϓϩΠ Step.1 Step.2 Step.3 Step.4 Step.5 Step.6 Step.7 Step.8 ࢓ࠐΈͷߦఔΛ͓͞Β͍ͯ͠Έ·͢ɻ

Slide 21

Slide 21 text

71$ͷ ࡞੒ 4VCOFUͷ ࡞੒ *(8ͱϧʔτ ςʔϒϧ࡞੒ "-#ͷ ࡞੒ &$3ͷ ࡞੒ $8-PHTͷ ࡞੒ &$4ͷ ࡞੒ ΞϓϦ σϓϩΠ Step.1 Step.2 Step.3 Step.4 Step.5 Step.6 Step.7 Step.8 શߦఔΛ͓͞Β͍ͯ͠Έ·͢ɻ ख਺͕ଟ͘ɺॳΊͯར༻͢Δ৔߹ɺ ϋʔυϧ͕ߴ͍ͱײ͡·ͤΜ͔ʁ

Slide 22

Slide 22 text

ૣ͘ΞϓϦΛσϓϩΠ͍ͨ͠ ࢓ࠐΈΛͬ͢ඈ͹ͯ͠ ECS & Fargate ্ʹ ͱ͍͏χʔζ΋͋Δ͸ͣɻ

Slide 23

Slide 23 text

ૣ͘ΞϓϦΛσϓϩΠ͍ͨ͠ ࢓ࠐΈΛͬ͢ඈ͹ͯ͠ ECS & Fargate ্ʹ ͱ͍͏χʔζ΋͋Δ͸ͣɻ ECS&FargateΛ ࢖͏ͷͰɺ ײ৮Λ௫Έ͍ͨɻ ؆୯ͳ"1*Λ ͬ͞͞ͱ ఏڙ͍ͨ͠ɻ ΞϓϦ։ൃʹ ஫ྗ͍ͨ͠ɻ ΞϓϦσϓϩΠ Մೳͳຊ൪؀ڥΛ αοͱ೺Ѳ͍ͨ͠ɻ

Slide 24

Slide 24 text

Ͳ͏͢Ε͹͍͍ʁ

Slide 25

Slide 25 text

AWS Copilot ・ECS & Fargate 構築とアプリ自動デプロイが可能なツール ɾͭ޻ఔͰϓϩμΫγϣϯϨσΟͳ؀ڥ͕४උ ɾγϯϓϧͳ CI/CD ύΠϓϥΠϯ΋༻ҙՄೳ ݱࡏ͸ v0.3.0

Slide 26

Slide 26 text

AWS Copilot ・ECS & Fargate 構築とアプリ自動デプロイが可能なツール ɾͭ޻ఔͰϓϩμΫγϣϯϨσΟͳ؀ڥ͕४උ ɾγϯϓϧͳ CI/CD ύΠϓϥΠϯ΋༻ҙՄೳ ݱࡏ͸ v0.3.0

Slide 27

Slide 27 text

Application Service Environment $PQJMPUͭͷϝΠϯίϯηϓτ

Slide 28

Slide 28 text

Application (app) &OWJSPONFOUͱ 4FSWJDFͷ·ͱ·Γ ・Copilot で作成される AWS リソース全てを表現 ɾService ͱ Environment ͸࣍εϥΠυʹͯ ɾਖ਼֬ʹ͸ɺpipeline ΋ؚ·ΕΔ

Slide 29

Slide 29 text

Environment (env) ΞϓϦ։ൃͰ෼཭͢΂͖؀ڥͷఆٛ ɾʮ։ൃʯʮςετʯʮຊ൪ʯͳͲݸผͷ؀ڥΛఆٛͰ͖Δ ɾService のベースとなる要素 ɾVPC Λத৺ͱͨ͠ΞϓϦڞ௨ͳ AWS ϦιʔεΛ࢘Δ

Slide 30

Slide 30 text

Environment VPC ؔ࿈Ϧιʔε΍ECS Cluster ͸ Environmentͷ؅׋ɻ ˞pipeline ༻ͷ S3 Bucket ΋ର৅ɻ

Slide 31

Slide 31 text

Environment ෳ਺ͷ&OWJSPONFOUΛ࡞੒΋Ͱ͖Δɻ ˞։ൃ؀ڥͱຊ൪؀ڥͷ෼཭༻్ɺͳͲ

Slide 32

Slide 32 text

Application Environment Application Environment

Slide 33

Slide 33 text

Application Environment Application Environment Environment Environment

Slide 34

Slide 34 text

検証App PoC ؀ڥ 実App ։ൃ؀ڥ εςʔδϯά؀ڥ ຊ൪؀ڥ

Slide 35

Slide 35 text

Service (svc) ΞϓϦέʔγϣϯຖͷϦιʔεఆٛ ɾEnvironment ͸ΞϓϦέʔγϣϯͰڞ௨ɺService ͸ݸผɻ ɾΞϓϦͷ਽ܗͱͯ͠ɺҎԼͷ͔ͭΒબ୒Ͱ͖Δɻ Load Balanced Web Service Backend Service

Slide 36

Slide 36 text

Service ΞϓϦ୯ҐͰ͋ΔECS Service ΍ ECS Task ఆٛɺECR ͳͲ͕ Service ͷ؅׋ɻ ˞ࠨਤ͸ Load Balanced Web Service Λ બ୒ͨ͠৔߹ͷྫɻ

Slide 37

Slide 37 text

Service ෳ਺ͷ Environment ʹ ಉҰͷ Service ΛσϓϩΠ͢Δ͜ͱ΋Մೳɻ

Slide 38

Slide 38 text

Application Environment Service Application Service Service Environment Environment Environment

Slide 39

Slide 39 text

Application Environment Service Application Service Service Environment Environment Environment

Slide 40

Slide 40 text

検証App PoC ؀ڥ サンプルAPI 実App όοΫΤϯυ"1* 8FC"1* ։ൃ؀ڥ εςʔδϯά؀ڥ ຊ൪؀ڥ

Slide 41

Slide 41 text

Application Service Environment $PQJMPUͭͷϝΠϯίϯηϓτ ͍ͬͨΜ·ͱΊ = + Environment Environment Service Service

Slide 42

Slide 42 text

AWS Copilot ・ECS & Fargate 構築とアプリ自動デプロイが可能なツール ɾͭ޻ఔͰϓϩμΫγϣϯϨσΟͳ؀ڥ͕४උ ɾγϯϓϧͳ CI/CD ύΠϓϥΠϯ΋༻ҙՄೳ

Slide 43

Slide 43 text

> app ├ Dockerfile └ src ├ hoge.js :

Slide 44

Slide 44 text

> Terminal AWS Environment app ├ Dockerfile └ src ├ hoge.js : Work Folder

Slide 45

Slide 45 text

> copilot init Copilot 初期化 app ├ Dockerfile └ src ├ hoge.js :

Slide 46

Slide 46 text

> copilot init What would you like to name your application? [? for help] ͭΊͷ޻ఔ ΞϓϦ໊ͷೖྗ app ├ Dockerfile └ src ├ hoge.js :

Slide 47

Slide 47 text

> copilot init Application name: copilot-app Which service type best represents your service's architecture? [Use arrows to move, type to filter, ? for more help] > Load Balanced Web Service Backend Service ͭΊͷ޻ఔ ΞʔΩςΫνϟͷλΠϓΛબ୒ app ├ Dockerfile └ src ├ hoge.js :

Slide 48

Slide 48 text

> copilot init Application name: copilot-app Service type: Load Balanced Web Service What do you want to name this Load Balanced Web Service? [? for help] ͭΊͷ޻ఔ બ୒ͨ͠αʔϏεͷ໊લΛೖྗ app ├ Dockerfile └ src ├ hoge.js :

Slide 49

Slide 49 text

> copilot init Application name: copilot-app Service type: Load Balanced Web Service Service name: front-end Which Dockerfile would you like to use for front-end? [Use arrows to move, type to filter, ? for more help] > ./Dockerfile ͭΊͷ޻ఔ σϓϩΠ͢Δ%PDLFSGJMFΛબ୒ app ├ Dockerfile └ src ├ hoge.js :

Slide 50

Slide 50 text

> copilot init Application name: copilot-app Service type: Load Balanced Web Service Service name: front-end Dockerfile: ./Dockerfile Ok great, we'll set up ... app ├ Dockerfile └ src ├ hoge.js :

Slide 51

Slide 51 text

> copilot init Application name: copilot-app Service type: Load Balanced Web Service Service name: front-end Dockerfile: ./Dockerfile Ok great, we'll set up ... 4FSWJDFຖͷϚχϑΣετ͕ࣗಈͰ࡞੒ ˞λεΫ਺ɺ$16ɺϝϞϦɺ"-#ͷϙʔτ൪߸ͳͲ͕ࢦఆՄೳ ࣮ߦ༻ͷϩʔϧ͕࡞੒ app ├ copilot │ └ front-end │ └ manifest.yml ├ Dockerfile └ src ├ hoge.js : Cloud Formation Stack

Slide 52

Slide 52 text

> copilot init Application name: copilot-app Service type: Load Balanced Web Service Service name: front-end Dockerfile: ./Dockerfile Ok great, we'll set up ... Would you like to deploy a test environment? [? for help] (y/N) app ├ copilot │ └ front-end │ └ manifest.yml ├ Dockerfile └ src ├ hoge.js : ͭΊͷ޻ఔ ςετ؀ڥʹΞϓϦΛσϓϩΠ͢Δ͔Ͳ͏͔ɻ Cloud Formation Stack

Slide 53

Slide 53 text

> copilot init Application name: copilot-app Service type: Load Balanced Web Service Service name: front-end Dockerfile: ./Dockerfile Ok great, we'll set up ... Deploy: Yes ⠙ Creating the infrastructure ... app ├ copilot │ └ front-end │ └ manifest.yml ├ Dockerfile └ src ├ hoge.js : Cloud Formation Stack

Slide 54

Slide 54 text

Cloud Formation app ├ copilot │ └ front-end │ └ manifest.yml ├ Dockerfile └ src ├ hoge.js : Environment ʹ֘౰͢Δ CFn Stack ͕࡞੒ ల։ > copilot init Application name: copilot-app Service type: Load Balanced Web Service Service name: front-end Dockerfile: ./Dockerfile Ok great, we'll set up ... Deploy: Yes ⠙ Creating the infrastructure ... Stack Stack (env)

Slide 55

Slide 55 text

Cloud Formation app ├ copilot │ └ front-end │ └ manifest.yml ├ Dockerfile └ src ├ hoge.js : &$3ͱ QJQFMJOF༻ 4༻ͷ CFn Stack ͕࡞੒ ల։ > copilot init Application name: copilot-app Service type: Load Balanced Web Service Service name: front-end Dockerfile: ./Dockerfile Ok great, we'll set up ... Deploy: Yes ⠙ Creating the infrastructure ... Stack Stack (env) Stack (app)

Slide 56

Slide 56 text

Cloud Formation app ├ copilot │ └ front-end │ └ manifest.yml ├ Dockerfile └ src ├ hoge.js : %PDLFSΠϝʔδ͕ Ϗϧυ͞Εͯ &$3ʹ QVTI > copilot init Application name: copilot-app Service type: Load Balanced Web Service Service name: front-end Dockerfile: ./Dockerfile Ok great, we'll set up ... Deploy: Yes ⠙ Creating the infrastructure ... Stack Stack (env) Stack (app)

Slide 57

Slide 57 text

Cloud Formation Stack app ├ copilot │ └ front-end │ └ manifest.yml ├ Dockerfile └ src ├ hoge.js : > copilot init Application name: copilot-app Service type: Load Balanced Web Service Service name: front-end Dockerfile: ./Dockerfile Ok great, we'll set up ... Deploy: Yes ⠙ Creating the infrastructure ... ✓Deployed front-end, you can access it at http://xxxxxx.ap-northeast-1.elb.amazonaws.com. Stack (svc) Service ʹ֘౰͢ΔCFn Stack ͕࡞੒ ల։ ˞Ϗϧυ͞Εͨίϯςφ΋σϓϩΠ͞ΕΔ αʔϏεͷΤϯυϙΠϯτ͕දࣔ Stack (env) Stack (app)

Slide 58

Slide 58 text

Cloud Formation Stack app ├ copilot │ └ front-end │ └ manifest.yml ├ Dockerfile └ src ├ hoge.js : > copilot init Application name: copilot-app Service type: Load Balanced Web Service Service name: front-end Dockerfile: ./Dockerfile Ok great, we'll set up ... Deploy: Yes ⠙ Creating the infrastructure ... ✓Deployed front-end, you can access it at http://xxxxxx.ap-northeast-1.elb.amazonaws.com. Stack (svc) Stack (env) Stack (app) ͍ͬͨΜ·ͱΊ ͭͷ޻ఔͰϓϩμΫγϣϯϨσΟͳίϯςφΞʔΩςΫνϟ͕࡞੒Մೳ

Slide 59

Slide 59 text

ͦΖͦΖ ϝΠϯσΟογϡͷ͓࣌ؒͰ͢ɻ ʢϋϚίʔγΣϑʹΑΔ՚ྷͳΔσϓϩΠΛͲ͏ͧʣ ຊ೔ͷϝχϡʔΛ͝঺հͨ͠ͱ͜ΖͰʜ σϞ

Slide 60

Slide 60 text

AWS Copilot ・ECS & Fargate 構築とアプリ自動デプロイが可能なツール ɾͭ޻ఔͰϓϩμΫγϣϯϨσΟͳ؀ڥ͕४උ ɾγϯϓϧͳ CI/CD ύΠϓϥΠϯ΋༻ҙՄೳ ͓·͚ͷσβʔτ

Slide 61

Slide 61 text

Pipeline ίϯςφ CI/CD ༻ͷϦιʔεఆٛ ɾ CodePipeline ʹΑΔύΠϓϥΠϯͷϕʔε͕؅ཧ͞ΕΔɻ ɾෳ਺ Environment ͰͭͷύΠϓϥΠϯͷΈαϙʔτɻ

Slide 62

Slide 62 text

Pipeline CodePipeline 〜 CodeBuild 〜 CloudFormation ͷ CI/CD ͕ల։ɻ ݱ࣌఺Ͱιʔεεςʔδ͸ GitHub ͷΈɻ

Slide 63

Slide 63 text

Application Environment Service Application Service Service Environment Environment Environment

Slide 64

Slide 64 text

pipeline Application Environment Service Application Service Service Environment Environment Environment

Slide 65

Slide 65 text

pipeline Application PoC ؀ڥ サンプルAPI Application όοΫΤϯυ"1* 8FC"1* ։ൃ؀ڥ εςʔδϯά؀ڥ ຊ൪؀ڥ

Slide 66

Slide 66 text

·ͱΊ

Slide 67

Slide 67 text

AWS Copilot ・ECS & Fargate 構築とアプリ自動デプロイが可能なツール ɾͭ޻ఔͰϓϩμΫγϣϯϨσΟͳ؀ڥ͕४උ ɾγϯϓϧͳ CI/CD ύΠϓϥΠϯ΋༻ҙՄೳ ·ͱΊ

Slide 68

Slide 68 text

׬৯͍͖ͨͩ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ JAWS SONIC 2020