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
Paper Plane (Part 1)
katiecoart
PRO
1
10k
Raft: Consensus for Rubyists
vanstee
141
7.6k
GraphQLとの向き合い方2022年版
quramy
50
15k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
270
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
630
Prompt Engineering for Job Search
mfonobong
0
410
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.4k
Facilitating Awesome Meetings
lara
57
7.1k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
800
Optimizing for Happiness
mojombo
378
71k
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