High level and low level design
High level design
- optimize processes and increase throughput by using same resources
- preparing beforehand daily at non peak hours
- preprocessing adn cron jobs
- make system resilient - recovering form failures quickly
- keep backups and avoid single point of failure
- hire more resources
- microservice architecture
- each service performs specific task - decoupling
- distributed systems
- load balancer
- system should be
- scalable
- fault tolerance
- extensible - easily modifiable to add new functionality
- decoupling - separation of responsibility, dividing into small systems
- logging and metrics
Low level design
- classes
- uml
- functions
- signatures