SlideShare ist ein Scribd-Unternehmen logo
1 von 123
Platform.sh, Moscow, November 15, 2018
DevOps & the Death and Rebirth of
Childhood Innocence
Robert Douglass, Chief DevRel Officer, Platform.sh
@robertDouglass
Rob’s First Law of Coder Dynamics
Problem
Solution?
Solution?
Logic path
Solution?
Safe zone
Danger zone
DOWNLOAD
ALL THE
THINGS!
Part I: Developers
In the beginning…
In the beginning… computers were toys.
We played with them.
https://www.behance.net/gallery/3923327/Internet-History-Infographic
In the beginning…
In the beginning… deploying code was fun.
All of the keywords in C64 BASIC
Problem
Solution?
Goal
Part II: SysAdmins
Source: Carlos León, yesterday’s talk
Source: Carlos León, yesterday’s talk
"Why should you (a DevOps
person) be the one who fixes
someone else's code running in
production?"
Carlos León,
Adopting DevOps: Are You Still on Time?
Jenkins
Ansible
Docker
Kubernetes
Part III: The Death of Childhood Innocence
Equifax is disaster of such epic
proportions that their brand
now looks like this:
Equifax is a clusterfuck of such
epic propotions it is not an easy
subject
We will look at just two of the epic
moments of this saga.
1. The infamous CVE-2017-5638
At $4,000,000,000 this
person is worth way more than
Steve Austin who is currently
worth $29,791,399*
*adjusted for inflation since 1974.
What was the salary of the person
who has the manual/menial job of
“update this package” ?
“Equifax CEO
Richard Smith Who
Oversaw Breach to
Collect $90 Million”
http://fortune.com/2017/09/26/equifax-ceo-richard-smith-net-worth/
Who done it?
Was this a fault of Gary, the developer who
didn’t apply the patch?
Was this the fault of his manager Diane?
I posit this was the fault of faulty thinking
about software.
Software is a function of time.
● Over time two things happen to software:
○ Creating new stuff
○ Repairing broken stuff
Software is a function of time.
Creating new stuff is voluntary. You do it on
your own rhythm.
The better automation you have the faster
and more productive you will be.
The better your tests are … the less you will
suffer from quality degradation and rot.
Software is a function of time.
Repairing broken stuff is not on your own
rhythm.
The fix for CVE-2017-5638 should have been
deployed an hour after it was out.
Software is a function of time.
We will look at just two of the epic
moments of this saga.
1. The infamous CVE-2017-5638
2. The brilliant, flawless
response on the part of
Equifax
No. It wasn’t this. That would be semi-competent.
Is it Diane or Gary’s fault again?
No. It is about snowflakes. When
infrastructure is done by hand you
need a “change request form”.
There is no way in hell a “mature
enterprise” will have procedures
that are lightweight enough to roll-
out a full new project in a day.
If you need to go through IT and
Security.
If you need to fill a form.
In an emergency someone will
“power through”.
And when that happens, you can
get Equifaxed.
And when you get Equifaxed….
Part IV: The Rebirth of Childhood Innocence
2018-11-14
“Adopt a Dev-Centric Position”
Gil Zellner, From Ops to Dev and Back Again
✤deploy by git push or git merge.
This triggers the entire process. Note
that this is NOT “ssh into the server and
git pull”
“Make release
management a functional
practice instead of a
technical one”
Rene van Osnabrugge,
Continuous Delivery 3.0 – the Next
Step
✤Your system (code / applications / services)
has a build process.
Embrace that fact and standardize it for every
member of the team.
✤ Alway test against real data.
Use copy-on-write technologies
(eg. CEPH) to make production data
available for every test environment.
✤Every build should have a testable URL
that you can send to stakeholders.
“Create feedback loops to
improve communication,
Involve stakeholders and
management”
Mieke Deenen,
Get Started with DevOps for
Government
✤ Built code should be put onto a read-only file system.
Your operating system should be put onto a read-only file
system.
The only writable volumes should be protected from
program execution.
Many applications violate this but there are workarounds.
✤ Read-only file systems lead to disposable containers.
Containers should be built, used, then thrown away.
Don’t update containers.
Don’t maintain containers.
Rebuild them and replace them.
“Think immutable - build
your infrastructures from
code”
Rene van Osnabrugge,
Continuous Delivery 3.0 – the Next
Step
✤ Developers should have some (but not total) control over the
services and environment.
For example:
runtime versions
configuration of services that affect the application
nginx redirects / rewrites
extensions, libraries, and dependencies
✤Variables that change per-environment should
be injected into the running application.
“If you're running your application in
a Docker container, you want to
configure that from the outside.”
Patrick Baumgartner,
Demystifying Spring Boot Magic
✤Sensitive data (keys, tokens) should also be
injected into the running application.
"You don't want sensitive
information in your
configuration files"
Benny Michielsen,
Secure Multi-tenant Apps with Azure and
VSTS
✤Deploy and test every git branch in isolation.
✤ Deploy all applications and services in the same way.
Your Node.js app shouldn’t have a fundamentally
different deployment process than your Python app.
✤ Make it easy - automatic! - to practice database migrations.
Test them on every deploy.
✤ Deployments should be optimized for protecting data
consistency, but this may come at a price: downtime.
✤Feature toggles are a hack. Don’t do them.
Unless there’s no other way.
✤ If you have to do database
migrations that take a longer time
or will lead to downtime, you
should have seen Michiel Rook’s
session yesterday.
Michiel Rook
Database Schema Migrations with
Zero Downtime
✤ If you have to do your own container orchestration,
use Kubernetes.
✤ We are betting on Kubernetes for
everything. Kubernetes is the
defacto standard now.
Carlos Sanchez (Cloudbees)
Using Kubernetes for Continuous
Integration and Continuous Delivery
Jenkins
Ansible
Docker
Kubernetes
Your Goal
@platformsh
CONTINUOUS DEPLOYMENT CLOUD HOSTING
Moscow, November 15, 2018
DevOps & the Death and Rebirth of
Childhood Innocence
Robert Douglass, Chief DevRel Officer, Platform.sh
@robertDouglass

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Embracing DevSecOps: A Changing Security Landscape for the US Government
Embracing DevSecOps: A Changing Security Landscape for the US GovernmentEmbracing DevSecOps: A Changing Security Landscape for the US Government
Embracing DevSecOps: A Changing Security Landscape for the US Government
 
RSA Conference APJ 2019 DevSecOps Days Security Chaos Engineering
RSA Conference APJ 2019 DevSecOps Days Security Chaos EngineeringRSA Conference APJ 2019 DevSecOps Days Security Chaos Engineering
RSA Conference APJ 2019 DevSecOps Days Security Chaos Engineering
 
From Zero to DevSecOps in 60 Minutes - DevTalks Romania - Cluj-Napoca
From Zero to DevSecOps in 60 Minutes - DevTalks Romania - Cluj-NapocaFrom Zero to DevSecOps in 60 Minutes - DevTalks Romania - Cluj-Napoca
From Zero to DevSecOps in 60 Minutes - DevTalks Romania - Cluj-Napoca
 
2019 DevSecOps Reference Architectures
2019 DevSecOps Reference Architectures2019 DevSecOps Reference Architectures
2019 DevSecOps Reference Architectures
 
Application Security Epistemology in a Continuous Delivery World
Application Security Epistemology in a Continuous Delivery WorldApplication Security Epistemology in a Continuous Delivery World
Application Security Epistemology in a Continuous Delivery World
 
Chaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in ProductionChaos Engineering - The Art of Breaking Things in Production
Chaos Engineering - The Art of Breaking Things in Production
 
Building a DevSecOps Pipeline Around Your Spring Boot Application
Building a DevSecOps Pipeline Around Your Spring Boot ApplicationBuilding a DevSecOps Pipeline Around Your Spring Boot Application
Building a DevSecOps Pipeline Around Your Spring Boot Application
 
DevSecCon London 2018: Open DevSecOps
DevSecCon London 2018: Open DevSecOpsDevSecCon London 2018: Open DevSecOps
DevSecCon London 2018: Open DevSecOps
 
Cook your KV
Cook your KVCook your KV
Cook your KV
 
30+ Nexus Integrations to Accelerate DevOps
30+ Nexus Integrations to Accelerate DevOps30+ Nexus Integrations to Accelerate DevOps
30+ Nexus Integrations to Accelerate DevOps
 
The DevSecOps Builder’s Guide to the CI/CD Pipeline
The DevSecOps Builder’s Guide to the CI/CD PipelineThe DevSecOps Builder’s Guide to the CI/CD Pipeline
The DevSecOps Builder’s Guide to the CI/CD Pipeline
 
DevOps Friendly Doc Publishing for APIs & Microservices
DevOps Friendly Doc Publishing for APIs & MicroservicesDevOps Friendly Doc Publishing for APIs & Microservices
DevOps Friendly Doc Publishing for APIs & Microservices
 
Microservices 101: From DevOps to Docker and beyond
Microservices 101: From DevOps to Docker and beyondMicroservices 101: From DevOps to Docker and beyond
Microservices 101: From DevOps to Docker and beyond
 
Build reliable Svelte applications using Cypress
Build reliable Svelte applications using CypressBuild reliable Svelte applications using Cypress
Build reliable Svelte applications using Cypress
 
Secure your jenkins
Secure your jenkinsSecure your jenkins
Secure your jenkins
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
 
2017 Microservices Practitioner Virtual Summit: Move Fast, Make Things: how d...
2017 Microservices Practitioner Virtual Summit: Move Fast, Make Things: how d...2017 Microservices Practitioner Virtual Summit: Move Fast, Make Things: how d...
2017 Microservices Practitioner Virtual Summit: Move Fast, Make Things: how d...
 
Who *is* Jenkins?
Who *is* Jenkins?Who *is* Jenkins?
Who *is* Jenkins?
 
MA Microservices Meetup: Move fast and make things
MA Microservices Meetup: Move fast and make thingsMA Microservices Meetup: Move fast and make things
MA Microservices Meetup: Move fast and make things
 
From a web application to a distributed system
From a web application to a distributed systemFrom a web application to a distributed system
From a web application to a distributed system
 

Ähnlich wie DevOps and the Death & Rebirth of Childhood Innocence

Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Nick Galbreath
 

Ähnlich wie DevOps and the Death & Rebirth of Childhood Innocence (20)

From 🤦 to 🐿️
From 🤦 to 🐿️From 🤦 to 🐿️
From 🤦 to 🐿️
 
From DevOps to NoOps how not to get Equifaxed Apidays
From DevOps to NoOps how not to get Equifaxed ApidaysFrom DevOps to NoOps how not to get Equifaxed Apidays
From DevOps to NoOps how not to get Equifaxed Apidays
 
Making Security Agile - Oleg Gryb
Making Security Agile - Oleg GrybMaking Security Agile - Oleg Gryb
Making Security Agile - Oleg Gryb
 
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...DevSecCon Singapore 2018 -  Remove developers’ shameful secrets or simply rem...
DevSecCon Singapore 2018 - Remove developers’ shameful secrets or simply rem...
 
Securing a Cloud Migration
Securing a Cloud MigrationSecuring a Cloud Migration
Securing a Cloud Migration
 
Securing a Cloud Migration
Securing a Cloud MigrationSecuring a Cloud Migration
Securing a Cloud Migration
 
2021-10-14 The Critical Role of Security in DevOps.pdf
2021-10-14 The Critical Role of Security in DevOps.pdf2021-10-14 The Critical Role of Security in DevOps.pdf
2021-10-14 The Critical Role of Security in DevOps.pdf
 
Securing a Great Developer Experience - DevOps Indonesia Meetup by Stefan Str...
Securing a Great Developer Experience - DevOps Indonesia Meetup by Stefan Str...Securing a Great Developer Experience - DevOps Indonesia Meetup by Stefan Str...
Securing a Great Developer Experience - DevOps Indonesia Meetup by Stefan Str...
 
Fixing security by fixing software development
Fixing security by fixing software developmentFixing security by fixing software development
Fixing security by fixing software development
 
Predicting Space Weather with Docker
Predicting Space Weather with DockerPredicting Space Weather with Docker
Predicting Space Weather with Docker
 
Cloud adoption fails - 5 ways deployments go wrong and 5 solutions
Cloud adoption fails - 5 ways deployments go wrong and 5 solutionsCloud adoption fails - 5 ways deployments go wrong and 5 solutions
Cloud adoption fails - 5 ways deployments go wrong and 5 solutions
 
7+1 myths of the new os
7+1 myths of the new os7+1 myths of the new os
7+1 myths of the new os
 
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
 
Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013Faster Secure Software Development with Continuous Deployment - PH Days 2013
Faster Secure Software Development with Continuous Deployment - PH Days 2013
 
DockerDay2015: Keynote
DockerDay2015: KeynoteDockerDay2015: Keynote
DockerDay2015: Keynote
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
 
Evolving to Cloud-Native - Nate Schutta (2/2)
Evolving to Cloud-Native - Nate Schutta (2/2)Evolving to Cloud-Native - Nate Schutta (2/2)
Evolving to Cloud-Native - Nate Schutta (2/2)
 
Evolving to Cloud-Native - Nate Schutta 2/2
Evolving to Cloud-Native - Nate Schutta 2/2Evolving to Cloud-Native - Nate Schutta 2/2
Evolving to Cloud-Native - Nate Schutta 2/2
 
From hello world to goodbye code
From hello world to goodbye codeFrom hello world to goodbye code
From hello world to goodbye code
 
Deploying deep learning models with Docker and Kubernetes
Deploying deep learning models with Docker and KubernetesDeploying deep learning models with Docker and Kubernetes
Deploying deep learning models with Docker and Kubernetes
 

Mehr von Robert Douglass

Mehr von Robert Douglass (8)

Open Source Music - OHM2013
Open Source Music - OHM2013Open Source Music - OHM2013
Open Source Music - OHM2013
 
Classical:NEXT - Crowdfunding, with Steven Walter and Robert Douglass
Classical:NEXT - Crowdfunding, with Steven Walter and Robert DouglassClassical:NEXT - Crowdfunding, with Steven Walter and Robert Douglass
Classical:NEXT - Crowdfunding, with Steven Walter and Robert Douglass
 
Why contributing to Drupal is awesome
Why contributing to Drupal is awesomeWhy contributing to Drupal is awesome
Why contributing to Drupal is awesome
 
Sell your code: Announcing the DroopyAppStore
Sell your code: Announcing the DroopyAppStoreSell your code: Announcing the DroopyAppStore
Sell your code: Announcing the DroopyAppStore
 
The Business of Drupal
The Business of DrupalThe Business of Drupal
The Business of Drupal
 
State-of-the-Art Drupal Search with Apache Solr
State-of-the-Art Drupal Search with Apache SolrState-of-the-Art Drupal Search with Apache Solr
State-of-the-Art Drupal Search with Apache Solr
 
Drupal and Interactive Digital Marketing
Drupal and Interactive Digital MarketingDrupal and Interactive Digital Marketing
Drupal and Interactive Digital Marketing
 
ApacheSolr presentation from "Do it With Drupal"
ApacheSolr presentation from "Do it With Drupal"ApacheSolr presentation from "Do it With Drupal"
ApacheSolr presentation from "Do it With Drupal"
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

DevOps and the Death & Rebirth of Childhood Innocence

  • 1. Platform.sh, Moscow, November 15, 2018 DevOps & the Death and Rebirth of Childhood Innocence Robert Douglass, Chief DevRel Officer, Platform.sh @robertDouglass
  • 2. Rob’s First Law of Coder Dynamics
  • 9.
  • 12. In the beginning… computers were toys.
  • 13. We played with them.
  • 14.
  • 15.
  • 16.
  • 17.
  • 19.
  • 21. In the beginning… deploying code was fun.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26. All of the keywords in C64 BASIC
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45. Goal
  • 46.
  • 47.
  • 48.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59. Source: Carlos León, yesterday’s talk
  • 60. Source: Carlos León, yesterday’s talk
  • 61. "Why should you (a DevOps person) be the one who fixes someone else's code running in production?" Carlos León, Adopting DevOps: Are You Still on Time?
  • 62.
  • 63.
  • 65. Part III: The Death of Childhood Innocence
  • 66.
  • 67. Equifax is disaster of such epic proportions that their brand now looks like this:
  • 68. Equifax is a clusterfuck of such epic propotions it is not an easy subject
  • 69. We will look at just two of the epic moments of this saga. 1. The infamous CVE-2017-5638
  • 70.
  • 71.
  • 72. At $4,000,000,000 this person is worth way more than Steve Austin who is currently worth $29,791,399* *adjusted for inflation since 1974.
  • 73. What was the salary of the person who has the manual/menial job of “update this package” ?
  • 74. “Equifax CEO Richard Smith Who Oversaw Breach to Collect $90 Million” http://fortune.com/2017/09/26/equifax-ceo-richard-smith-net-worth/
  • 75. Who done it? Was this a fault of Gary, the developer who didn’t apply the patch? Was this the fault of his manager Diane? I posit this was the fault of faulty thinking about software.
  • 76. Software is a function of time.
  • 77. ● Over time two things happen to software: ○ Creating new stuff ○ Repairing broken stuff Software is a function of time.
  • 78. Creating new stuff is voluntary. You do it on your own rhythm. The better automation you have the faster and more productive you will be. The better your tests are … the less you will suffer from quality degradation and rot. Software is a function of time.
  • 79. Repairing broken stuff is not on your own rhythm. The fix for CVE-2017-5638 should have been deployed an hour after it was out. Software is a function of time.
  • 80. We will look at just two of the epic moments of this saga. 1. The infamous CVE-2017-5638 2. The brilliant, flawless response on the part of Equifax
  • 81.
  • 82.
  • 83. No. It wasn’t this. That would be semi-competent.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89. Is it Diane or Gary’s fault again? No. It is about snowflakes. When infrastructure is done by hand you need a “change request form”.
  • 90. There is no way in hell a “mature enterprise” will have procedures that are lightweight enough to roll- out a full new project in a day. If you need to go through IT and Security. If you need to fill a form.
  • 91. In an emergency someone will “power through”. And when that happens, you can get Equifaxed.
  • 92. And when you get Equifaxed….
  • 93.
  • 94. Part IV: The Rebirth of Childhood Innocence
  • 95.
  • 96. 2018-11-14 “Adopt a Dev-Centric Position” Gil Zellner, From Ops to Dev and Back Again
  • 97. ✤deploy by git push or git merge. This triggers the entire process. Note that this is NOT “ssh into the server and git pull”
  • 98. “Make release management a functional practice instead of a technical one” Rene van Osnabrugge, Continuous Delivery 3.0 – the Next Step
  • 99. ✤Your system (code / applications / services) has a build process. Embrace that fact and standardize it for every member of the team.
  • 100. ✤ Alway test against real data. Use copy-on-write technologies (eg. CEPH) to make production data available for every test environment.
  • 101. ✤Every build should have a testable URL that you can send to stakeholders.
  • 102. “Create feedback loops to improve communication, Involve stakeholders and management” Mieke Deenen, Get Started with DevOps for Government
  • 103. ✤ Built code should be put onto a read-only file system. Your operating system should be put onto a read-only file system. The only writable volumes should be protected from program execution. Many applications violate this but there are workarounds.
  • 104. ✤ Read-only file systems lead to disposable containers. Containers should be built, used, then thrown away. Don’t update containers. Don’t maintain containers. Rebuild them and replace them.
  • 105. “Think immutable - build your infrastructures from code” Rene van Osnabrugge, Continuous Delivery 3.0 – the Next Step
  • 106. ✤ Developers should have some (but not total) control over the services and environment. For example: runtime versions configuration of services that affect the application nginx redirects / rewrites extensions, libraries, and dependencies
  • 107. ✤Variables that change per-environment should be injected into the running application.
  • 108. “If you're running your application in a Docker container, you want to configure that from the outside.” Patrick Baumgartner, Demystifying Spring Boot Magic
  • 109. ✤Sensitive data (keys, tokens) should also be injected into the running application.
  • 110. "You don't want sensitive information in your configuration files" Benny Michielsen, Secure Multi-tenant Apps with Azure and VSTS
  • 111. ✤Deploy and test every git branch in isolation.
  • 112. ✤ Deploy all applications and services in the same way. Your Node.js app shouldn’t have a fundamentally different deployment process than your Python app.
  • 113. ✤ Make it easy - automatic! - to practice database migrations. Test them on every deploy.
  • 114. ✤ Deployments should be optimized for protecting data consistency, but this may come at a price: downtime.
  • 115. ✤Feature toggles are a hack. Don’t do them. Unless there’s no other way.
  • 116. ✤ If you have to do database migrations that take a longer time or will lead to downtime, you should have seen Michiel Rook’s session yesterday. Michiel Rook Database Schema Migrations with Zero Downtime
  • 117. ✤ If you have to do your own container orchestration, use Kubernetes.
  • 118. ✤ We are betting on Kubernetes for everything. Kubernetes is the defacto standard now. Carlos Sanchez (Cloudbees) Using Kubernetes for Continuous Integration and Continuous Delivery
  • 120.
  • 121.
  • 123. Moscow, November 15, 2018 DevOps & the Death and Rebirth of Childhood Innocence Robert Douglass, Chief DevRel Officer, Platform.sh @robertDouglass

Hinweis der Redaktion

  1. Before we really begin, I need to introduce you to Rob’s First Law of Coder Dynamics:
  2. It says that When solving a problem
  3. and following a logic path towards a solution
  4. the larger the distance between the current topic and the original topic
  5. the more likely you are to install software you don't need.
  6. For example: Programmer: I think I'll write an app that helps me identify vintage autos! Thought path: Autos -> image recognition -> training algorithms -> python libraries -> C bindings -> static binaries
  7. BOOM! Time to download Call of Duty Black Ops 4!
  8. This is, by the way, very closely related to Rob’s Second Law of Coder Dynamics which says that for every second you spend waiting for a page to load, the likelihood of spontaneously consuming 1,000 calories in the form of Coke and Pringles increases by 1000%.
  9. through play, we learned to program. as programmers, the feeling of power and control excited us.
  10. when we told our computer to do something, it obeyed we imagined all of the fantastic programs we would build.
  11. these became our goals. We are very goal oriented people. We learned to problem solve.
  12. We were children, innocent children, fascinated with the endless possibilities our incredible toys afforded us.
  13. Our Childhood Innocence allowed us to play without boundaries, and thus create the magnificent world we enjoy around us today, full of incredible sites, apps, and tools, enabling communication and sharing, improving lives around the world.
  14. This is a story of how we have lost that Childhood Innocence. How it crashes, burns, and falls apart, leaving us bitter, confused, and unable to focus on the things we want to build.
  15. You would subscribe to a magazine with computer programs printed in it, and every month you'd spend time typing the new programs into your computer. When I started, as I didn't have enough money to buy a disk drive, I would use the program as long as the computer was turned on, and it would disappear from RAM when I switched it off. Later, if I wanted to run the program again, it was a cost-benefit-analysis situation. Was the program good enough to merit typing it all in again? Usually if the answer was "yes", it was because I had come up with some ideas on how to change, it, extend it, hack it. Then I'd gladly type it all in again.
  16. And, if you don’t believe me, you can walk into the room back there and visit the vintage computer collection, and see for yourself that even in 1986, that’s how programs were being distributed.
  17. Later, with a disk drive that I purchased with birthday and Christmas money, I'd go over to my friend's house, with the drive, and make copies of programs on disks. Then I could run those programs at home, too.
  18. These programs were scripts and they just ran. The computer "interpreted" them. They used languages like BASIC. Or Perl. Or later, PHP.
  19. When you ran into the limits of scripting languages, you moved on to compiled languages. These were more rigorous, serious languages, like C, C++, or later, Java. Compiling code was cool. But it was also the first moment when we began to trade our innocence for power.
  20. If you didn't have a computer or game console, you'd go over to your friend's house and play with theirs. They were the cool kids. If you had an Atari 2600 and your friend had an Atari 5200, your friend was the cooler one, and you'd spend time at their house.
  21. We hooked our toys up to networks, first with modems, later with DSL, wifi, and then 4G. Maybe your first computer was a smartphone. If so, you’re young and beautiful and probably have no idea what I'm talking about. Enjoy your innocence =)
  22. The network let you skip the magazine subscription, typing, and compiling altogether. You could connect to other computers and just copy the programs or files. Suddenly the world seemed both endlessly vast, and yet a lot smaller than it used to.
  23. Now the cool kids were the ones who ran computers on the network- the servers. They'd run bulletin boards, or forums, or chat rooms.
  24. When the internet happened, everything started to move to the network. We didn't need to store things on our own computer if we knew it was being stored on someone else's computer, and if we knew we could find it.
  25. Programming changed too. Now you could write programs that depended on other programs. This made our programs more powerful. We could benefit from the good ideas and hard work of others. But while these dependencies bring benefits, they signify another major step in the tragic death of our childhood innocence: managing dependencies.
  26. I got a glimpse of that the first time I ran Maven. I felt like I had just downloaded the whole internet! So many jars! It was wonderful.
  27. Dependencies are great, but they bring many dangers. They require strict version management. Dependencies that you blindly download might have security problems, or bugs, and you might not be in a position to fix those or deal with them. Dependencies become abandoned. Their APIs change. Dependencies might have their own dependencies. And those might have further dependencies. And amazingly, in some cases, if you're not careful, they might have circular dependencies with version mismatches, so you might end up with multiple versions of the same package.
  28. By the way, I really love this exhibition next door. If you haven’t seen it, make sure and take a look. The history of computing is really fascinating and I’m happy to have seen a part of it happening.
  29. What was our goal as beginning programmers?
  30. what problem were we trying to solve?
  31. Originally I just wanted to write games. I wanted to be Sid Meier. If I had been a smarter 10 year old I could have met him, since he was my neighbor. Sadly I never became a games programmer.
  32. Later, I wanted to build all sorts of websites. I wanted to build a news aggregator.
  33. I wanted to build a CMS for musicians.
  34. I wanted to build a learning management system.
  35. I wanted to build a video rating site.
  36. I wanted to build an app that recognizes stolen violins.
  37. I wanted to build a specialized dating app. Those were my goals.
  38. In all of the cases, the goal was an app or a website that did a specific thing. My interest was in solving real world problems, and creating specific digital experiences. Those goals would be the center red dot in my diagram.
  39. In my innocence, I thought that building those apps would involve lots of thinking about the actual functionality, user experience, and business models around those ideas. In reality, it was more like: -> I need a rating widget -> npm needs to be updated -> the resulting new version of my XML parser dies on a manifest in a library I didn't know I had -> my two factor authentication on Github has expired (click!) PRINGLES!!!! DOWNLOAD PHP STORM!!!!
  40. 1000 CALORIES! NOW!!!!
  41. In each case, the innocent idea got worn down more and more by the need to maintain the tooling required to do development. Innocence didn't die there, but it was weakened. A little like Gandolf in Moria.
  42. Remember the cool kids who could run their own servers? Let's call them Operations. Their world has also evolved. They innocently started running Bulletin Boards, forums, or sites, which allowed them to communicate with other humans and have social contact without ever having to leave their bedroom, let alone turn on the lights, put on clothing, or brush their teeth
  43. They too lost their innocence. Operations exploded as the internet began to scale. Setting up one server was fun. Maintaining a fleet of aging servers while people still asked you to fix their printers was not so much fun.
  44. Fortunately for the Operations people, virtualization came and everything be done with nice clouds. Much of the complexity and all of the cables have been abstracted conveniently away by services such as AWS and Google Cloud.
  45. The server admin used to use tools like: VirtualBox, VMWare, Vagrant, CHRoot, CPanel, Capistrano, Puppet, Chef, Ansible and so forth.
  46. By the way, do you know how you turn on the fan in your laptop from the command line? Vagrant up.
  47. Now the operations people use things like containers, and container orchestration. More buzzwords, more power, more complexity. You can hear ops people talking about things like: kubelets, pods, replication controllers, configmaps, persistent volume claims, swarms, and trust.
  48. To keep up, and to be able to work together, The Developer is thinking about things like: Docker compose, build scripts, deployment pipelines, local environments, QA environments.
  49. The core problem is that, Operations have gotten really really good with all the powerful tools they have at creating huge and very complicated infrastructures which meet the demands of modern computing workloads.
  50. And the Developers have gotten really really good with all the powerful tools they have at creating huge and very complicated application architectures which meet the demands of modern applications.
  51. And that’s how we ended up at the Wall of Confusion between Developers and Operations, each losing their innocence by creating more and more complexity. But they depend on each other, and both are needed to run web applications.
  52. Which is why we have DevOps. DevOps is meant to help these poor Developers and poor Operations people work together, and maybe, if done really well, restore some of the Childhood innocence that makes our work fun and meaningful.
  53. But Operations people shouldn’t need to know how the programs run. They shouldn’t have to worry about the happiness and childhood innocence of the developers.
  54. And application developers are dealing with enough complexity that they shouldn’t have to deal with kubelets, pods, replication controllers, configmaps, persistent volume claims, swarms, and trust. Right???
  55. When application developers have to spend that much effort on DevOps issues, it’s time to admit there’s a problem. Someone has to stage an intervention. Hello, my name is Robert. I'm developer and I do DevOps. It's been 31 days since I've logged in as root.
  56. While awesome, the new breed of Devops tools are for application developers, just a distraction on the logic path of problem solving that you should be doing for your application. And you know what happens when you get distracted from your goal. Pringles.
  57. 800 million individual consumers US$3.1 billion in annual revenue They look at your ability to pay, run credit checks on you, etc. The data they collect on you can decide whether you can take a loan, buy a house, get a job, even sign up for an internet contract.
  58. Equifax is disaster of such epic proportions that their brand now looks like this:
  59. Why is their brand so bad? Aside from the fact that Equifax was the subject of more than 57,000 consumer complaints to the Consumer Financial Protection Bureau, with most complaints relating to incomplete, inaccurate, outdated, or misattributed information held by the company. In September 2017, Equifax announced a cyber-security breach where criminals accessed approximately 147 million consumers' personal data, including their full names, Social Security numbers, birth dates, addresses, and driver license numbers. Equifax also confirmed at least 209,000 consumers' credit card credentials were taken in the attack.
  60. Apache Struts allows remote attackers to execute arbitrary commands
  61. Let’s call him Gary.
  62. 1974
  63. How much do you think the CEO who oversaw the company at the time of the breach got when he resigned? I bet we all wish we had a job like that.
  64. Creating new stuff is voluntary. You do it on your own rhythm. The better automation you have the faster and more productive you will be. The better your tests are … the less you will suffer from quality degradation and rot.
  65. 2 The brilliant, flawless response on the part of Equifax
  66. The site the company set up for consumers to check if they were affected by the breach asked for six digits of the visitor’s Social Security number, then told people their data was exposed no matter what they entered. The website itself was also vulnerable to hacking, not that it really mattered all that much seeing as Equifax sent people to a phishing site set up to look just like the real one.
  67. Is it Diane or Gary’s fault again? No. It is about snowflakes. When infrastructure is done by hand you need a “change request form”.
  68. There is no way in hell a “mature enterprise” will have procedures that are lightweight enough to roll-out a full new project in a day. If you need to go through IT and Security. If you need to fill a form.
  69. At the moment you have been equifaxed, you have experienced the absolute horrifying death of Childhood Innocence. No more play. No more discovery. No more wonder. No lightness. Only darkness. Every character that you code will feel like bitter, hard work and suffering.
  70. Now we've seen how the Childhood Innocence of a developer dies. Is that the end of the story? Are we destined to fight with overwhelming complexity, distracting us from focusing on our passions and ideas? will the bad guys always be able to break in and steal our data?
  71. The answer to regaining childhood innocence was given by Gill Zellner yesterday when he said “Adopt a Dev-Centric Position”. What follows is a set of guidelines that I recommend for doing that - for using DevOps ideas and tools with the goal of having a Dev Centric Position.
  72. deploy by git push or git merge. This triggers the entire process. Note that this is NOT “ssh into the server and git pull” Note that uploading a zip file to AWS Lamda violates this.
  73. “Make release management a functional practice instead of a technical one” Rene van Osnabrugge, Continuous Delivery 3.0 – the Next Step
  74. Your system (code / applications / services) has a build process. Embrace that fact and standardize it for every member of the team. Whether they are front end or back end or dev ops shouldn’t matter, they should all build the same way.
  75. Alway test against real data. Use copy-on-write technologies (eg. CEPH) to make production data available for every test environment.
  76. Every build should have a testable URL that you can send to stakeholders.
  77. “Create feedback loops to improve communication, Involve stakeholders and management” Mieke Deenen, Get Started with DevOps for Government
  78. Built code should be put onto a read-only file system. Your operating system should be put onto a read-only file system. The only writable volumes should be protected from program execution. Many applications violate this but there are workarounds.
  79. Read-only file systems lead to disposable containers. Containers should be built, used, then thrown away. Don’t update containers. Don’t maintain containers. Rebuild them and replace them.
  80. “Think immutable - build your infrastructures from code” Rene van Osnabrugge, Continuous Delivery 3.0 – the Next Step
  81. Developers should have some (but not total) control over the services and environment. For example: runtime versions configuration of services that affect the application nginx redirects / rewrites extensions, libraries, and dependencies
  82. Variables that change per-environment should be injected into the running application.
  83. “If you're running your application in a Docker container, you want to configure that from the outside.” Patrick Baumgartner, Demystifying Spring Boot Magic
  84. Sensitive data (keys, tokens) should also be injected into the running application.
  85. "You don't want sensitive information in your configuration files" Benny Michielsen, Secure Multi-tenant Apps with Azure and VSTS
  86. Deploy and test every git branch in isolation.
  87. Deploy all applications and services in the same way. Your Node.js app shouldn’t have a fundamentally different deployment process than your Python app.
  88. Make it easy - automatic! - to practice database migrations. Test them on every deploy.
  89. Deployments should be optimized for protecting data consistency, but this may come at a price: downtime. Therefore it’s also important to have a risky deploy mode that quickly swaps out application code but does nothing else.
  90. Feature toggles are a hack. Don’t do them. Unless there’s no other way. Deploy the code you want to run. Test new features in test environments that are fast to deploy and exact copies of production. Make sure your application can be deployed quickly.
  91. If you have to do database migrations that take a longer time or will lead to downtime, you should have seen Michiel Rook’s session yesterday. Michiel Rook Database Schema Migrations with Zero Downtime
  92. Deployments should be optimized for protecting data consistency, but this may come at a price: downtime. Therefore it’s also important to have a risky deploy mode that quickly swaps out application code but does nothing else.
  93. We are betting on Kubernetes for everything. Kubernetes is the defacto standard now. Carlos Sanchez (Cloudbees) Using Kubernetes for Continuous Integration and Continuous Delivery
  94. Saving Childhood Innocence then means removing the complexity and distraction that stands betwen you and your programming goals. Saving Childhood Innocence means not going outside of your Circle of Concentration when following the idea threads and problem solving.
  95. Ideally, as an Application developer, you should be able to describe what you need for your application to run. You should be able to say, for example [click] "I need PHP 7.2, [click] and I need 50G of disk space, [click] and PostgreSQL, ElasaticSearch, and RabbitMQ. [click] and, oh, and make sure my PHP dependencies get resolved, composer and npm both run, and all my caches clear every time I merge code."
  96. And then, Our Developers and our Operations teams will live together in perfect harmony, building wonderful applications, improving the world we live in, and enjoying their Childhood Innocence.
  97. I am grateful to the company I work for, Platform.sh, for supporting me being here today, and for teaching me most of the concepts that I bring to you today.
  98. This presentation included a lot of nostalgia for the early days of personal computing as I experienced it, growing up in the USA in the 80’s and 90’s. I’d love to hear from some of you about your experiences growing up with computers in different countries.