3.1.1 第一步:理解问题并确定设计的边界
深入思考并提几个问题来厘清需求和假设。这一点非常重要。
工程师最重要的技能之一就是问正确的问题,做合适的假设,并收集构建系统需要的所有信息
问什么样的问题呢?问问题是为了准确理解需求。你可以从下面这些问题开始:•我们要构建什么样的具体功能?•该产品有多少用户?•公司预计多久需要扩展系统?预计3个月、6个月和1年后的系统规模是怎样的?•公司的技术栈是什么?有哪些现有服务可以直接用来简化设计?
第二步:提议高层级的设计并获得认同
在白板或者纸上用关键组件画出框图,可能包括客户端(移动端/Web端)、API、Web服务器、数据存储、缓存、CDN、消息队列等。
3.1.3 第三步:设计继续深入
第四步:总结
•故障场景(服务器故障、数据包丢失等)值得讨论。•运维问题值得讨论。比如,怎样监控指标和错误日志?如何发布系统?•怎样应对下一次扩展也是一个重要话题。举个例子,如果你现在的设