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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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.3k
急成長するシステムに追いつくためのインフラ改善への取り組み / 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.1k
Other Decks in Technology
See All in Technology
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
3k
【2026年版】 ベクトル検索とEmbedding最前線
mocobeta
16
4.4k
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
1.3k
AIはどのように 組織のアジリティを変えるのか?
junki
4
1k
フィジカル版Github Onshapeの紹介
shiba_8ro
0
290
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
200
自分が詳しくない領域でAIを使う #プロヒス2026
konifar
13
5.2k
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.3k
アジャイルな経理と Claude Code と経営の未来
kawaguti
PRO
3
160
IaC コードを資産へ:AWS CDK 社内ライブラリと横断展開 / aws-summit-japan-2026
gotok365
5
1.1k
失敗を資産に変えるClaude Code
shinyasaita
0
720
2026TECHFRESH畢業分享會 - Lightning Talk - 資料也要 CI/CD? 用 Airbyte 自動化資料同步
line_developers_tw
PRO
0
1.3k
Featured
See All Featured
Information Architects: The Missing Link in Design Systems
soysaucechin
0
970
Product Roadmaps are Hard
iamctodd
PRO
55
12k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
360
For a Future-Friendly Web
brad_frost
183
10k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
160
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
610
Prompt Engineering for Job Search
mfonobong
0
350
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
320
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
Believing is Seeing
oripsolob
1
150
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
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