1. Optimize process and increase throughput using same resource - Vertical Scaling
  2. Prepare beforehand before non peak hours - Preprocessing, Cron Job(scheduled)
  3. Master slave arch, Keep backup and avoid single point of failure - resilience / Backup
  4. Get more resources - Horizontal scaling
  5. Microservices - division of tasks inside same system, an architectural pattern that structures an application as a collection of loosely coupled, independently deployable services
  6. Distributed system - a network of independent computers that collaborate over a network to function as a single, cohesive unit. By sharing resources, processing power, and storage, they achieve massive scalability and high availability
  7. Load Balancer - acts as a reverse proxy and traffic cop, sitting between client devices and backend servers. It distributes incoming network traffic across multiple servers to ensure high availability, prevent server overloads, and minimize latency.
  8. Decoupling - separates components so they can operate independently. By removing direct dependencies, this approach improves fault tolerance, scalability, and maintainability, allowing individual services to be updated or scaled without affecting the rest of the system.
  9. Logging and Metrics - the practice of extracting or calculating numerical time-series data from log entries (e.g., counting errors, tracking latency) or recording specific system statistics.
  10. Extensible - In software and systems design, it refers to a system or program designed to allow for future growth, meaning new features can be added without fundamentally changing the core architecture.