system-design
系统涉及小抄
系统涉及的15个核心概念步骤
Requirement Gathering 收集需求
- 整理功能性与非功能性需求(Functional vs Non-Functional)
- 梳理用户场景故事(Define user stories)
- 指定优先级(Set priority)
System Architecture 系统架构
- 定义系统组件(Define system components)
- 选择架构类型(Choose architectural styles)
- 考虑系统可扩展性和可维护性(Consider scalability, maintainablity)
Data Design 核心数据设计
- Define data models and schemas
- Choose proper database
- Define retention target
Domain Design
- Break down system into business domains
- Encapsulate functionality within modules
- Minimize dependencies among domains
Scalability
- horizontal & vertical scaling
- Load balancing
- Cold start-up
Reliability
- Fault tolerance
- Monitoring and alerting
- Recovery plans
Availability
- Data replication
- Minimize system downtime
- Disaster recovery
Performance
- Define latency and throughput target
- Optimize data structures and encoding
- Caching strategies
Security
- Authentication & Authorization
- Data encryption
- Sensitive data storage
Maintainability
- Clear code structure and documentation
- SDLC management
- Evolvable architecture
Testing
- Define unit, integration, system tests
- Define acceptance tests with the users
- Define performance and security tests
User Experience Design
- Intuitive, user-friendly user interface design
- Design usability tests
- Responsiveness
Cost Estimation
- Evaluate hardware TCO
- Evaluate licensing and subscription fees
- Plan for future scalability costs
Documentation
- Clear technical documentation
- User manuals
- External API design and documentation
Migration Plan
- Techinical stack compatibility
- System interoperability
- Data migration
system-design
https://blog.chyidl.com/2024/01/29/system-design/