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
Deploy like nobody is watching
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
bascht
March 11, 2015
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Deploy like nobody is watching
Re-Run of my »Deployment« Talk for RubyShift Munich.
bascht
March 11, 2015
More Decks by bascht
See All by bascht
What is a »full stack« anyways?
bascht
1
540
Deployment ohne Ziepen
bascht
0
700
Other Decks in Technology
See All in Technology
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.2k
エンジニアリング戦略の作り方 / Crafting Engineering Strategy
iwashi86
21
7k
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
1.2k
「エンジニア進化論」2028年の開発完全自動化、エンジニアはどう進化するか
cyberagentdevelopers
PRO
6
5.3k
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
150
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
130
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.4k
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
240
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
230
AIAU_UMEMOGU_ninomiya_slide
ninomiya_ii
0
120
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
130
気軽に使える"情報のハブ"としてのNotion活用 〜フロー情報の集積点 と、 Claude Code × Notion AI〜
syucream
1
150
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
180
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
It's Worth the Effort
3n
188
29k
How STYLIGHT went responsive
nonsquared
100
6.2k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
390
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
Tell your own story through comics
letsgokoyo
1
950
The agentic SEO stack - context over prompts
schlessera
0
820
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
Balancing Empowerment & Direction
lara
6
1.2k
Transcript
Deploy like nobody is watching. March 11th, 2015 @bascht
Ye olde DevOps
None
Silos
Distribution of roles
Creative Commons Attribution 4.0 International (http://commons.wikimedia.org/wiki/File:The_Devil_and_Dr._Faustus_meet._Wellcome_L0031469.jpg)
…the »old world« software developer…
…the »old world« system administrator…
So – let's swap roles. (Can't be that hard, no?)
* { /* No idea what I'm cascading here… */
color: 'Kornblumenblau' !important; }
$$('I'){ $('will#wrap').each(function('until'){ return this.self._self.that['crap'].works; }); };;;; // eat ._this, jslint!
$ sudo sudo su -c "sudo do --what 'I want'"
Small castles CC BY-NC-ND 2.0 — Jos van Wunnik
Galileo Galilei - 1636
nginx::resource::upstream { 'here_be_dragons': members => [ 'lolcathost:8080', 'lolcathost:8081', 'lolcathost:8082', ],
} nginx::resource::vhost { 'app.yournextstartup.com': proxy => 'http://here_be_dragons', }
Tools ansiblebcfg2cdistchefcfengineisconfjujulcfg ocsinventoryngwithglpiopsipikt puppetquattorradmindrex rundecksmartfrogsaltspacewalk
docker docker docker docker docker docker docker docker docker docker
docker docker docker docker
Being responsible for the artefact that is shipped. Every step
of the pipeline.
None
MANAGEMENT = :mediocre CUSTOMER = :opinionated def my_little_farm(requirements) engineering =
:truly_optimistic trap("SIGINT") { ignore_those_admins } pray_for(some.kind_of? Wonder) ship! end
Releases.
Imagine… …it's friday.
Your deployment plan… …doesn't scale very well.
gut metrics Who truly understands every base / helper /
tools / domain class? Who understands your deployment process?
busnumber
Why not… deploy as often as possible? let the new
employee deploy on her first day? deploy when nobody is watching?
2015 Infrastructure code is code as well!
Are your problems bubbling up… …from app code? …from your
server configuration? …during rollout? …because of poor orchestration?
© 2013 — theprofoundprogrammer.com
No more excuses. Infrastructure problem? File an issue Infrastructure change?
Hand in a story App Changes need infrastructure changes? Orchestrate your rollouts.
No commit without an issue id / feature branch. No
major release without documentation in an issue.
Do code reviews. Yes. for infrastructure. Yes. Even for infrastructure.
Sorry, but there is no one-size-fits-all solution. Quelle: GFDL image
by user Fanghong. Creative Commons Attribution-Share Alike 3.0 Unported
Well, turns out there is.
Documentation (imagine rolling thunder)
CLI > Code > Wiki $ bin/deploy --wat?
Actually use your Wiki! New employees? Old hostnames? Cross references!
Macros? Copy / Paste commands?
Your toolchain? in version control useful names well documented self-explanatory
independent from the environment
Use some nice wrapping.
#!/bin/(da|ba)sh #nope
#!/usr/bin/env ruby
--Chet Ramey “ ... there are dark corners in the
Bourne shell, and people use all of them. ”
Build for the worst. Do your error pages cover every
layer? Will every layer fail gracefully? Can you roll back? Should you roll back? Can you deactivate features? Can you afford to deliver stale content?
restore > backup
employee of the month
Updating artefacts isn't the last step!
Monitor every deployment. Gather health checks.
Steal good ideas! $ curl -XGET 'lolcathost:9200/_cluster/health?pretty=true' { "cluster_name" :
"prism_europe", "status" : "green", "timed_out" : false, "number_of_nodes" : 242, "number_of_data_nerds" : 242 "active_primary_shards" : 50, "active_shards" : 100, "people_actually_reading_this_slide": 1, "relocating_shards" : 0, "initializing_shards" : 0 }
Use obvious tools. var casper = require('casper').create(); var baseurl =
casper.cli.get("baseurl") || 'http://bascht.com'; casper.start(baseurl, function() { this.capture('shots/homepage.png'); this.test.assertTitle('bascht.com'); this.test.assertExists('input[action$="/search"]', 'Yay!'); this.clickLabel('Blog', 'a'); });
— Timothy Fitz (IMVU) “Treat staging failures like as if
they were production failures.”
We're almost done.
-- Robert A. Heinlein “Specialization is for insects.”
See how things work out. # ~/.bash_login rm ~/.bash_history &&
sync; echo "They never fail who die, In a great cause! Lord Byron"; echo "Welcome to $(hostname).";
Sebastian Schulze (@bascht / @bscht) , 29.years Software- & infrastructure
developer Vogtland, Leipzig, Köln, Berlin, Munich Thank you! Twitter / Github / ADN: @bascht