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
- Vertical scailing
- Optimise process and increase throughput using the same resource.
- Preprocessing using cron job
- Preparing beforehand at non-peak hours.
- Backup servers
- Keep backups and avoid single points of failure.
- Horizontal scailing
- Hire more resources.
- Micro Service Architecture.
- Distributed Systems (Partitioning)
- Load Balancing
- Decoupling
- Logging and metrics calculation
- Analytics
- Auditing
- Reporting
- Machine Learning
- Extensibility
- Low level system design
Simply
- Order Overload -> Recruitment
- Complexity -> Separation of concerns
- 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
'System Design' 카테고리의 다른 글
MSA(마이크로서비스 아키텍처)의 장점 (0) | 2020.09.04 |
---|---|
메시지 큐는 언제 사용할까? (1) | 2020.09.04 |
수평적 확장 vs 수직적 확장 (0) | 2020.09.04 |