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
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
270
TwitterのList編集しやすいやつ作った
ryonext
0
1.8k
validationについて
ryonext
1
850
AWS Lambda と API GatewayでRails使わずに済んだ話
ryonext
8
4.4k
PumaとUnicornで最近自分が理解したこと
ryonext
13
9.6k
Hubot事例
ryonext
1
1.7k
Redisでバッチ処理を冗長化しつつ排他制御
ryonext
0
2.1k
CircleCIとwercker
ryonext
3
1.3k
rubykaigi 3day interactive white board
ryonext
2
400
Other Decks in Programming
See All in Programming
Contextとはなにか
chiroruxx
1
370
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
280
OSもどきOS
arkw
0
590
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.5k
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
740
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
1
120
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
120
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
230
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
920
Developing with AI Agents — Codex, Claude Code & Cowork Practical Guide
x5gtrn
PRO
0
1.3k
AI 輔助遺留系統現代化的經驗分享
jame2408
1
970
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
160
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
First, design no harm
axbom
PRO
2
1.2k
We Have a Design System, Now What?
morganepeng
55
8.2k
Context Engineering - Making Every Token Count
addyosmani
9
980
Color Theory Basics | Prateek | Gurzu
gurzu
0
370
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
A designer walks into a library…
pauljervisheath
211
24k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
300
4 Signs Your Business is Dying
shpigford
187
22k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
330
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 ࠓͬͯΔαʔϏε͕ͨͬͯେنʹͳ͖ͬͯͨΒ࠶ݕ౼ͯ͠Έ·͢ɻ