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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
Producing Creativity
orderedlist
PRO
348
41k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
380
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
350
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
510
How to Ace a Technical Interview
jacobian
281
24k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
[SF Ruby Conf 2025] Rails X
palkan
2
1.4k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
660
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
570
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
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