Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
EC2 & 手動デプロイから ECS& CodePipeline に変えてみた
Search
IshinShibata
July 13, 2021
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
EC2 & 手動デプロイから ECS& CodePipeline に変えてみた
IshinShibata
July 13, 2021
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
180
The untapped power of vector embeddings
frankvandijk
2
1.8k
Between Models and Reality
mayunak
4
380
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Agile that works and the tools we love
rasmusluckow
331
22k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
340
The Cult of Friendly URLs
andyhume
79
7k
Technical Leadership for Architectural Decision Making
baasie
3
440
Speed Design
sergeychernyshev
33
1.9k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Transcript
&$खಈσϓϩΠ͔Β &$4ˍ $PEF1JQFMJOFʹม͑ͯΈͨ גࣜձࣾ".%MBC ࣲాҡ৽
ࣗݾհ ࣲాҡ৽ͱਃ͠·͢ɻ ݩͷதখاۀʹͯӦۀ৬ʢ̑ʣ ˣ גࣜձࣾώτΫηʢΤϯδχΞͱͯ͠స৬ʣ ˣ גࣜձࣾ".%MBC ݱࡏ ͓স͍ΤϯδχΞͱͯ͠ҐΛཱ͍֬ͨ͠ɻɻ
ΞδΣϯμ ❏ ܦҢ ❏ &$4ͷ֓ཁ ❏ &$4࡞·Ͱͷ͋Ε͜Ε ❏ ٧·ͬͨͱ͜Ζᶃ ❏
٧·ͬͨͱ͜Ζᶄ ❏ $PEFQJQFMJOFಋೖ ❏ ·ͱΊ d&$खಈσϓϩΠ͔Β &$4ˍ $PEF1JQFMJOFʹม͑ͯΈͨ d
ܦҢ
TTIͰೖͬͯखಈͰૢ࡞ةݥͩ͠ɺԿΑΓखؒɻɻɻ &$4৮ͬͯΈ͍ͨʂ ͦΖͦΖखಈσϓϩΠ͔Β͞ΑͳΒ͍ͨ͠ɻɻ
何よりイケてない気がする!!
ݱঢ়ͷΞφϩάσϓϩΠखॱ TTIͰFDʹೖΔ HJUQVMMPSJHJONBTUFS ECʹมߋ͕͋ΕɺNJHSBUF EPDLFSJNBHFΛCVJME EPDLFSDPNQPTFVQ
None
&$4ͷ֓ཁ
"84্ͰEPDLFSίϯςφΛ؆୯ʹ࣮ߦͰ͖ΔαʔϏε λΠϓ&$ͱ'"3("5& &$ จࣈ௨ΓFDͷதʹίϯςφΛݐͯΔ TTIͰೖͬͯԿ͔ૢ࡞͍ͨ࣌͠ʹศརɻ GBSHBUF FDͷཧΛ͠ͳ͍͍ͯ͘ εέʔϧ͕༰қ ECS
͜ΕΛ"84্ͰΔͷ͕ɺ&$4 ϩʔΧϧͰEPDLFSΛىಈ͢ΔྲྀΕͱͯ͠ɻɻ %PDLFSGJMFͷ༻ҙ EPDLFSCVJMEUOHJOYGEPDLFSOHJOY EPDLFSSVOOHJOY
UBTLEFGJOJUJPO TFSWJDF 5BTL 5BTL DMVTUFS &$4 EPDLFSDPNQPTFZNMΈ͍ͨͳͷ ༻͢ΔEPDLFSJNBHFʁ QPSUͷࢦఆ ڥมͷઃఆ
ϘϦϡʔϜͷઃఆ UBTLEFGJOJUJPOʁ
UBTLEFGJOJUJPO TFSWJDF 5BTL 5BTL DMVTUFS &$4 &$4Λ࡞͢Δ্ͰશମΛ·ͱΊΔ ശΈ͍ͨͳͷ DMVTUFSʁ
5BTLΛ·ͱΊΔͷ UBTLEFGJOJUJPOΛͱʹ5BTLΛ্ཱͪ͛Δ ༻͢ΔλεΫͷʁ ϩʔυόϥϯαʔͷ༻༗ແ "1*ɺ$MJFOUΈ͍ͨͳΠϝʔδ UBTLEFGJOJUJPO TFSWJDF 5BTL 5BTL DMVTUFS
&$4 TFSWJDFʁ
UBTLEFGJOJUJPO TFSWJDF 5BTL 5BTL DMVTUFS &$4 EPDLFSίϯςφΛ·ͱΊͨͷ &$λΠϓͰ͋Εɺ5BTL&$ͱ͍͏ ೝࣝͰྑ͍͔͠Εͳ͍ 5BTLʁ
&$4࡞·Ͱͷ͋Ε͜Ε
˔ DMVTUFS࡞ &$4ϓϩδΣΫτͷശΈ͍ͨͳͷ ˔ UBTLEFGJOJUJPOͷ࡞ ίϯςφͷىಈํ๏ EPDLFSDPNQPTFZNMΈ͍ͨͳͷ ˔ TFSWJDFͷ࡞ λεΫΛ·ͱΊΔͷ
˔ EPDLFSJNBHFͷొ
EPDLFSIVCͱಉ͡Α͏ͳαʔϏεͰJNBHFΛొͰ͖Δ ͪΖΜEPDLFSQVMMͰ͖Δ l BXTFDSHFUMPHJOQBTTXPSESFHJPOࢦఆϦʔδϣϯ cEPDLFSMPHJOVTFSOBNF"84 QBTTXPSETUEJOBXTΞΧϯτELSFDSࢦఆϦʔδϣϯBNB[POBXTDPN l EPDLFSCVJMEUOHJOY l EPDLFSUBHOHJOYMBUFTUBXTΞΧϯτELSFDSࢦఆϦʔδϣ
ϯBNB[POBXTDPNOHJOYMBUFTU l EPDLFSQVTIBXTΞΧϯτELSFDSBQOPSUIFBTUBNB[POBXTDPNOHJOYMBUFTU &$3ʹEPDLFSΠϝʔδΛొ
٧·ͬͨͱ͜Ζᶃ
BXTDMJΛීஈΘͳ͍͔ΒɺJBNͷΓସ͑ํͰΉɻɻɻ BXTFDSHFUMPHJOQBTTXPSESFHJPOࢦఆϦʔδϣϯ cEPDLFSMPHJOVTFSOBNF"84 QBTTXPSETUEJOBXTΞΧϯτELSFDSࢦఆϦʔδϣϯBNB[POBXTDPN &$3ʹQVTI͢ΔBXTΞΧϯτͱผͷΞΧϯτͰϩάΠϯͨ͠߹ɺQVTI͕Ͱ͖ͳ͍ɻ BXTΞΧϯτ͕ෳ͋Δ߹FYQPSU"84@%&'"6-5@130'*-&QSPGJMFOBNF Ͱ༻͢ΔΞΧϯτΛΓସ͔͑ͯΒɺ&$3ʹϩάΠϯ͢Δ QVTI͕Ͱ͖ͳ͍ɻɻɻɻɻ
٧·ͬͨͱ͜Ζᶄ
nginx Rails ιέοτ௨৴Λߦ͏ʹ 3BJMTͷιέοτϑΝΠϧΛڞ༗͢Δඞཁ͕͋Δ
volume task GBSHBUF OHJOYίϯςφ͔Β ϘϦϡʔϜιʔεΛSBJMTίϯςφʹࢦఆ &$ ϘϦϡʔϜΛ࡞͠ɺίϯςφಉ࢜Ͱڞ༗͢Δ ソケット通信 ソケット通信 WPMVNFͷڞ༗
socketファイル &'4Λ͑ଞʹΓํ͕͋Δ͔ɻɻɻ volume task ソケット通信
OHJOYίϯςφ͔ΒϘϦϡʔϜΛಡΈࠐΉ railsのDockerfileにて VOLUMEを作成 OHJOYɺSBJMTίϯςφ͔Βڞ༗ͷϘϦϡʔϜΛϚϯτ͢Δ ボリュームの作成 &$̎λΠϓͷ߹ 'BSHBUFͷ߹
$PEFQJQFMJOFಋೖ
DPEFQJQFMJOFͰ$*$%ͷύΠϓΛ࡞ΓɺύΠϓ Λͦͷ΄͔ͷαʔϏεͰͭͳ͘Πϝʔδ
ࠓճ༻ͨ͠αʔϏε
ソース ビルド テスト デプロイ
Pipeline Transition Stage Action Action Stage Action Action Action 1JQFMJOF
$PEFQJQFMJOFͷ࠷্Ґ֓೦ɻ֤ϓϩηε Λ·ͱΊͨͷ 4UBHF 1JQFMJOFͷҰ࿈ͷϓϩηεɻϏϧυɺςε τɺσϓϩΠ͕͜Εʹ͋ͨΔ "DUJPO 4UBHF্ͷ۩ମతͳλεΫɻ৽͍͠ίϯ ςφͷλεΫʹஔ͖͑Δͱ͔ɺ%PDLFS CVJMEɺ%PDLFSQVTIͳͲ 5SBOTJUJPO ࣍ͷεςʔδʹҠΔॲཧ
Action Category(アクション内容) Action Providers(どのサービスが行うか) Souce Amazon S3, Amazon ECR, CodeCommit,
Github, Bitbucket Build CodeBuild, Jenkins Test CodeBuild, Jenkins Deploy Amazon S3, Amazon ECS, CodeDeploy
Pipeline Souce Deploy Build docker build, ECRへの docker-push git pushをトリガーにpipeline
の実行し、ソースを取得 古いコンテナを新しいコンテ に差し替える Transition Transition buildspec.yml imagedefinitions .json version: 0.2 phases: pre_build: commands: - $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email) 環境変数定義ができる build: commands: - docker build -t $AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/rails:latest . post_build: commands: - docker push $AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/rails:latest - echo Writing image definitions file... - printf '[{"name":"rails","imageUri":"%s"}]' - $AWS_ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com/rails:latest > imagedefinitions.json artifacts: files: imagedefinitions.json [ {"name":"rails","imageUri":"AWS_ACCOUNT_ID.dkr.ecr.ap-northeast- 1.amazonaws.com/rails:latest"} ]
None
·ͱΊ
˔ ӡ༻ίετ͕ܹݮͨ͠ɻ ˔ "84৮Δͷָ͕͘͠ͳΔɻ ˔ $PEFQJQFMJOF͍͍͢ʂ ˔ جຊతͳ%PDLFSͷཧղେࣄʂ ͞ΑͳΒखಈσϓϩΠ $MPVE'PSNBUJPOͰߏஙͯ͠Έ͍ͨ
ॳΊͯͷ$*$%$PEFQJQFMJOF͓͢͢Ί %PDLFSͷཧղ͕͋ͬͯͦ͜༻Ͱ͖ΔαʔϏε
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
$PEFγϦʔζͰ࢝ΊΔ͡Ίͯͷ$*$% IUUQTEFWDMBTTNFUIPEKQBSUJDMFTDJDEXJUIDPEFTFSJFTBUIJHPCBTIJBXT ϙʔτϑΥϦΦΛ&$4Ͱʂʳ3BJMTº/HJOYΞϓϦΛ'BSHBUFʹσϓϩΠ͢Δ·ͰΛஸೡʹઆ໌ͯ͠Έͨ 71$࡞ʙ$JSDMF$*ʹΑΔࣗಈσϓϩΠ·Ͱ લฤ IUUQTRJJUBDPNNBSVJUFNTFEBCBEFEBEC ʲ"84ೖʳ&$4 'BSHBUF ͱ&$3Ͱָʑίϯςφ͔Β)FMMP8PSME͠Α͏ʂ IUUQTXXXZPVUVCFDPNXBUDI
W@'Y-QYHNP ॳ৺ऀͰͰ͖Δʂ &$4º &$3º $JSDMF$*Ͱ3BJMTΞϓϦέʔγϣϯΛίϯςφσϓϩΠ IUUQTRJJUBDPNTBPOHUYJUFNTGEEC ࢀߟࢿྉ "84$PEF1JQFMJOFͰ $*$%ͷΈΛߏங͓ͨ͠ IUUQTCMPHTQBDFNBSLFUDPNDPEFDJDEDPEFQJQFMJOF "NB[PO&$$POUBJOFS4FSWJDF &$4 ͷ֓೦ཧ IUUQTRJJUBDPN/FX(ZVJUFNTFEFEBCEE