Beginner's guide to scaling systems.

Systems design is the use of computer engineering principles to build large scale distributed systems. It involves converting business problems and requirements into technical solutions.

Senior engineers use system design patterns to make reliable, scalable and maintainable systems.

10 tips/terms used by engineers when designing systems

  1. Vertical scailing
    • Optimise process and increase throughput using the same resource.
  2. Preprocessing using cron job
    • Preparing beforehand at non-peak hours.
  3. Backup servers
    • Keep backups and avoid single points of failure.
  4. Horizontal scailing
    • Hire more resources.
  5. Micro Service Architecture.
  6. Distributed Systems (Partitioning)
  7. Load Balancing
  8. Decoupling
  9. Logging and metrics calculation
    • Analytics
    • Auditing
    • Reporting
    • Machine Learning
  10. Extensibility
  11. Low level system design

Simply

  1. Order Overload -> Recruitment
  2. Complexity -> Separation of concerns
  3. Mishaps -> Fault tolerance

High level design

  • Deploying on servers figuring out how to systems will be interacting with each other

Low level design

  • The system design has a lot more to do with how you're actually going to code like making classes making objects the functions the signatures.
  • These things are pretty important if you are a senior engineer. And even if you're not if you want to go to the senior engineering level, you need to know about how do you write efficient and clean code blocking.

References

+ 따끈한 최근 게시물