The

DevOps 2.0 Toolkit


Viktor Farcic


@vfarcic

TechnologyConversations.com

CloudBees.com

Facing the truth


Agile changed the way we develop software

... but it failed to change how we deliver it

What is DevOps (1.0)?


A cross-disciplinary community of practice dedicated to the study of building, evolving and operating rapidly-changing resilient systems at scale.

What is DevOps (1.0)?


It is as much cultural as technological change

... but not today

Why DevOps 2.0?


DevOps united and automated

... but it failed to change

2.0 introduces a change to processes, tools, and architecture

... and enables continuous deployment and self-healing

The Toolkit


  • Configuration management and provisioning
  • Immutable deployments
  • Service discovery
  • Dynamic proxies
  • Zero-downtime continuous deployment
  • Cluster management
  • Self-healing
  • Centralized monitoring and logging
  • ... and much more

The Toolkit


Everything fully automated without human intervention

Machines take over after a commit to CVS

Configuration Management


  • Manual?
  • SSH?
  • Operators == bottleneck
  • Self-service
  • Self-healing
  • Automated
  • Proactive

Configuration Management


Configuration Management


  • Timeframe changed
  • Scope changed
  • Clusters changed
  • Repeatable, automated, and fast provisioning

Configuration Management

Not for deploying applications

... what to use?

Mutable Deployments


  • Infrastructure hell
  • Unreliable testing
  • Unexpected production behaviour

Immutable Deployments


  • Reliable
  • Works everywhere the same
  • Why aren't we all doing it?

Immutable Deployments


  • VMs are slow
  • VMs use too much resources
  • Containers are too complicated

Docker


  • Immutable
  • Isolation
  • Fast
  • Lightweight
  • Self-sufficient
  • No infrastructure
  • ...

Docker


Does not schedule deployments to a cluster

... what to use?

Cluster Orchestration


  • Pets vs cattle
  • SSH should be illegal
  • Dynamic
  • Elastic
  • Automated
  • Self-healing

Cluster Orchestration


Cluster Orchestration


  • No service/application dependencies
  • It's a cluster, not individual servers
  • Almost instant
  • Scale/descale effortlessly
  • Software Defined Network (SDN)

Cluster Orchestration


We don't know, in advance, where will the services run

... how to configure services?

Service Discovery


  • Where are my services?
  • Static configuration?
  • Service discovery
    • Registry
    • Registration
    • Templating or Networking

Service Discovery

Registry


Service Discovery

Registration & Templating


Avoid coupling

Service Discovery


We have the data, but we do not want to couple and our users do not want to request it from Consul

... how do we make services accessible?

Dynamic Proxy


  • Hardware proxy?
  • Proxy service

Dynamic Proxy


Dynamic Proxy


Now we can reach any service, anywhere

... but how do we deploy without downtime?

Zero-Downtime Deployment


  • Replace the old release with the new one?
  • Rolling updates
  • Blue-green deployment

Zero-Downtime Deployment


Now there is no downtime caused by deployment process

... but there's much more to it than only deployment

Continuous Integration


  • Automated integration flow
  • Merge to main branch often (at least once a day)
  • Fixing failed flow has the highest priority
  • Unclear status
  • Not a "production ready" process

Continuous Delivery


You're doing it when...

  • you are already doing continuous integration
  • your software is deployable throughout its life-cycle
  • your team prioritizes keeping the software deployable
  • anybody can get fast, automated feedback on the production readiness
  • you can perform push-button deployments

Continuous Delivery


Means that...

  • every commit to VCS that passed the flow can be deployed to production
  • pressing the button to deploy to production is the only manual action

CD Tools


  • Ability to define (sometimes) complex flows
  • Flows defined as code
  • Team's autonomy
  • Decentralization

CD Tools


Logging


  • A way to parse data and send them to a central database in near real-time.
  • The capacity of the database to handle near real-time data querying and analytics.
  • A visual representation of the data through filtered tables, dashboards, and so on.

Logging

Tools


... or one of many other options

Metrics


  • A way to get hardware and software metrics
  • Without coupling with services
  • A way to query metrics
  • A way to visualize metrics
  • A way to alert based on metrics

Tools




What Else?

  • Self-healing
  • Architecture
  • Culture
  • ...