microservices for the rest of us
TRANSCRIPT
Microservices for the rest of usLessons you can (safely) ignore from Netflix, Amazon, and other unicorns
datawire.io 2
datawire.io 3
Amazon, 2008
Hailo, 2014
Netflix
What do you need if you’re building the Death Star?
Use the Force.
What’s the Force?
backpressure rate limiting retries timeouts asynchronous RPC asynchronous one way messaging
circuit breakers service discovery code packaging continuous deployment scheduling …
I don’t need The Force to build my
microservices architecture!
Adopting Microservices
Chewbecca The Force
Number of services at Uber over time
Microservices = Service Oriented Development
Developer happiness, not architecture
(Google “smiling developers”)
Experiment and iterate
(don’t try to do all your design upfront)
Make microservices cheap — the developer workflow
Code a microservice Test the microservice Run and deploy the microservice Integration test Debug
Code
You can use a plain ol’ webapp for the most part. HTTP and JSON are Good Enough (tm).
Test
Test your webapp / RESTful APIs using your standard testing tools.
Run and Deploy
Continuous deployment is critical for rapid iteration Docker on Mesos, k8s is the trendy standard EC2 works, too!
Integration Testing
Complete Integration testing before production requires massive investment in complex CI/CD Minimize the impact of a bug blowing up production
Debugging
Find and fix problems quickly Integration bugs are the hardest to root cause
Make microservices cheap — the developer workflow
Code a microservice Test the microservice Run and deploy the microservice Integration test Debug
One more thing …
Topology: the way constituent parts are interrelated or arranged.
Traditionally, architects defined topology.
Traditional Topology Management
Client
DNS
LB
Server
Server
ServerRouting table is (relatively) static. Routing policy is global.
resolve
traffic
Now, developers can define topologies.
Load Balancing
Client
Discovery Service
Service
ServiceRouting table is realtime. Routing policy is local.
routes
traffic
heartbeats
Smart endpoint
Data Processing
Store
Discovery
Transform
Transform
Ingest
Ingest
Ingest
Summary
Build topologies: Service discovery and routing Code / test: Webapp framework, HTTP, JSON Run and deploy: Continuous deployment pipeline Integration test: Software resilience or hard core CI Debugging: logging
Demo
datawire.io 29
https://www.datawire.io https://www.datawire.io/careers/
Questions [email protected]
@rdli