As a company, Verizon networks and infrastructure touch nearly 70% of global internet traffic every single day. The many datacenters that support this - and many other large-scale Verizon services - are our lifeblood. This talk provides a glimpse into the work being done to reimagine the way in which we design and operate the software that runs our internal computing grids, and how we enable a large body of development staff to ship jobs and services to the grid every single day. We’ll cover how Consul and Vault make for invaluable building blocks in modern distributed systems, and highlight the importance of empowering teams through well designed infrastructure systems.
19. 4 YEARS AGO.
Pretty typical configuration management.
Centralized Chef servers.
Lots of unmaintainable Ruby.
Ruby that generates Ruby which is
evaluated at runtime (yikes!).
Developer contract is non-existent.
Operations need to understand every
application in detail.
Code complete to finally deployed
took around two weeks.
21. 3 YEARS AGO.
Implemented immutable machine images
with Hashicorp Packer.
Developer / Ops contract becomes an RPM/
DEB file along with two YAML manifests.
One manifest for provisioning.
Another for runtime deployment setup.
Drive the entire release workflow from
source repositories.
Orchestrated with many linked Jenkins jobs
and schedules.
Code complete to finally deployed took
around 40 minutes.
23. TODAY.
Developer / operations contract is just a
linux container.
Repository contains a YAML manifest.
Realization that placement and
orchestration are entirely separate.
Intelligent and fully automated cleanup.
Application dependency management.
Automated traffic bleeding.
Integrated alerting with prometheus,
general notifications with slack or email.
Code complete to deployed takes
around 5 minutes.
27. GOALS.
System elements should be awesome at
just one thing.
Reduce system complexity by increasing
responsibility of engineering teams.
Break it, you bought it.
All application specifications are
checked into source control.
Focus on orchestration, not placement.
Force automation in every aspect of work
Manual access to systems are a crutch
that enables automation avoidance.
31. - name: hello world
type: job
description: >
mindlessly prints hello
world to the console for
five minutes
schedule: hourly
retries: 2
expiration_policy: >
retain-latest-two-major
dependencies:
- ref: example@3.1
unit type
job stuff
33. - name: howdy
type: service
description: >
always responds with
hello world
ports:
- default->8080/http
expiration_policy: >
retain-latest-two-major
dependencies:
- ref: foobar@3.1
unit type
service stuff
48. LIFECYCLE.
Various cleanup strategies
Graph pruning
Explicit deprecation cycles
User selected policies for versions
Retain last two major
Retain last two minor
Retain latest
Retain always
Eliminates the “Do we still need this?”
conversations between ops and
development.
- name: hello world
type: job
description: >
mindlessly prints hello
world to the console for
five minutes
schedule: hourly
retries: 2
expiration_policy: >
retain-latest-two-major
dependencies:
- ref: example@3.1
49. TL;DR.
Automate everything. Your future sanity depends on it.
Define concrete protocols at system integration points; favor machine verifiable
protocols where possible.
Your path to success involves people. Listen, learn and be open for criticism.
Consul & Vault provide building-block functionality that just works.
Never settle for mediocre tools.
Know when buying is better than building, but don’t be afraid to build
if it adds value.