제가 공부하는 사이트에는 주요 5가지로 설명하고있어서 댓글로 쉐어합니다 시스템 설계의 목적: 가능한 최선의 방법으로 시스템의 기능과 요구 사항을 지원하는 시스템을 어떻게 설계합니까? 시스템은 시스템 수준 설계의 여러 다른 차원에서 "최적"일 수 있습니다. 이러한 측정기준에는 다음이 포함됩니다. 확장성: 추가 로드를 처리할 수 있고 여전히 효율적으로 작동하도록 설계된 시스템은 확장 가능합니다. 신뢰성: 시스템이 예상대로 기능을 수행할 수 있고, 사용자 실수를 허용할 수 있으며, 필요한 사용 사례에 충분하고, 무단 액세스나 남용도 방지할 수 있다면 시스템은 신뢰할 수 있습니다. 가용성: 시스템이 기능을 수행할 수 있으면 시스템을 사용할 수 있습니다(가동 시간/총 시간). 참고 안정성과 가용성은 서로 관련되어 있지만 동일하지는 않습니다. 신뢰성은 가용성을 의미하지만 가용성은 신뢰성을 의미하지 않습니다. 효율성: 시스템이 기능을 신속하게 수행할 수 있으면 시스템이 효율적입니다. 대기 시간, 응답 시간 및 대역폭은 모두 시스템 효율성을 측정하는 데 관련된 측정 항목입니다. 유지 관리성: 원활하게 작동하기 쉽고, 새로운 엔지니어가 이해하기 쉽고, 예상치 못한 사용 사례에 대해 수정하기 쉬운 경우 시스템을 유지 관리할 수 있습니다. Purpose of System Design: How do we architect a system that supports the functionality and requirements of a system in the best way possible? The system can be "best" across several different dimensions in system-level design. These dimensions include: Scalability: a system is scalable if it is designed so that it can handle additional load and will still operate efficiently. Reliability: a system is reliable if it can perform the function as expected, it can tolerate user mistakes, is good enough for the required use case, and it also prevents unauthorized access or abuse. Availability: a system is available if it is able to perform its functionality (uptime/total time). Note reliability and availability are related but not the same. Reliability implies availability but availability does not imply reliability. Efficiency: a system is efficient if it is able to perform its functionality quickly. Latency, response time and bandwidth are all relevant metrics to measuring system efficiency. Maintainability: a system is maintainable if it easy to make operate smoothly, simple for new engineers to understand, and easy to modify for unanticipated use cases.