27
Facilitating Continuous Delivery at Scale Dan Woods

Facilitating Continuous Delivery at Scale

Embed Size (px)

Citation preview

Page 1: Facilitating Continuous Delivery at Scale

Facilitating Continuous Delivery at Scale

Dan Woods

Page 2: Facilitating Continuous Delivery at Scale

/danveloper

[email protected]

Senior Software Engineer: Delivery Engineering

Learning Ratpack

Page 3: Facilitating Continuous Delivery at Scale

What is this talk about?

• Continuous Delivery is tremendously important for unprecedented scale

!• The “Rube Goldberg” machine of a microservice

architecture needs to keep moving !• The culture needs to be amenable to continuous delivery !• Understand that continuous delivery is an organic

concept within an organization

Page 4: Facilitating Continuous Delivery at Scale

Culture

Freedom and Responsibility!!• One of the greatest aspects of the culture !• Means that if something isn’t working for you, you are

empowered to change it !• We can’t think about things in traditional Ops (or even

DevOps) terms

Page 5: Facilitating Continuous Delivery at Scale

Culture

Supporting Teams!!• Need to really understand what the various problem

domains are throughout the org !• Try to design for the overlap in use-cases !• From a tooling standpoint, we need to have versatile

infrastructure that can adapt

Page 6: Facilitating Continuous Delivery at Scale

Facilitation

Facilitating Continuous Delivery!!• Can’t be locked in to a single path or way of doing things !• Need to be able to pivot as quickly as the product teams !• Recent emergence of new technology stacks has made

this ever-apparent

Page 7: Facilitating Continuous Delivery at Scale

Facilitation

Integrating with Netflix!!• Netflix has a large insight infrastructure, built on JVM

technologies !• Solutions for the various problem domains might not fit

into that structure !• Need to have an answer for getting these apps

integrated into the platform

Page 8: Facilitating Continuous Delivery at Scale

Facilitation

Platform Sidecar!!• Decouples the application from the platform !• Provides a standard RESTful API for utilizing the platform !• Comes with some reduced insight, but also some

valuable functionality !• Very easy internally to build this into an application’s

deployable artifact

Page 9: Facilitating Continuous Delivery at Scale

Facilitation

Platform Sidecar!!!!!!

https://github.com/netflix/prana!!

!!!!

Page 10: Facilitating Continuous Delivery at Scale

Facilitation

This is about enabling the “Freedom and Responsibility” culture by having answers that are not

“no”.

Page 11: Facilitating Continuous Delivery at Scale

Facilitation

How Does This Fit Into Continuous Delivery?!!• Continuous Delivery is the full show — “code to cloud” !• Having decoupled tooling available means that we can

enable teams to move quickly !• They can be more productive, push code more rapidly !• Less time spent on “integration”, more time spent

developing products

Page 12: Facilitating Continuous Delivery at Scale

Facilitation

Designing Toward Extensibility!!• No one-size fits all for Continuous Delivery !• Designing workflows based around configuration !• Version all the things! !• Have “best practices”, not shoehorns

Page 13: Facilitating Continuous Delivery at Scale

Facilitation

Being flexible and driving Continuous Delivery through configuration means that teams can iterate more

rapidly.

Page 14: Facilitating Continuous Delivery at Scale

Facilitation

Designing for Availability and Durability!!• Infrastructure supporting CD pipelines needs to be highly

available !• Need to be durable to outages — if we’re having an

outage, a production team certainly is as well !

• Design for failure and hope for the best; continuous delivery is not limited to a zone or region, need recovery built-in

Page 15: Facilitating Continuous Delivery at Scale

Facilitation

Designing for Availability and Durability!!• Getting into the realm now of self-healing systems !• Some teams at Netflix already have this capability !• We’re designing the tooling to be flexible enough to

facilitate most teams

Page 16: Facilitating Continuous Delivery at Scale

Facilitation

Designing for Availability and Durability!!• Active/Active deployment model !• Non-core functionality can be gracefully degraded out of

the stack !• Ensure that continuous delivery tooling is always

available; this is always the first stop in the event of an outage

Page 17: Facilitating Continuous Delivery at Scale

Facilitation

Designing for Availability and Durability!!• Netflix Continuous Delivery tooling of the future is a

distributed platform !• Making use of service discovery makes use more resilient

than ever !• For availability purposes, we can leverage Eureka for

load balancing and routing to send requests to the right region/zone/service combination

Page 18: Facilitating Continuous Delivery at Scale

Facilitation

Build Extensibility - Immutable Infrastructure!!• The “Golden Nugget” of deployable artifact !• Has been advocated since forever, often ruled out !• Netflix has created extensive tooling around designing

and building immutable infrastructure !

• This is one of the only requirements to run in the Netflix cloud (it is the only way to get there)

Page 19: Facilitating Continuous Delivery at Scale

Facilitation

Immutable Infrastructure - Resources:!!

http://nebula-plugins.github.io/!!

https://github.com/netflix/aminator!

Page 20: Facilitating Continuous Delivery at Scale

Facilitation

Other Extensible Aspects!!• Extensibility in the build system: Gradle/Nebula !• Extensibility in the configuration model: Archaius !• Extensibility in the data store: Cassandra - Astyanax;

Redis - Dynomite !• Extensibility in the deployment systems: “designing”

continuous delivery pipelines !

Page 21: Facilitating Continuous Delivery at Scale

Facilitation

Documentation as a First Class Citizen!!• Often the first thing sacrificed when moving quickly !• Is of paramount importance in a distributed platform !• Need to make it appealing for developers to write

documentation !• Need to make it easy for consumers to find/parse your

documentation !

Page 22: Facilitating Continuous Delivery at Scale

Facilitation

Documentation as a First Class Citizen!!• Build the documentation with the code (literally make it a

module of the project) !• We’ve landed on using Asciidoctor for documenting all of

our processes and APIs !• Generate a manual to HTML, which can be served

directly inline with the service (keeping the documentation as close to the code as possible)

!• Avoid auto-generated docs!! !

Page 23: Facilitating Continuous Delivery at Scale

Facilitation

Rules for Good Documentation!!• Be sure to include the context for what you’re doing !• Speak at a layman’s level !• Always approach documentation as though the reader

has no knowledge of what you’re doing !• Remember that terminology may need to be described

as well !

Page 24: Facilitating Continuous Delivery at Scale

Facilitation

DONT DO THIS

Page 25: Facilitating Continuous Delivery at Scale

Facilitation

DONT DO THIS

Page 26: Facilitating Continuous Delivery at Scale

Facilitation

YES! DO THIS!

Page 27: Facilitating Continuous Delivery at Scale

Facilitation

We’re Hiring.