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
Stretcher in 5 min
Search
FUJIWARA Shunichiro
August 05, 2015
Technology
8.5k
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
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
8
2k
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
9
5.5k
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
2
380
Amazon ECS デプロイツール ecspresso の開発を支える「正しい抽象化」の探求 / YAPC::Fukuoka 2025
fujiwara3
13
13k
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
9
6.8k
alecthomas/kong はいいぞ
fujiwara3
7
2.5k
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
3.7k
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
4
5k
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
12
5.9k
Other Decks in Technology
See All in Technology
Agent 時代の Kaggle 展望 / kaggle-in-the-agentic-era
upura
1
750
第3回しろおびセキュリティスポンサーセッション
log0417
0
200
モバイルアプリ開発概論2026
recruitengineers
PRO
5
600
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
260
ブラウザ研修 2026
recruitengineers
PRO
6
1k
20260804_Q4AzureUpdateBite_FabricDataAgentの精度を高める設計.pdf
matayuuu
1
130
まちスペース®とデジタルツインと「まちづくり」
hiro_ogi
0
120
My broken English still works: speaking at global OSS events
naruoga
0
100
【CEDEC2026】『Relink』を拡張せよ - 『GRANBLUE FANTASY: Relink - Endless Ragnarok』の開発速度と品質を守るCI運用
cygames
PRO
0
180
PLATEAU で バーチャル花火大会
tatsuya1970
0
160
会社紹介資料 / Sansan Company Profile
sansan33
PRO
24
430k
カートの信頼性を担保するWireMockを使ったe2eテスト
ykagano
0
300
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7.1k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
490
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
490
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
A Modern Web Designer's Workflow
chriscoyier
698
190k
The Limits of Empathy - UXLibs8
cassininazir
1
600
The agentic SEO stack - context over prompts
schlessera
0
860
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
290
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
280
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~