Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
My Coaching Mixtape
mlcsv
0
360
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.4k
Producing Creativity
orderedlist
PRO
348
41k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Skip the Path - Find Your Career Trail
mkilby
1
260
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
600
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.6k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Test your architecture with Archunit
thirion
2
2.4k
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