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
非コンテナ環境において宣言的Deploymentを手軽に実現する / Declarative ...
Search
linyows
December 13, 2024
Programming
0
85
非コンテナ環境において宣言的Deploymentを手軽に実現する / Declarative deployment in non-container environments
社内イベント、バックエンド交流会LTで使った資料。
linyows
December 13, 2024
Tweet
Share
More Decks by linyows
See All by linyows
研究を支える拡張性の高い ワークフローツールの提案 / Proposal of highly expandable workflow tools to support research
linyows
0
320
メール送信サーバの集約における透過型SMTP プロキシの定量評価 / Quantitative Evaluation of Transparent SMTP Proxy in Email Sending Server Aggregation
linyows
0
690
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
340
研究の再現性を高める 仕組みをGoでつくる / Creating a system to improve the reproducibility of research using go
linyows
1
170
奥が深いメールのシステム / The depth of Email system
linyows
4
510
IaCにおけるテスト考察 / Tests in IaC
linyows
2
580
リバースエンジニアリングとGoでSlackの認知負荷を下げる / Reducing cognitive load in Slack with Reverse-engineering and Go
linyows
2
350
透過型SMTPプロキシによる送信メールの可観測性向上 / Improved observability of outgoing emails with transparent smtp proxy
linyows
2
1.1k
プロダクションで使うGo Pluginの利便性とパフォーマンス性 / Simplicity and Performance of Go plugin for Production
linyows
0
600
Other Decks in Programming
See All in Programming
クックパッド検索システム統合/Cookpad Search System Consolidation
giga811
0
180
もう僕は OpenAPI を書きたくない
sgash708
6
1.9k
Your Architecture as a Crime Scene:Forensic Analysis @bastacon 2025 in Frankfurt
manfredsteyer
PRO
0
120
PHPカンファレンス名古屋2025 タスク分解の試行錯誤〜レビュー負荷を下げるために〜
soichi
1
760
AIプログラミング雑キャッチアップ
yuheinakasaka
20
5.3k
Jakarta EE meets AI
ivargrimstad
0
750
CloudNativePGを布教したい
nnaka2992
0
120
CloudRun, Spanner に対する負荷試験の反省と オブザーバビリティによるアプローチ
oyasumipants
1
200
iOSでQRコード生成奮闘記
ktcryomm
2
140
Duke on CRaC with Jakarta EE
ivargrimstad
0
240
Visual StudioのGitHub Copilotでいろいろやってみる
tomokusaba
1
230
Jasprが凄い話
hyshu
0
190
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
The Cost Of JavaScript in 2023
addyosmani
47
7.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1.1k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Typedesign – Prime Four
hannesfritz
41
2.5k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Transcript
非コンテナ環境において宣言的 Deploymentを手軽に実現する Tomohisa Oda / 社内バックエンド交流会 LT @2024-12-13
Tomohisa Oda @linyows • 研究所 所属(2023年11月入社) • 前職では部門の技術責任者 • メールの研究をしながらガバクラプロ
ジェクトのお手伝い • 筋トレとテニスが趣味 • Fukuoka.go オーガナイザ
前提:本番環境 • 諸事情によりコンテナ環境ではなくVM環境(2024年だぞ?) • アプリはGo • KubernetesのローリングデプロイメントやCI/CDエコシステムが使えない • アプリのdeploymentどうする問題がある •
人の手を介さない何かしらの仕組みが必要 • VMはHA構成なので状況に応じて数が変動する予定
Deploy手法の選択肢 1. VMを構築するAnsibleで、アプリの更新も合わせてやる 2. Scpやrsyncなどで素朴にアップロードする 3. VMにビルド環境を作っておきgit cloneしてビルドする 4. DeployツールのCapistranoをつかう
これらはGithub Actionsから行う想定
Deploy手法の選択肢1 1. VMを構築するAnsibleで、アプリの更新も合わせてやる 2. Scpやrsyncなどで素朴にアップロードする 3. VMにビルド環境を作っておきgit cloneしてビルドする 4. DeployツールのCapistranoをつかう
これらはGithub Actionsから行う想定 🙅 更新頻度や責務領域が異なり、アプリ以外の問題でdeployできないとか、エンジニアが異なるとか
Deploy手法の選択肢2 1. VMを構築するAnsibleで、アプリの更新も合わせてやる 2. Scpやrsyncなどで素朴にアップロードする 3. VMにビルド環境を作っておきgit cloneしてビルドする 4. DeployツールのCapistranoをつかう
これらはGithub Actionsから行う想定 🙅 更新頻度や責務領域が異なり、アプリ以外の問題でdeployできないとか、エンジニアが異なるとか 🙅 簡単に実現できるがそのうち機能が追加されたりして正しく動作する保証がないままコピペされる
Deploy手法の選択肢3 1. VMを構築するAnsibleで、アプリの更新も合わせてやる 2. Scpやrsyncなどで素朴にアップロードする 3. VMにビルド環境を作っておきgit cloneしてビルドする 4. DeployツールのCapistranoをつかう
これらはGithub Actionsから行う想定 🙅 簡単に実現できるがそのうち機能が追加されたりして正しく動作する保証がないままコピペされる 🙅 せっかくGoはワンバイナリでdeployできるのに… そしてwebhookを用意する必要があり実は面倒 🙅 更新頻度や責務領域が異なり、アプリ以外の問題でdeployできないとか、エンジニアが異なるとか
Deploy手法の選択肢4 1. VMを構築するAnsibleで、アプリの更新も合わせてやる 2. Scpやrsyncなどで素朴にアップロードする 3. VMにビルド環境を作っておきgit cloneしてビルドする 4. DeployツールのCapistranoをつかう
これらはGithub Actionsから行う想定 🙅 せっかくGoはワンバイナリでdeployできるのに… そしてwebhookを用意する必要があり実は面倒 🙅 専用のツールなので機能は申し分ないが、Go使っていてRubyかーという気持ち 🙅 更新頻度や責務領域が異なり、アプリ以外の問題でdeployできないとか、エンジニアが異なるとか 🙅 簡単に実現できるがそのうち機能が追加されたりして正しく動作する保証がないままコピペされる
怒り駆動開発!(2018)
Dewy !!!
DewyはPull型deployツール Dewyの振る舞い 1. アプリのSupervisor的に起動 2. Github ReleasesやS3をポーリング 3. 最新があればダウンロードして起動 4.
グレースフルリスタート 5. Slackに通知とオーディットログ作成 Application or Files v1.2.2 Application or Files v1.2.3 Artifact Registry Notify Cache ɾGithub Releases ɾAWS S3 ɾGoogle Cloud Storage ɾGRPC Server 1. Polling 5. Reporting 6. Send 2. Download 3. Storage 4. Deployment ɾFile system ɾMemory ɾHashicorp Consul ɾRedis ] ɾSlack ɾSMTP Dewy https://github.com/linyows/dewy
Demo: https://github.com/linyows/dewy-testapp