Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ContainerCon North America – Cloud Anti-Patterns
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Casey West
August 23, 2016
Technology
3.4k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ContainerCon North America – Cloud Anti-Patterns
Casey West
August 23, 2016
More Decks by Casey West
See All by Casey West
Voxxed Days Belgrade 2017: Deploying Image Recognition with TensorFlow and Kubernetes
caseywest
0
210
TechSummit Amsterdam 2017: Enhance! Deploying Image Recognition with TensorFlow and Kubernetes
caseywest
0
210
Said no CEO ever: Things that don't matter in the cloud
caseywest
12
3.4k
OperabilityIO 2016 – Achieving Cloud-Native Operability
caseywest
0
700
Abstractions – Pittsburgh – The Twelve-Factor Container + BONUS
caseywest
0
450
Velocity — Minimum Viable Platform
caseywest
0
320
Minimum Viable Platform - Devops MSP
caseywest
0
270
How Platforms Work
caseywest
0
760
Linux Conf Australia 2016 - The Twelve-Factor Container
caseywest
3
600
Other Decks in Technology
See All in Technology
Microsoft 365 Copilot chat -tekoälypalvelun tietosuojaongelmat
hponka
0
830
Screen Lens - 今見てる画面を翻訳する
komagata
0
260
絵ではじめるKubernetesセキュリティ
aoi1
2
130
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
160
range over func 2年間の軌跡 Issue #56413 はGoのエコシステムをどう変えたか
ryujicre8ive
0
130
AI 駆動 Terraform 開発/SRE_BizReach_MIXI_2
visional_engineering_and_design
5
2.1k
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
3
150
AI時代の「技術的負債」の変質ー概念の終焉と再解釈、エージェントと共に向かう先
nwiizo
0
930
コスト最適化の「めんどくさい」を AWS FinOps Agent でチョット楽にする
classmethod_kaz
0
330
SQL文一行も書けない人事がCortexもろもろを使って人事業務を楽にしてみる
ponponmikankan
1
230
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
530
10分で知る最近のOmarchy
komagata
0
280
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
108
250k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
Testing 201, or: Great Expectations
jmmastey
46
8.3k
KATA
mclloyd
PRO
35
15k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
530
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Visualization
eitanlees
152
17k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Prompt Engineering for Job Search
mfonobong
0
450
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
270
Transcript
Cloud Anti-Patterns @caseywest 1 ! @caseywest #containercon #linuxcon #containers #realworld
#sorrynotsorry
A word about consent… Please do: Take pictures, tweet, take
notes. Please don't: Record or live stream without my explicit consent. 2 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Cloud Anti-Patterns • Twitter @caseywest • Email
[email protected]
• Web
http://caseywest.com 3 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Thanks, Pivotal 4 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Act One The five stages of cloud-native 5 ! @caseywest
#containercon #linuxcon #containers #realworld #sorrynotsorry
The five stages of cloud- native 1. Denial 2. Anger
3. Bargaining 4. Depression 5. Acceptance 6 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Have a seat on the couch 7 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
Whatever makes you comfortable 8 ! @caseywest #containercon #linuxcon #containers
#realworld #sorrynotsorry
Now for some basic ground rules 9 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
Rules We will talk about your delivery pipeline 10 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Rules We will talk about your architecture 11 ! @caseywest
#containercon #linuxcon #containers #realworld #sorrynotsorry
Rules We will talk about your automation 12 ! @caseywest
#containercon #linuxcon #containers #realworld #sorrynotsorry
⏰ 13 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
"Deploying my apps to 'the cloud' is paintful. Why?" 14
! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Denial 15 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Denial Containers are just like tiny virtual machines 16 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Denial We don't need to automate continuous delivery 17 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Anger 18 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Anger Works on my machine 19 ! @caseywest #containercon #linuxcon
#containers #realworld #sorrynotsorry
Anger Dev is just #YOLO-ing shit to production 20 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Bargaining 21 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Bargaining We crammed this monolith into a container and called
it a microservice 22 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Bargaining "Bi-Modal IT" 23 ! @caseywest #containercon #linuxcon #containers #realworld
#sorrynotsorry
Bargaining What if we create "microservices" that all talk to
the same data source? 24 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Depression 25 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Depression We made 200 microservices and forgot to set up
jenkins 26 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Depression We have an automated build pipeline but release twice
a year 27 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Acceptance 28 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Acceptance All software sucks 29 ! @caseywest #containercon #linuxcon #containers
#realworld #sorrynotsorry
Acceptance Respect CAP Theorem 30 ! @caseywest #containercon #linuxcon #containers
#realworld #sorrynotsorry
Acceptance Respect Conway's Law 31 ! @caseywest #containercon #linuxcon #containers
#realworld #sorrynotsorry
Acceptance Small batch size works for replatforming, too 32 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Acceptance Automate everything 33 ! @caseywest #containercon #linuxcon #containers #realworld
#sorrynotsorry
⏰'s up 34 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
What have we learned? 35 ! @caseywest #containercon #linuxcon #containers
#realworld #sorrynotsorry
Cloud-native operability is* 1. Microservices Architecture 2. Devops Culture 3.
Continuous Delivery Pick Any Three * Not always true. 36 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Act Two The twelve-factor container 37 ! @caseywest #containercon #linuxcon
#containers #realworld #sorrynotsorry
You must be this tall to ride this ride 38
! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Audience Participation • Containers? • Schedulers? • Cloud? 39 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Docker Docker Docker Docker Docker Docker Docker Docker 40 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
The factors http://12factor.net 41 ! @caseywest #containercon #linuxcon #containers #realworld
#sorrynotsorry
1: One codebase tracked in revision control, many deploys 42
! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Anti-pattern Building separate images for staging and production 43 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Anti-pattern Tags for dev and prod 44 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
Best Practice Use the environment and/or feature flags 45 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
2: Explicitly declare and isolate dependencies 46 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
2: Explicitly declare and isolate dependencies 47 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
Anti-pattern latest 48 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Best Practice Declare version numbers of upstream dependencies 49 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Best Practice Depend on base images for default filesystem and
runtimes 50 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
3: Store config in the environment 51 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
Anti-pattern config.yml 52 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Anti-pattern properties.xml 53 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Anti-pattern Hard-coded feature flags 54 ! @caseywest #containercon #linuxcon #containers
#realworld #sorrynotsorry
Best Practice This one is literally about environment variables 55
! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Best Practice This one is literally about environment variables !
‑ 56 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
4: Treat backing services as attached resources 57 ! @caseywest
#containercon #linuxcon #containers #realworld #sorrynotsorry
Anti-pattern Local disk 58 ! @caseywest #containercon #linuxcon #containers #realworld
#sorrynotsorry
Anti-pattern Local disk 59 ! @caseywest #containercon #linuxcon #containers #realworld
#sorrynotsorry
Anti-pattern Local disk 60 ! @caseywest #containercon #linuxcon #containers #realworld
#sorrynotsorry
Best Practice Connect to network- attached services using connection info
from the environment 61 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
5: Strictly separate build and run stages 62 ! @caseywest
#containercon #linuxcon #containers #realworld #sorrynotsorry
Anti-pattern Install on deploy 63 ! @caseywest #containercon #linuxcon #containers
#realworld #sorrynotsorry
Best Practice Build immutable images then run those images 64
! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Painfully Obvious Best Practices 1. Eat when hungry 2. Sleep
when tired 3. Book Casey West for speaking gigs 65 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Best Practice Respect the lifecycle: build, run, destroy 66 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
6: Execute the app as one or more stateless processes
67 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Best Practice Schedule LRPs by distributing them across a cluster
of physical hardware 68 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Anti-pattern NFS 69 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Anti-pattern NFS Need I say more? 70 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
7: Export services via port binding 71 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
Best Practice port = Env.fetch(:PORT) 72 ! @caseywest #containercon #linuxcon
#containers #realworld #sorrynotsorry
Best Practice my $port = $ENV{PORT}; 73 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
Best Practice private String getPort() { Map<String, String> env =
System.getenv(); return env.get("PORT"); } 74 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Best Practice let port = env::var("PORT").unwrap() 75 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
8: Scale out via the process model 76 ! @caseywest
#containercon #linuxcon #containers #realworld #sorrynotsorry
Best Practice Horizontally scale by adding instances 77 ! @caseywest
#containercon #linuxcon #containers #realworld #sorrynotsorry
9: Maximize robustness with fast startup and graceful shutdown 78
! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
10: Keep development, staging, and production as similar as possible
79 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Best Practice Run containers in development 80 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
11: Treat logs as event streams 81 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
Anti-pattern Random log files #yolo'd all over the file system
82 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Best Practice STDOUT STDOUT STDOUT STDOUT 83 ! @caseywest #containercon
#linuxcon #containers #realworld #sorrynotsorry
12: Run admin/ management tasks as one-off processes 84 !
@caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
Anti-pattern Custom containers for tasks 85 ! @caseywest #containercon #linuxcon
#containers #realworld #sorrynotsorry
Best Practice Reuse application images with specific entrypoints for tasks
86 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
More factors? • API first • Secrets management • Health
metrics • Global distribution 87 ! @caseywest #containercon #linuxcon #containers #realworld #sorrynotsorry
You are now cloud-native 88 ! @caseywest #containercon #linuxcon #containers
#realworld #sorrynotsorry
Repeatability Reliability Resiliency 89 ! @caseywest #containercon #linuxcon #containers #realworld
#sorrynotsorry
@caseywest Let's be friends ! 90 ! @caseywest #containercon #linuxcon
#containers #realworld #sorrynotsorry