DigitalOcean transitioned from inconsistent deployment tools to using Kubernetes for container orchestration. This improved their ability to deploy new services from hours to minutes. They customized Kubernetes by focusing on stateless services, declarative deployments, and abstracting operational concerns. They created "docc" to simplify Kubernetes usage. It allows describing applications and infrastructure through manifests. Docc helped deploy 50 applications in 6 months and powered an internal hackathon. Lessons included keeping up with Kubernetes' rapid changes and automating cluster management. They will invest in service meshes, network policies, and secure secret storage.
5. digitalocean.com
Deployment
Proliferation of deployment tooling lead to inconsistent
deployment capabilities from service to service
Software deployment via configuration management took
hours and was quite unreliable
Writing the code to deploy new services could take up to
as long as writing the software itself in the worst case
“Total Ownership” model meant that every team needed to
be experts in configuration management as well
6. Orchestration focused on servers rather than services
Mismatch how software was run at various stages of the
lifecycle from developer laptops to production servers
Dependencies became increasingly intertwined making
software upgrades difficult at best, near impossible at worst
Lack of consistent observability across services lead
engineers needing direct access to the servers
digitalocean.com
Operability
8. Ability to experiment with new features and services in
matter of hours, not in days or weeks
Improving visibility into the impact a given feature or service
has on the whole
Empower teams to deliver their work from end-to-end
independent of other teams
Capability to quickly scale our services to be able to meet
the ever-increasing customer demand digitalocean.com
Business needs
11. API-driven for automation
Community engagement
Ease of operability
First-class container support
Feature-compatibility with our existing tooling
Production-grade
digitalocean.com
Evaluation criteria
12. Built from the ground up to be API-first
Extremely engaged community and unparalleled team
Quite involved to deploy and manage, but built with Go
Built on 10 years experience running containers at Google
Rich feature set that surpassed our existing tooling
Ready for prime time
digitalocean.com
How Kubernetes stacked up
16. Curate subset of Kubernetes features:
Smaller feature set makes for a simplified user experience.
Focus on stateless services:
Self-healing, automated remediation of service disruptions.
Declarative deployments:
Each deploy is separate and immutable.
Abstract operational plumbing:
Plugin to existing alerting, logging & metrics infrastructure.
digitalocean.com
Guiding principles
18. Enables users to describe their application:
number of instances, ports to expose, environment variables
to pass in, resource usage, etc.
Provides a way to configure the infrastructure plumbing:
How to collect metrics, what and where to alert on, how the
service should be made available to the outside.
Drives accountability and provides insight by requiring each
service to have a maintainer listed.
digitalocean.com
docc requires a manifest
27. 50 applications deployed to production in past 6 months
Reduced time-to-deploy from days and weeks to hours
Service coverage across all of our datacenters
Powered 2-day internal hackathon:
a. 154 docc deploys during that time
b. 16 new applications on docc
digitalocean.com
Accomplishments so far
28. Kubernetes moves really fast, find ways to keep up
Get involved in the community early
Invest heavily into automation for managing clusters
Bring in the professionals early to kickstart your journey
Build on top of Kubernetes to make it your own, it was
made for that
This is great company to be in
digitalocean.com
Lessons learned
29. Service mesh using linkerd
Network Policies using Calico
Secure secret storage using HashiCorp Vault
digitalocean.com
Investing in the future
DigitalOcean is the cloud for developers. We’re simplifying the complexities of infrastructure by providing a seamless experience for growing teams and businesses to deploy, manage, and scale their applications.
We have more than 750,000 registered users today and are on track to surpass the 1 million user milestone in 2017.
Starting out we knew we did not want to build something from the ground up, because we knew that there were a lot of options on the market.
Came up with a list of must-haves to use as a criteria to evaluate each and every option against for making the final decision.
The more we learned about Kubernetes, the more we liked the concepts and ideas behind it.
It became obvious to us that “this was the future!”.
Unsurprisingly, we picked Kubernetes.
Informed by our experience on how engineers interacted with our other internal tools, we decided that we should build a tool that did more for the users.
The outcome we really wanted to avoid, so we needed to do some thinking.
docc stands for DigitalOcean Control Center, but we’ve internally simply began calling it docc
Here’s a very basic application manifest example
Exposing a service
Adding an Ingress
Ultimately it boils down to avoiding analysis paralysis for your teams.
Make it easy to do the right thing.