Traditionally, a tug of war has existed between service reliability and engineering velocity. Increasing speed to fuel product innovation has meant making tradeoffs in reliability.
Netflix standardizes common functionality, like service discovery, configuration, metrics, logging, and RPC across services. This frees teams to focus on the unique business value of their service. It also enables us to evolve and maintain platform components independently from individual services.
Even with a standard set of components, service owners still need to combine these disparate elements into a coherent platform. We reduce this friction by providing a preassembled platform where teams only need to provide their business logic, and not worry about assembling the service from scratch.
We can further streamline the service lifecycle by providing automation and tooling for development, testing, deployment and operations. We provide "one click" solutions to automatically generate the associated pipelines, machinery, and infrastructure that's required to run their service reliably in production.
These patterns, while described in a Netflix context, can be broadly applicable to increase both reliability and velocity of your microservices architecture.
22. Netflix Edge
API
Backend
Service A
Backend
Service B
Backend
Service C
Backend
Service N
…
PROBLEMS:
Not customizable: 1 service for all devices
Slow rate of change: centralized service, 1 code push a month
23. 100s of services
Customized for each
client
Pushing multiple
times/week
TV
iOS
Android
Windows
Browsers
Discovery
Playback
Non-
member
…
Backend
Service A
Backend
Service B
Backend
Service C
Backend
Service N
…
Clients Standalone Services Edge API Backend Services
26. Q: Can we achieve velocity &
reliability with client engineers?
A: Try Platform as a Service
27. –Wikipedia
“Platform as a service (PaaS)… allows customers to
develop, run, and manage applications without the
complexity of
building and maintaining the infrastructure and
platform…”
What is a Platform as a Service (Paas), Anyway?
28. Our PaaS to Achieving Reliability & Velocity
1. Standardized components
2. Preassembled platform
3. Automation and tooling
42. • Use non-standard
components/architecture
• Fosters innovation
• Reintegrate changes back
into platform
Freedom Responsibility&
• Use new technologies
judiciously
• Don’t develop alone in a
vacuum
• Increases burden to the
rest of the company
48. Most engineers aren’t experts
on how a microservice is built,
they just want a pre-built
microservice that works
49. Microservice Assembly Instructions
Read documentation
Copy/paste (wrong) source code
Which versions of dependencies?
How to initialize all components?
How to configure all components?
Missing components
…
78. Solution: Provide First Class Mocks
RPC Discovery Registration Runtime OS Configuration
Metrics Logging Tracing Dashboards Alerts
Stream
Processing
Preassembled Platform
79. Platform Testing API
• Just like a runtime API, need a testing API
• Provide mocks interface for components
• Gets platform out of the loop for providing mocks
83. Deploy and Manage Services
• Pre-configured pipelines for publish, canary, deployment and
cleanup
• Single command deploy to any stack
• Integration for automated canary analysis
• Pre-configured auto scaling
84. Deploy and Manage Services
• Pre-configured pipelines for publish, canary, deployment and
cleanup
• Single command deploy to any stack
• Integration for automated canary analysis
• Pre-configured auto scaling
91. Deploy and Manage Services
• Pre-configured pipelines for publish, canary, deployment and
cleanup
• Single command deploy to any stack
• Integration for automated canary analysis
• Pre-configured auto scaling
93. Deploy and Manage Services
• Pre-configured pipelines for publish, canary, deployment and
cleanup
• Single command deploy to any stack
• Integration for automated canary analysis
• Pre-configured auto scaling
97. Deploy and Manage Services
• Pre-configured pipelines for publish, canary, deployment and
cleanup
• Single command deploy to any stack
• Integration for automated canary analysis
• Pre-configured auto scaling