63
@kmugrage @kmugrage “YOU BUILD IT, YOU RUN IT” –Werner Vogels, Amazon

“YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

“YOU BUILD IT, YOU RUN IT”

–Werner Vogels, Amazon

Page 2: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

“…IT ALSO BRINGS THEM INTO DAY-TO-DAY CONTACT WITH THE CUSTOMER. THIS CUSTOMER FEEDBACK LOOP IS ESSENTIAL FOR IMPROVING THE QUALITY OF THE SERVICE.”

–Werner Vogels, Amazonhttps://queue.acm.org/detail.cfm?id=1142065

Page 3: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous
Page 4: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

WE KNEW EVERYTHING

▸Defined Continuous Integration

▸ Created the first (or second) CI server

▸ Created Selenium

Page 5: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

JAVA – WRITE ONCE, RUN ANYWHERE

▸Developed a system on Windows laptops to be deployed to a Solaris cluster

▸Did all of the right Continuous Integration things

▸One small issue…

Page 6: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous
Page 7: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

HOMEWORK

Page 8: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

YOU ONLY HAVE TO CHANGE ONE THING TO DO THE DEVOPS

Page 9: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

YOU ONLY HAVE TO CHANGE ONE THING TO DO THE DEVOPS

EVERYTHING

Page 10: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

THE CHANGES

▸ (Re)define words for your organization

▸ Change your organization to enable DevOps

▸Use modern architectures and technologies

▸Use Continuous Delivery to safely deploy on demand

Page 11: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

FOR YOUR ORGANIZATION

REDEFINE WORDS

Page 12: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

WHAT ISN’T DEVOPS

▸A Toolset

▸A Role

▸A Team

Page 13: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

IT’S VERBS, NOT NOUNS

developING and operatING

Page 14: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

CAMS

▸ Culture

▸Automation

▸Measurement

▸ Sharing

https://blog.chef.io/2010/07/16/what-devops-means-to-me/

Page 15: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

CALMS

▸ Culture

▸Automation

▸ Lean

▸Measurement

▸ Sharing

https://blog.chef.io/2010/07/16/what-devops-means-to-me/

Page 16: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

“DEVOPS: A CULTURE WHERE PEOPLE, REGARDLESS OF TITLE OR BACKGROUND, WORK TOGETHER TO IMAGINE, DEVELOP, DEPLOY AND OPERATE A SYSTEM.”

–Mehttps://kenmugrage.com/2017/05/05/my-new-definition-of-devops/

Page 17: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

TO ENABLE DEVOPS

CHANGE YOUR ORG

Page 18: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

TRADITIONAL MODEL

Development Teams Testing Team Operations Team

Page 19: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

“ANY ORGANIZATION THAT DESIGNS A SYSTEM (DEFINED BROADLY) WILL PRODUCE A DESIGN WHOSE STRUCTURE IS A COPY OF THE ORGANIZATION'S COMMUNICATION STRUCTURE.”

–Mel Conwayhttp://www.melconway.com/Home/Conways_Law.html

Page 20: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

TRADITIONAL MODEL

Development Teams QA Team Operations Team

Page 21: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

RENAMING OPS WON’T SOLVE THE ISSUE

Development Teams QA Team DevOps Team

Page 22: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

CREATING ANOTHER SILO DOESN’T SOLVE SILOS

Development Teams QA Team Operations Team

DevOps Team

Page 23: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

PRODUCT TEAMS

Page 24: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

ARCHITECTURES AND TECHNOLOGIES

USE MODERN

Page 25: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

THERE'S A PHRASE THAT DEFINES LEGACY SOFTWARE. "THE STUFF THAT RUNS OUR BUSINESS"

Me, and a lot of other people

Page 26: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

MONOLITHS CAN BE HARD

▸ All functionality is in one process

▸ Scale by replicating the monolith on multiple servers

https://www.thoughtworks.com/insights/blog/microservices-nutshell

Page 27: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

DEVELOP SMALLER PIECES

MICROSERVICE ARCHITECTURE

▸ Each element of functionality is in a separate service

▸ Scale by distributing these services across servers, replicating as needed

https://www.thoughtworks.com/insights/blog/microservices-nutshell

Page 28: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

DEFINITIONS MATTER

▸Need to deploy specific versions at the same time? Not a microservice.

▸Have a shared data source? Not a microservice.

Page 29: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

DON’T REBUILD THE WHOLE THING!

▸ Build services only when you understand the boundaries

▸ Build services where you need to react faster

▸ Build services where you need scalability

Page 30: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

DON’T REBUILD THE WHOLE THING!

Page 31: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

PRODUCT TEAMS

Car Rental

Consumer

Tax

Hotels

Business to Business

Airlines

Payments

Page 32: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

FINANCIAL SERVICES PLATFORM

Edge Load Balancer

Service

Repository

Apply Domain

Event Store

Command Handlers

Event Handlers

Service

Repository

Account Domain

Event Store

Command Handlers

Event Handlers

Service

Repository

Product Domain

Event Store

Command Handlers

Event Handlers

Service

Repository

Customer Domain

Event Store

Command Handlers

Event Handlers

EVENT

BUS

Page 33: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

WITHOUT EVENTS

User Service

Quote ServiceQuote ServiceQuote Service

Quote Service

Page 34: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

EVENT NOTIFICATION

User Service

Quote Service Service Service Service

Page 35: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

EVENT SOURCING

▸ You don’t write to the data store, you create an event which writes to the store

▸ The test: You could completely blow away the store and recreate it from the event stream

▸ You use this model every day (I hope)

Page 36: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

HOMEWORK

http://samnewman.io/books/building_microservices/

http://nealford.com/books/

Page 37: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

WE STILL HAVE TO DEPLOY SOMEWHERE

Page 38: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

AN EXAMPLE OF PLATFORM AS A SERVICE

CLOUD.GOV

▸ Official service of the US Government

▸ 325 required security controls

▸ 269 handled by cloud.gov

▸ 41 shared

▸ 15 handled by customer

https://cloud.gov/overview/technology/responsibilities/

Page 39: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

THE CLOUD IS JUST SOMEBODY ELSE’S COMPUTER

Someone at every conference

Page 40: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

PRODUCT TEAMS

Page 41: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

PRODUCT TEAMS

Platform Team Compliance Team Security Team

Page 42: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

TO SAFELY DEPLOY MORE OFTEN

USE CONTINUOUS DELIVERY

https://commons.wikimedia.org/wiki/File:Continous_Delivery_by_Jez_Humble_and_David_Farley.jpg

Page 43: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

CONTINUOUS INTEGRATION

A PREREQUISITE TO CD

Page 44: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

CI THEATRE

https://www.gocd.org/2017/05/16/its-not-CI-its-CI-theatre/

The ThoughtWorks tech radar recently recommended putting a hold on the tech team anti-pattern, CI Theatre. CI Theatre describes the illusion of practicing continuous integration (CI) while not really practicing it.

Page 45: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

CI THEATRE

In another ThoughtWorks study only 10%

of participants acknowledged that having

a CI server was not the same as practicing

CI.

https://www.gocd.org/2017/05/16/its-not-CI-its-CI-theatre/

Page 46: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

ARE YOU PRACTICING CI?

Page 47: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous
Page 48: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

CONTINUOUS DELIVERY

Page 49: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

CONTINUOUS DELIVERY IS THE ABILITY TO GET CHANGES OF ALL TYPES—INCLUDING NEW FEATURES, CONFIGURATION CHANGES, BUG FIXES AND EXPERIMENTS—INTO PRODUCTION, OR INTO THE HANDS OF USERS, SAFELY AND QUICKLY IN A SUSTAINABLE WAY.

Jez Humblehttps://continuousdelivery.com/

Page 50: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

CONTINUOUS DELIVERY IS WHAT YOU “DO” AS PART OF A DEVOPS CULTURE

Me

Page 51: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

CONTINUOUS DELIVERY PIPELINE

Page 52: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

CONTINUOUS DELIVERY VS CONTINUOUS DEPLOYMENT

http://gofor.cd/cd_vs_cd

Page 53: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

CONTINUOUS DELIVERY VS CONTINUOUS DEPLOYMENT

http://gofor.cd/cd_vs_cd

Page 54: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

OUR TEAMS

Product Team Security Team Compliance Team

Page 55: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

OUR CONTINUOUS DELIVERY PIPELINE

UNITTESTS

FUNCTIONAL TESTS

DEPLOYSTAGING

DEPLOY PRODUCTION

Page 56: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

CONTINUOUS DELIVERY IS NOT JUST CONTINUOUS INTEGRATION WITH A PLUGIN AND A COUPLE EXTRA STEPS

Me

Page 57: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

EXAMPLES OF THINGS WHICH ARE BAD

▸Deploying insecure software

▸Deploying non-performant software

▸Deploying non-complying software

▸Deploying ineffective software

Page 58: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

THE PURPOSE OF A CONTINUOUS DELIVERY PIPELINE IS TO KILL A RELEASE CANDIDATE

Me, and a lot of other people

Page 59: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage@kmugrage

OUR CONTINUOUS DELIVERY PIPELINE

UNITTESTS

FUNCTIONAL TESTS

DEPLOYSTAGING

DEPLOY PRODUCTION

SECURITY TESTS (OWASP, OTHERS)

COMPLIANCE TESTS (SERVERSPEC, INSPEC)

Page 60: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous
Page 61: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

SORRY, THERE’S NO SILVER BULLET

BUT THESE ARE SOLVED PROBLEMS AND THERE IS A LOT OF HELP

Page 62: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

SUMMARY

▸ Redefine words for your organization

▸ Change your organization to enable DevOps

▸Use modern architectures and technologies

▸Use Continuous Delivery to safely deploy more often

Page 63: “YOU UILD IT, YOU RUN IT” · @kmugrage JAVA –WRITE ONCE, RUN ANYWHERE Developed a system on Windows laptops to be deployed to a Solaris cluster Did all of the right Continuous

@kmugrage

@goforcd

https://www.gocd.org/