system-design

系统涉及小抄

系统涉及的15个核心概念步骤

Requirement Gathering 收集需求

    1. 整理功能性与非功能性需求(Functional vs Non-Functional)
    1. 梳理用户场景故事(Define user stories)
    1. 指定优先级(Set priority)

System Architecture 系统架构

    1. 定义系统组件(Define system components)
    1. 选择架构类型(Choose architectural styles)
    1. 考虑系统可扩展性和可维护性(Consider scalability, maintainablity)

Data Design 核心数据设计

    1. Define data models and schemas
    1. Choose proper database
    1. Define retention target

Domain Design

    1. Break down system into business domains
    1. Encapsulate functionality within modules
    1. Minimize dependencies among domains

Scalability

    1. horizontal & vertical scaling
    1. Load balancing
    1. Cold start-up

Reliability

    1. Fault tolerance
    1. Monitoring and alerting
    1. Recovery plans

Availability

    1. Data replication
    1. Minimize system downtime
    1. Disaster recovery

Performance

    1. Define latency and throughput target
    1. Optimize data structures and encoding
    1. Caching strategies

Security

    1. Authentication & Authorization
    1. Data encryption
    1. Sensitive data storage

Maintainability

    1. Clear code structure and documentation
    1. SDLC management
    1. Evolvable architecture

Testing

    1. Define unit, integration, system tests
    1. Define acceptance tests with the users
    1. Define performance and security tests

User Experience Design

    1. Intuitive, user-friendly user interface design
    1. Design usability tests
    1. Responsiveness

Cost Estimation

    1. Evaluate hardware TCO
    1. Evaluate licensing and subscription fees
    1. Plan for future scalability costs

Documentation

    1. Clear technical documentation
    1. User manuals
    1. External API design and documentation

Migration Plan

    1. Techinical stack compatibility
    1. System interoperability
    1. Data migration

system-design
https://blog.chyidl.com/2024/01/29/system-design/
作者
Yaqing Chyi
发布于
2024年1月29日
许可协议