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
Stretcher in 5 min
Search
FUJIWARA Shunichiro
August 05, 2015
Technology
8.6k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Stretcher in 5 min
#hashi_wantedly
FUJIWARA Shunichiro
August 05, 2015
More Decks by FUJIWARA Shunichiro
See All by FUJIWARA Shunichiro
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
570
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
8
2.2k
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
9
6.3k
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
2
420
Amazon ECS デプロイツール ecspresso の開発を支える「正しい抽象化」の探求 / YAPC::Fukuoka 2025
fujiwara3
13
14k
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
9
7k
alecthomas/kong はいいぞ
fujiwara3
7
2.6k
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
3.8k
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
4
5.7k
Other Decks in Technology
See All in Technology
PagerDuty Tech Hub-鳴らすけれど、人は動かない
ezaki
0
170
大型犬好きによるPugの紹介
yamanoku
1
160
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
140
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
630
go-sqletch
moznion
0
140
継続的なAIコスト最適化
bgpat
1
340
スプシの手作業からの解脱 ~更新はClaude Codeに、見せ方と使い方はGASアプリに任せる~
kentarofujii
0
150
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
1
340
「Docker Desktop不要の時代」は 来たのか?
ueponx
0
780
Code for Security プロジェクト紹介 2026年10月
yu23ki14
0
110
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
290
S3 Filesで挑む! 八戸せんべい汁の食べ頃問題
usanchuu
0
100
Featured
See All Featured
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
620
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Design in an AI World
tapps
1
350
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Leo the Paperboy
mayatellez
10
2.4k
[SF Ruby Conf 2025] Rails X
palkan
3
1.5k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
The Curse of the Amulet
leimatthew05
3
16k
Building Applications with DynamoDB
mza
96
7.2k
Transcript
Stretcher in 5 min 2015-8-5 @fujiwara
Stretcher is Կ github.com/fujiwara/stretcher A deployment tool with Consul /
Serf event. Consul / Serf ͱ࿈ܞͯ͠ಈ͘σϓϩΠπʔϧ (࣮ Consul/Serf ͳ͠Ͱಈ͖·͢)
ͳͥ࡞ͬͨͷ͔ (Ҏલ) rsync ʹΑΔதԝϗετ͔Βͷdeploy ΦʔτεέʔϧʹରԠͰ͖ͳ͍ ֤ϗετ͔ΒrsyncͰpull? → buildதʹrsync͞ΕͨΒ… ͕ଟ͍ͱฒྻssh +
rsync͕ͭΒ͍ AMI࡞Γ͠ & ΠϯελϯεೖΕସ͑ͯͳ͍ inspired by github.com/sorah/mamiya, AWS CodeDeploy
ઃܭࢥ AWS͡Όͳͯ͘ಈ͘ GoͰॻ͘(ࣗͷdeployָ͕) rsync͔ͯ͠ΒίϚϯυ࣮ߦɺͱ͍͏ϑϩʔ౿ऻ Consul eventͰΠϕϯτ௨ Consul ͱૄ݁߹ (consul watch
Ͱىಈ)
Architecture
Deployment process 1. ΞϓϦέʔγϣϯΛbuildͯ͠tar.gzʹ͢Δ 2. खॱॻ(manifest)Λॻ͘ 3. tar.gz, manifestΛS3(or httpd)ʹ্͛Δ
4. consul event Ͱ manifest URLΛ௨ consul event -name deploy s3://... ✄--------- ͜͜·ͰstretcherͰͳ͍ -------✄
consul watch -type event -name deploy stretcher ✄------------ stretcher͔͜͜Β ------------✄
1. event͔Βmanifest URLΛऔಘ 2. tar.gzΛऔಘͯ͠TMPDIRʹల։ 3. rsync -av --deleteͰߋ৽ 4. post command࣮ߦ • ΞϓϦέʔγϣϯ࠶ىಈͳͲ
Manifest src: s3://example.com/app.tar.gz checksum: e0840daaa97cd2cf2175f9e5d133ffb3324a2b93 dest: /home/stretcher/app commands: pre: -
echo 'staring deploy' post: - echo 'deploy done' success: - cat >> /path/to/success.log failure: - cat >> /path/to/failure.log excludes: - "*.pid" - "*.socket"
ຊ൪ڥ AWS ্ͷαʔϏε (50ʙ100 instances) tar.gz ~200MB consul event ૹ৴͔Β10ඵͰྃ
(rollback!) 2015/08/05 14:58:30 Starting up stretcher agent 2015/08/05 14:58:30 Waiting for consul events from STDIN... 2015/08/05 14:58:30 Executing manifest: s3://... 2015/08/05 14:58:33 Extract archive: /dev/shm/stretcher539962129 to /dev/shm/stretcher_src648982332 2015/08/05 14:58:36 rsync [-av --delete --exclude-from /dev/shm/stretcher_src648982332/conf/rsync_exclude.web /dev/shm/stretcher_src648982332/ /home/xxx/web/] 2015/08/05 14:58:36 sending incremental file list ... sent 787780 bytes received 5230 bytes 1586020.00 bytes/sec total size is 359702435 speedup is 453.59 2015/08/05 14:58:36 invoking command: /home/xxx/web/refresh_services.sh 2015/08/05 14:58:41 success. 2015/08/05 14:58:41 Deploy manifest succeeded.
ྃΛͭ Πϕϯτૹ৴ݩͰશͷ࣮ߦ͕͔ྃΒͳ͍ • post commandͰ deploy ID Λ KV ʹૹ৴
• Consul KV Dashboard Ͱશͷ ID ͕ἧ͏ͷΛͭ
ϩάΛݟΔ ͕ଟ͍ͱ… • success/failure command Ͱ࣮ߦϩάΛ KV ʹ • Consul
KV Dashboard Ͱঢ়ଶ͕มԽͨ͠ΒτϦΨˠ௨
Consul KV Dashboard github.com/fujiwara/consul-kv-dashboard speakerdeck.com/fujiwara3/consul-kv-dashboard
Demo stretcher/examples
ΦʔτεέʔϧͷରԠ Consul KV ʹ࠷৽ͷ manifest URL Λอଘ Πϯελϯεىಈޙ 1. consul
join 2. stretcher ࣮ߦ 3. ࠷৽ͷmanifest URLΛKV͔Βऔಘ 4. ࣗࣗʹ event Λૹ৴
ΦʔτεέʔϧͰͷҙ × AMIʹ͍ͬͯΔݹ͍ΞϓϦ͕ىಈ ◦ ࠷৽ͷ deploy IDͰͳ͍߹ىಈ͠ͳ͍ deploy࣌: unique ͳ
ID Λൃߦ • ϑΝΠϧʹॻ͍ͯ tar ʹೖΕΔ • Consul KV ʹೖΕΔ ىಈ࣌:ϩʔΧϧϑΝΠϧͷ ID ͱ KV Λൺֱ • ৯͍ҧͬͯͨΒ sleep 10 && exit → daemontoolsͰ࠶ىಈ
Serf ରԠ (v0.1.0~) serf agent -event-handler="user:deploy=stretcher" serf event deploy "s3://..."
ڥม SERF_USER_EVENT Ͱಈ࡞Γସ͑ ͳͷͰ… echo "s3://..." | SERF_USER_EVENT=deploy stretcher ࣮ Consul / Serf Ͱͳͯ͘ىಈՄೳ
એ YAPC::Asia 2015Ͱͬͱ͍Ζ͍Ζ͠·͢ 2015-8-21 13:10~