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
インフラエンジニアがConsulとStretcherをつかったデプロイ改善で開発効率の向上に貢...
Search
Shuichi Ohsawa
April 05, 2018
Technology
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
インフラエンジニアがConsulとStretcherをつかったデプロイ改善で開発効率の向上に貢献した話(短縮版 + α) / omotesando.rb #33
Shuichi Ohsawa
April 05, 2018
More Decks by Shuichi Ohsawa
See All by Shuichi Ohsawa
実践的データ基盤への処方箋 輪読会 / round-reading-jissennteki-data-kiban
ohsawa0515
1
270
datatech-jp Casual Talks #1 「BigQueryのネイティブJSON型がサポートされたので触ってみた」 / support-bigquery-native-json-and-try-it
ohsawa0515
0
2.7k
技書博後夜祭 第一夜「AWSのコスト最適化をはじめよう!」 / gishohaku5-koyasai-starting-aws-cost-optimization
ohsawa0515
0
430
JAWS-UG 初心者支部#36 「AWSで高額請求やらかした話」 / story-about-high-billing-on-aws
ohsawa0515
0
1.4k
インフラエンジニアBooks #7 「Amazon Web Servicesコスト最適化入門」 / infra-engineer-books-aws-cost-optimization
ohsawa0515
12
5.2k
ECSでGPUを使う 2020年版 / jawsug-container18-lt-using-gpu-on-ecs-2020
ohsawa0515
0
2.4k
急成長するシステムに追いつくためのインフラ改善への取り組み / sansan-m3-tech-night-improve-infrastructure
ohsawa0515
0
3k
AWS SDK for GoのContextパターン / aws sdk for go context pattern
ohsawa0515
3
820
サーバレスVulsアーキテクチャ再び / serverless-vuls-again
ohsawa0515
1
4.2k
Other Decks in Technology
See All in Technology
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
1.1k
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
120
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
1
4.5k
Foxgloveについて 実際にExtensionを開発して公開するまでの話 / About Foxglove: The Story of Developing and Releasing an Extension
ry0_ka
0
210
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
13
6.1k
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
190
SRE Next 2026 何でも屋からの脱却
bto
0
680
穢れた技術選定について
watany
5
460
ボーイスカウトルールでメモリやスキルを改善しよう
azukiazusa1
2
1k
クラウド上のデータ復旧で見落としがちな制約: 医療系 SaaS の BCP 設計から得た教訓
kakehashi
PRO
0
3.5k
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
4.2k
Keeping applications secure by evolving OAuth 2.0 and OpenID Connect
ahus1
PRO
1
160
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
290
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
650
Believing is Seeing
oripsolob
1
170
The agentic SEO stack - context over prompts
schlessera
0
840
Statistics for Hackers
jakevdp
799
230k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Amusing Abliteration
ianozsvald
1
220
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
270
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
The Curse of the Amulet
leimatthew05
2
13k
Transcript
ΠϯϑϥΤϯδχΞ͕ ConsulͱStretcherΛ͔ͭͬͨσϓϩΠվળͰ ։ൃޮͷ্ʹߩݙͨ͠ (ॖ൛ + α) දࢀಓ.rb #33 ~Deploy~ Shuichi
Ohsawa (@ohsawa0515) 1/20
ࣗݾհ • େᖒलҰ (@ohsawa0515) • Blogͬͯ·͢ http://blog.jicoman.info/ • Sansanגࣜձࣾ Data
Strategy & Operation Center • σʔλԽγεςϜͷΠϯϑϥߏஙɾӡ༻ɾվળɺ͓ۚ ͷܭࢉͳͲΛ୲ • AWSϦιʔεͷແବݣ͍͍ͯ͠ΔਓΛಛఆ͠ҙ͢Δਓ • ༻ݴޠ: PHP(ݩͪͺʔ), Golang(গ͠), Ruby(গ͠) • RubyFluentdϓϥάΠϯͱ͔ͭͬͨ͘͜ͱ͋Δ͚Ͳ͋·Γॻ͚ͳ͍ • GolangͰAutoScaling + Blue-Green Deployment πʔϧ͚ͭͬͨ͘Ͳ͋·Γॻ͚ͳ͍ 2/20
ຊεϥΠυʹ͍ͭͯ July Tech Festa 2017Ͱͨ͠ࢿྉΛॖ൛+αͱͯ͠·ͱΊͨͷ Ͱ͢ɻ ίϯςφͷͰ·ͤΜɻͯ͢EC2Ͱ͢ɻ ৄࡉαϯϓϧίʔυͳͲͪ͜ΒͷεϥΠυΛ͝ࢀরͩ͘͞ ͍ɻ https://speakerdeck.com/ohsawa0515/jtf2017-consul-stretcher-
deploy 3/20
ΞδΣϯμ • αʔόߏ • ΞϓϦέʔγϣϯߏ • ैདྷͷσϓϩΠͱ՝ • ৽σϓϩΠ •
σϓϩΠϑϩʔ • ൿಗใͷ҉߸Խɾ෮߸ (+αͷ෦) 4/20
αʔόߏ • ϩʔϧ • WebɺBatchɺDeploy etc • Webαʔό • ELB
+ EC2(c3.2xlarge × 20ऑ) • Batchαʔό • EC2(r3.xlarge × 20ڧ) • Deployαʔό • Web/BatchαʔόʹσϓϩΠ 5/20
ΞϓϦέʔγϣϯߏ • Web/Batchαʔόͱʹ20ऑͷRailsΞϓϦ͕ಉډ • ίετݮ • සൟʹϦΫΤετ͞Εͳ͍αʔϏε • Apache +
Passenger 6/20
ैདྷͷσϓϩΠ • ఆظϦϦʔε(िҰ) • ͯ͢ͷRailsΞϓϦΛσϓϩΠ • ඞཁʹԠͯ͡hotfixϦϦʔε(िʹճ) • ඞཁͳΞϓϦ͚ͩσϓϩΠ •
Web/BatchαʔόશҰ੪ʹσϓϩΠ • σϓϩΠαʔό͔Β࣮ߦ • PushܕσϓϩΠ/In place/All at once 7/20
ैདྷͷσϓϩΠ • σϓϩΠεΫϦϓτ(Rakefile)ͰσϓϩΠ࣮ߦ • Capistrano 2ϕʔε • ΞϓϦຖʹCapλεΫϑΝΠϧͷੜ • ฒྻͰෳΞϓϦΛσϓϩΠ
• ϩʔϧChef ServerͷλάͰཧ • Web, BatchͰॲཧ͕ҟͳΔͨΊϩʔϧͰ۠ผ • knife tagίϚϯυͰ͚֎͢͠Δ 8/20
՝ 1. σϓϩΠʹ͕͔͔࣌ؒΔ 2. αʔόͷՃ͕໘ 3. GitHub/RubyGems͕མͪΔͱσϓϩΠͰ͖ͳ͍ 9/20
Capistrano + Stretchr + Consul • PullܕσϓϩΠ • αʔό͕ࣗσϓϩΠ͢Δ •
σϓϩΠ͕࣌ؒҰఆ(ʹൺྫ͠ͳ͍) • Amazon S3ʹϏϧυࡁͷϑΝΠϧΛஔ • μϯϩʔυ͠ஔɺ࠶ىಈ͢Δ͚ͩͰσϓϩΠྃ • S3ͷՄ༻ੑ99.99ˋ • In place/All at once • CapistarnoͷΈ(γϯϘϦοΫϦϯΫʹΑΔΓସ͑)Λ׆༻ • ConsulʹΑΔαʔϏεσΟεΧόϦػೳͰϗετͷొɾআࣗಈ 10/20
Capistrano • ݱߦͷCapistrano 2ͷεΫϦϓτΛվम • capistrano-stretcher Capistrano 3ͷΈରԠͳͷͰݟૹΓ •
https://github.com/pepabo/capistrano-stretcher • Capistrano͔ΒStretcher + ConsulΛݺͼग़ͯ͠σϓϩΠ • ࢀߟʹͭͭ͠ॲཧΛ࣮ • ࠓ·Ͱ࣮ߦ͖ͯͨ͠capίϚϯυΛେ͖͘ม͑͗͢ͳ͍Α͏ʹ 11/20
Stretcher • https://github.com/fujiwara/stretcher • ConsulͱΈ߹ΘͤΔ͜ͱͰɺΠϕϯτΛτϦΨʔͱͨ͠PullܕσϓϩΠ͕Մೳ • ࠾༻ͨ͠ཧ༝ ! • ෳΞϓϦΛҰ੪ʹσϓϩΠͯ͠ૣ͍
• 20ऑͷRailsΞϓϦΛฒྻσϓϩΠ͢Δͱ1ʙ2ఔͰऴΘΔ • ෳͷઃఆϑΝΠϧ(ϚχϑΣετϑΝΠϧ)Λ༻ҙ͢Δ͜ͱͰɺৼΔ͍Λม͑Δ͜ͱ͕Ͱ͖Δ • σϓϩΠϑΝΠϧஔ༻ • γϯϘϦοΫϦϯΫସ༻ • Consulͱͷੑ͕ߴ͍ 12/20
Consul • https://www.consul.io/ • HashiCorpࣾఏڙͷΦʔέετϨʔγϣϯπʔϧ • αʔόͱΫϥΠΞϯτͱ͍͏̎ͭͷׂͰߏ͞ΕɺΫϥελΛܗ͢Δ • োݕɺ෦DNSɺKey/ValueετΞ(KVS) •
Πϕϯτൃߦ • ֤ConsulΫϥΠΞϯτΠϕϯτΛͪड͚͍ͯΔঢ়ଶͰɺಛఆͷΠϕϯτ͕ൃߦ͞ΕͨΒҙͷΞΫγϣϯΛ࣮ ߦ • αʔϏελάʹΑΔϩʔϧཧ • αʔϏεσΟεΧόϦ • ىಈ࣌ʹΫϥελࣗಈδϣΠϯ 13/20
σϓϩΠϑϩʔ 14/20
·ͱΊͯσϓϩΠ͢Δ ͯ͢ͷΞϓϦΛϚϧνεϨουͰฒྻσϓϩΠ task deploy_all: :setup do deploy_projects = "application_A,apllication_B,..." threads_count
= ENV['THREADS'] Parallel.map(deploy_projects, in_threads: threads_count.to_i) do |project| # ϏϧυαʔόͷσϓϩΠ # ϚχϑΣετϑΝΠϧͷੜ # S3ͷΞοϓϩʔυ # ΞϓϦέʔγϣϯαʔόʹ end end task release_all: :setup do deploy_projects = "application_A,apllication_B,..." threads_count = ENV['THREADS'] Parallel.map(deploy_projects, in_threads: threads_count.to_i) do |project| # σϓϩΠ(γϯϘϦοΫϦϯΫସ) end end 15/20
Slack SlackͰσϓϩΠঢ়گ͕֬ೝͰ͖Δ ͕ੜͨ͡߹όοΫτϨʔε͕ද ࣔ 16/20
݁Ռ 1. σϓϩΠʹ͕͔͔࣌ؒΔ • => ϦϦʔε࣌ؒͷॖ(30->5) 2. αʔόͷՃ͕໘ • =>
࠷৽ͷσϓϩΠϑΝΠϧΛ࣋ͬͯ͘Δ͚ͩ 3. GitHub/RubyGems͕མͪΔͱσϓϩΠͰ͖ͳ͍ • => S3ͳͷͰ΄΅ͳ͠ 17/20
ൿಗใͷ҉߸Խɾ෮߸ • DBύεϫʔυΩʔใΛઃఆϑΝΠϧ(YAML)ʹੜͰॻ͍͓ͯ ͘ͷةݥ • ൿಗใΛEC2 Parameter Storeʹอ͓͖࣋ͯ͠ɺઃఆϑΝΠϧ ʹEC2 Parameter
Storeͷσʔλ໊ʹஔ͖͑ • σϓϩΠ࣌ʹ෮߸͠ઃఆϑΝΠϧΛॻ͖͑ • σϓϩΠαʔό͔͠෮߸Ͱ͖ͳ͍Α͏ʹKMSͷIAMݖݶΛઃఆ 18/20
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 19/20
20/20