- cognitive load
- unintended side effects
- releasing everything when you changed one thing
- scaling due to load on one component means you need to scale all components
- all must use the same framework/libraries/stack
- modular code
- clear boundaries within code for areas of responsibilities
Fancy graph showing size of project over product/market fit When to break out a microservice:
cart before the horse?
- Separating areas of concern
- Scaling components independently
- Separate functions
- Python modules (django apps)
- Python packages/libraries/repos
- Microservices
- Data in its area of concern
- Data stores (databases)
- Communication path to the service
- Scaling concerns
- transparency Logging/Alerting/Monitoring/Metrics (transparency of health of system)