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
5
1.2k
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
9
5.2k
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
2
360
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
4.8k
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
12
5.9k
Other Decks in Technology
See All in Technology
CDKで書くECSのベストプラクティス、 改めて考え直す2026 #cdkconf2026
makies
3
940
人とエージェントが高め合う協業設計
kintotechdev
0
760
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
790
仕様駆動開発、導入半年。「本当に速くなってるの?」にデータで答える / AICon2026_hirakawa
rakus_dev
0
320
設計レビューとAIハーネスで向き合う AIが生み出した新しいボトルネックの対処法 / Design Reviews and AI Harnesses Against New Bottlenecks Created by AI
nstock
4
440
Type-safe IaC for Dart
coborinai
0
180
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
320
StepFunctionsとGraphRAGを活用した暗黙知活用のためのRAG基盤
yakumo
0
140
データエンジニアリングとドメイン駆動設計
masuda220
PRO
14
2.5k
Webの技術とガジェットで子どもも大人も楽しめるワクワク体験を提供する / Qiita Tech Festa Day 2026
you
PRO
1
180
書籍セキュアAPIについて
riiimparm
0
250
AI時代こそ、スケールしないことをしよう -「作る人」から「なぜ作るか」を考える人へ / Do Things That Don't Scale in the AI Era — From How to Why
kaminashi
1
100
Featured
See All Featured
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
45k
Mobile First: as difficult as doing things right
swwweet
225
10k
The Limits of Empathy - UXLibs8
cassininazir
1
530
Tell your own story through comics
letsgokoyo
1
1k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Exploring anti-patterns in Rails
aemeredith
3
450
New Earth Scene 8
popppiees
3
2.4k
Thoughts on Productivity
jonyablonski
76
5.3k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.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~