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
capistrano-bundle_rsync使ったらオートスケールが高速化した話
Search
ryonext
June 17, 2015
Programming
2.6k
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
capistrano-bundle_rsync使ったらオートスケールが高速化した話
ryonext
June 17, 2015
More Decks by ryonext
See All by ryonext
AWS Lambda の Ruby 対応
ryonext
0
280
TwitterのList編集しやすいやつ作った
ryonext
0
1.8k
validationについて
ryonext
1
860
AWS Lambda と API GatewayでRails使わずに済んだ話
ryonext
8
4.4k
PumaとUnicornで最近自分が理解したこと
ryonext
13
9.6k
Hubot事例
ryonext
1
1.7k
Redisでバッチ処理を冗長化しつつ排他制御
ryonext
0
2.2k
CircleCIとwercker
ryonext
3
1.3k
rubykaigi 3day interactive white board
ryonext
2
410
Other Decks in Programming
See All in Programming
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
290
Java 27新機能 / Java 27 new features
kishida
2
150
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
220
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
220
Webの地図
yosuke_furukawa
PRO
6
4.6k
The Rails Doctrine Decade
koic
2
160
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
2.8k
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
430
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
330
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
Family mrubyの進捗
kishima
1
130
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
4.8k
Featured
See All Featured
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
700
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
WCS-LA-2024
lcolladotor
0
830
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
The Curse of the Amulet
leimatthew05
3
15k
How to Talk to Developers About Accessibility
jct
2
550
Raft: Consensus for Rubyists
vanstee
142
7.7k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Prompt Engineering for Job Search
mfonobong
0
450
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.6k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
530
Transcript
$BQJTUSBOPCVOEMF@STZOD ͬͨΒΦʔτεέʔϧ͕ߴ Խͨ͠
ࣗݾհ w Ϣχίϯͱ͍͏ϕϯνϟʔͰ3BJMTॻ͍ͯ·͢ w ΠΧJESZPOFYU
࣍ w DBQJTUSBOPCVOEMF@STZODͱ w ๊͍͑ͯͨ՝ w ղܾͨ͠ํ๏ͱखॱ w ݁Ռ
DBQJTUSBOPCVOEMF@STZODͱ w %F/"ͷ!TPOPUT͞Μ͕࡞ͬͨɺ֤ϊʔυʹ STZODͰσϓϩΠͰ͖Δ(FN w IUUQTHJUIVCDPNTPOPUTDBQJTUSBOP CVOEMF@STZOD
Կ͕͍͍ͷ͔ʁ w ௨ৗͷDBQJTUSBOPͰɺ֤ϊʔυʹTTI͠ɺ֤ ϊʔυͰෛՙͷֻ͔ΔCVOEMFJOTUBMMΛߦ͏ɻ w ͜ͷ(FNɺσϓϩΠ༻ͷαʔόͰCVOEMF JOTUBMMΛߦ͍ɺσϓϩΠޙͷʮՌʯΛ࡞ͬͨ ͋ͱͰɺ֤ϊʔυʹSTZODͰ͢Δ
ಈ࡞Πϝʔδ DBQJTUSBOP࣮ߦαʔό σϓϩΠରαʔό σϓϩΠରαʔό σϓϩΠରαʔό/ TTI ֤αʔόͰCVOEMFJOTUBMM͕ߦΘΕΔ
ಈ࡞Πϝʔδ DBQJTUSBOP࣮ߦαʔό σϓϩΠରαʔό σϓϩΠରαʔό σϓϩΠରαʔό/ DBQJTUSBOP࣮ߦαʔόͰ CVOEMFJOTUBMMͨ͠ͷΛ STZODͰ͢Δ σϓϩΠର
͜ΕʹΑΓ w ֤ϊʔυͰDQVෛՙͷ͔͔Δ࡞ۀ͕ߦΘΕͳ͍ ͷͰϦιʔεʹ͍͞͠ w ͕૿͖͑ͯͨͱ͖ɺ͕͘ͳΓʹ͍͘
ͦͷଞͷϝϦοτ w ҰσϓϩΠͨ͠όʔδϣϯσϓϩΠαʔό ʹอଘ͞Ε͍ͯΔͨΊɺಉ͡όʔδϣϯͷσϓ ϩΠ͕ૣ͍ w ͜Ε͕Φʔτεέʔϧʹޮ͘
๊͍͑ͯͨ՝ w ࣍ͷΑ͏ͳΈͰΦʔτεέʔϧΛઃఆ͍ͯ͠ ·ͨ͠
ΦʔτεέʔϦϯά༻".*Λ࡞ ΦʔτεέʔϦϯ ά༻".* ΠϯελϯεΛ৽ن࡞͠ɺΞϓϦಈ࡞ʹඞཁͳϛυϧΣ Ξʢ3VCZ/HJOYͳͲʣΛೖΕͨͷΛ".*Խ ΞϓϦ༻ͷ "OTJCMF
ىಈ࣌ʹ6TFS%BUBͰҎԼͷॲ ཧΛ࣮ߦ ΦʔτεέʔϦϯ ά༻".*͔Β্ཱͪ ͕ͬͨΠϯελϯε (JU)VC͔ΒΞϓϦͷϦϙδτϦΛऔಘ औಘͨ͠ϦϙδτϦ͔Βɺࣗʹରͯ͠DBQEFQMPZΛ࣮ߦ
w ϝϦοτ w ؆୯ w σϝϦοτ w ճCVOEMFJOTUBMM͕ΔͷͰ͍ w ͱݴ͏͔ճͰ͍
͜ΕʹΑΓ w ฏۉͯ͠ڧͷ͕͔͔͍࣌ؒͬͯͨ
w ࠷৽ͷBQQαʔό͔Β".*Λ࡞ͬͯɺىಈͯ͠ 6OJDPSOΛ্ཱͪ͛Δɺͱ͍͏Γํ͋Δ͚ Ͳ w ".*ࠩ͠ସ͑ BVUPTDBMJOHHSPVQࠩ͠ସ͑· ͰɺσϓϩΠͱηοτͰΔͷϋʔυϧߴ͍ ʢҰԠࣗಈԽͰ͖Δ͔ʣ
ղܾͨ͠ํ๏ͱखॱ
͜͏ߟ͑ͨ w σϓϩΠ͞Ε͍ͯΔͷNBTUFSΛอ͓ͬͯΓɺ ඞͣDBQJTUSBOPͰσϓϩΠ͍ͯ͠ΔͷͰ w BVUPTDBMFͰىಈ࣌ʹɺDBQJTUSBOP CVOEMF@STZODͰσϓϩΠ͢ΕɺࠓNBTUFSʹ ͋ΔͷΛSTZOD͢Δ͚ͩͳͷͰૣ͍ͷͰʁ
͜͏͍͏ߏʹ σϓϩΠαʔό $JSDMF$* "QQαʔό "QQαʔό BVUPTDBMF ࣌ʣ σϓϩΠґཔ ݱࡏՔಇதͷ"QQαʔόʹσϓϩΠ ࣗʹσϓϩΠґཔ
σϓϩΠ
$JSDMF$*͔ΒσϓϩΠ͠ͳ ͍ཧ༝ w ࡞ऀͷ!TPOPUT͞Μͷϒϩάʹهड़͞Ε͍ͯ ·͕͢ɺσϓϩΠαʔόͱ"QQαʔόͷΞʔΩ ςΫνϟ͕ಉ͡Ͱ͋Δඞཁ͕͋ΔͨΊɻ w σϓϩΠαʔόͰCVOEMFJOTUBMM͔ͯ͠Β STZODͰSVCZΞϓϦΛࢃ͘DBQJTUSBOP֦ு ࡞ͬͨTPOPUTCMPHIUUQCMPHMJWFEPPSKQ
TPOPUTBSDIJWFTIUNM
௨ৗσϓϩΠ࣌ͷεΫϦϓτ 15 production: 16 branch: master 17 commands: 18 -
ssh {Ϣʔβ}@{σϓϩΠαʔό} 'source ~/.bash_profile; branch=master stage=production sh' < deploy.sh DJSDMFZNM
௨ৗσϓϩΠ࣌ͷεΫϦϓτ 1 #!/bin/sh 2 3 mkdir -p deploy/{app_name} 4 5
if [ ! -d ./deploy/{app_name}/$branch ] ; then 6 git clone
[email protected]
:{github_user}/{github_repo} ~/deploy/ {app_name}/$branch 7 fi 8 cd /home/ubuntu/deploy/{app_name}/$branch 9 git fetch 10 git checkout -f origin/$branch 11 bundle 12 bundle exec cap $stage deploy EFQMPZTI
௨ৗσϓϩΠ࣌ͷεΫϦϓτ 1 set :stage, :production 2 set :branch, ENV['BRANCH_NAME'] ||
'master' 3 set :rails_env, 'production' 4 5 require 'aws-sdk' 6 7 AWS.config( 8 access_key_id: ENV['AWS_ACCESS_KEY_ID'], 9 secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], 10 region: ‘{region}’ 11 ) 12 13 instances = AWS.ec2.instances.with_tag(:Name, ‘{instance_name}’).select{|i| i.status == :running}.map(&:dns_name) 14 15 role :app, instances, user: 'ubuntu' 16 role :web, instances, user: 'ubuntu' 17 role :db, instances.first, user: 'ubuntu' DPOpHEFQMPZQSPEVDUJPOSC
Φʔτεέʔϧ࣌ 1 #!/bin/bash 2 sudo su - {Ϣʔβ} -c "ssh
{Ϣʔβ}@{σϓϩΠαʔό} -o StrictHostKeyChecking=no 'source ~/.bash_profile; HOST=`hostname` branch=master stage=autoscale sh /home/ubuntu/deploy/{app_name}/ master/deploy.sh’” >> /tmp/autoscale.log 6TFS%BUB
Φʔτεέʔϧ࣌ DPOpHEFQMPZBVUPTDBMFSC 1 set :stage :production 2 set :rails_env, 'production'
3 set :host, ENV['HOST'] 4 5 server fetch(:host), user: 'ubuntu', roles: %w{app web db}
݁Ռ w ΦʔτεέʔϧͰֻ͔Δ࣌ؒʢ"84Ͱ "VUP4DBMJOH(SPVQΛ ͨ͠ͱ͜Ζ͔Βɺ&-#Ͱ αʔϏεΠϯ͢Δ·Ͱͷ࣌ؒʣ w #FGPSF w ඵ
w "GUFS w ඵ
͜͏͔͙ͭΜͩʂ w ࣮࣭ɺΦʔτεέʔϧͰ૿͔ͯ͠Βɺ࣮ࡍ ʹαʔό͕ಈ͘Α͏ʹͳΔ·Ͱʹ͔͔Δͷ ͰɺσϓϩΠ࡞ۀࣗମҎͰऴΘ͍ͬͯΔ ͜ͱʹɻ
·ͱΊ w ճCVOEMFJOTUBMM͢Δࠓ·ͰͷΓํ͕ѱ͔ͬ ͨͱ͍͏ͷ͋Γ·͕͢ɺͦΕͰઈେͳޮՌ Λൃش͢Δ͜ͱʹɻ
ಉ͡Α͏ͳ͜ͱ͕Ͱ͖Δϓϩ μΫτ w TʹΞοϓϩʔυͯ͠ɺσϓϩΠ࣌ʹQVMMͯ͘͠Δͱ͍͏ͷ w IUUQTHJUIVCDPNTPSBINBNJZB w IUUQTHJUIVCDPNGVKJXBSBTUSFUDIFS w ͜Ε!TPOPUT͞Μʹհͯ͠ΒͬͨͷͰ͕͢ɺDFSGDPOTVM͕ඞཁͩͬͨͷͰɺ·ͣ
DBQJTUSBOP͚ͩͰͰ͖Δຊ(FNͰͬͯΈ·ͨ͠ɻ w ࠓͬͯΔαʔϏε͕ͨͬͯେنʹͳ͖ͬͯͨΒ࠶ݕ౼ͯ͠Έ·͢ɻ