$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
非コンテナ環境において宣言的Deploymentを手軽に実現する / Declarative ...
Search
linyows
December 13, 2024
Programming
1
400
非コンテナ環境において宣言的Deploymentを手軽に実現する / Declarative deployment in non-container environments
社内イベント、バックエンド交流会LTで使った資料。
linyows
December 13, 2024
Tweet
Share
More Decks by linyows
See All by linyows
Protocol Buffersの型を超えて拡張性を得る / Beyond Protocol Buffers Types Achieving Extensibility
linyows
0
160
研究開発と実装OSSと プロダクトの好循環 / A virtuous cycle of research and development implementation OSS and products
linyows
1
730
コードジェネレーターで 効率的な開発をする / Efficient development with code generators
linyows
0
380
研究を支える拡張性の高い ワークフローツールの提案 / Proposal of highly expandable workflow tools to support research
linyows
0
540
メール送信サーバの集約における透過型SMTP プロキシの定量評価 / Quantitative Evaluation of Transparent SMTP Proxy in Email Sending Server Aggregation
linyows
0
1.1k
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
560
研究の再現性を高める 仕組みをGoでつくる / Creating a system to improve the reproducibility of research using go
linyows
1
300
奥が深いメールのシステム / The depth of Email system
linyows
4
720
IaCにおけるテスト考察 / Tests in IaC
linyows
2
830
Other Decks in Programming
See All in Programming
How Software Deployment tools have changed in the past 20 years
geshan
0
29k
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
110
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
270
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
3.3k
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
3k
Cap'n Webについて
yusukebe
0
130
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
110
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
320
30分でDoctrineの仕組みと使い方を完全にマスターする / phpconkagawa 2025 Doctrine
ttskch
3
830
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2.3k
バックエンドエンジニアによる Amebaブログ K8s 基盤への CronJobの導入・運用経験
sunabig
0
160
大体よく分かるscala.collection.immutable.HashMap ~ Compressed Hash-Array Mapped Prefix-tree (CHAMP) ~
matsu_chara
2
220
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
4 Signs Your Business is Dying
shpigford
186
22k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
970
Six Lessons from altMBA
skipperchong
29
4.1k
Automating Front-end Workflow
addyosmani
1371
200k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Why Our Code Smells
bkeepers
PRO
340
57k
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Code Reviewing Like a Champion
maltzj
527
40k
For a Future-Friendly Web
brad_frost
180
10k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
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