10 Lessons learned over years
1. Monolyth development and release process -> Microservices!
- Service-oriented architecture (SOA)
- Single-purpose primitive
- Connected w/ APIs
- Highly decoupled "Microservices"
Two pizza teams: as large teams as you can feed them with 2 big pizzas! Benefits: * decentralized * autonomy * agility * accountability * ownership
2. DevOps Teams
3. Self-service Tools
- technology agnostic
- encourage best practices
- single-purpose services
Deployment tool: Apollo - no downtime deployments, health tracking, versioned artifacts and rollbacks.
4. Continuous Delivery
Pipelines:
- continuous delivery,
- automated release process,
- faster & more reliable,
- adopted virtually by all teams.
Delivery pipelines: build -> test -> deploy
Thousands of teams x Microservice architecture x Continuous Delivery x Multiple Env = Millions of Deployments !
5. Pessimistic Deployments
Release pipelines: Source -> Build -> Staging -> Production
6. Automated testing
- integration tests
- load/perf tests
- other tests
7. Optimize ECT (Edit-Compile-Test) Loop
8. Monitor Everything
9. Measure Everything
- data culture
- business meeting
- metrics decks: feature adaption, segment growth, funnel analysis, cost structure
10. Listen to Customers
- ask them what they want
- get feedback
- correct course if needed
Links
https://www.allthingsdistributed.com/2006/11/working_backwards.html