If you don't invest in infrastructure, don't invest in microservices
How do you find a service?
Smart Client
- wrapper around
requests
- same API
- accepts 'service://identity/teams' urls
- works in all environments
- reties failed GET/PUT/DELETE requests
- runs HTTP requests asynchronously, if you want
Atlas is their service to register services
- uses HAProxy
- uses HAProxy ACLs; directs traffic based on URL/headers/etc.
Sidecar runs on every host
- all service calls flow through localhost via sidecar
How do you make building services easy?
Smart Service
- built on top of Flask and Flask RESTful
- Runscope/healthcheck
- open source health monitoring microservice
- can import settings from atlas
- can auto-generate service skeletons
- fully runnable service running after ~1 minute
- reduces congnitive overhead
What happens when you have so many services?
Automate everything!
- setting up servers, use configuration management (eg, puppet)
- invest in devops
You become language agnostic
- anything that talks HTTP can work; it's the common language
No shared databases
- schema changes force applications that share the database to become tied to each other
Makes deploying code really easy, after investing in all the infrastructure
Test and monitor your APIs
- deployments automatically trigger API tests
So many deployments every day - very empowering
They try to keep all APIs backwards-compatible