- 目标
- 分类
- 思路
- 逻辑思维
- 方法: 5W2H
- 建模:
- 中心 # 调整抽象领域和层次(视问题决定)
- 自上而下 # 问题明确,展开
- 自下而上 # 内容分类、剪枝、归纳
- 分解
- 经验
- 优秀的产品都有全局把控感(confluence, jira)
- 设计思想多源自: 操作系统、编译器、函数式
- 深入一线(面对客户)
- 思考全面, 全局
- 考虑需求本质,考虑上下游全局
- 想清楚再行动
- 过程
- 发掘(discovery)
- 价值定位(价值驱动)
- 客户体验梳理和设计
- 愿景
- 干系人
- 电梯演讲收敛
- 定义(define)
- 用户旅程,业务流程
- 事件风暴 → 映射技术 → 架构
- 设计(design)
- 总体
- 识别问题域, 归纳服务, 上下游关系
- 架构图, api, 技术栈
- 提升方向, 改进
- 迭代
- 价值/成本分布图
- milestone演进
- 业务技术/需求拆解全景图(白板贴标)
- mvp(minimum viable product最小可行计划)迭代计划
- 开发(develop)
- 度量, 质量指标
- 工具选择, 规范
- 架构守护,治理
- 实施策略
- 交付
- 产品生命周期管理
- 角度决定设计
- 找到不动点
- 如对cache的设计
- 业务角度
- 选择简单易用的缓存框架
- 有人会用,学习成本别太高
- 关注数据模型结构设计
- 缓存更新真麻烦
- PaaS角度
- 声明式使用,配置文件设置
- 缓存对比,选择强大且稳定的
- 存取接口设计,方便易用
- 数据变动监听,自动刷新缓存
- 平台角度
- 缓存服务器集群方式
- 存储空间监控
- 命中率监控
- 避免缓存集中失效引起雪崩
- 维护
- 设计时考虑扩展性
- 设计能够监控的应用
- 版本升降 # 代码仓库
- 业务
- 防重
- 如重复提交,重复扣减,重复支付(异构系统无法防重,用退款处理)
- 防重key, 防重表
- 幂等性
- 流程要抽象
- 状态与有限状态机
- 订单系统
- 状态多时用状态机驱动
- 正向状态(待付款、待发货、已发货、完成)
- 逆向状态(取消、退款)
- 状态轨迹 # 跟踪和记日志,可回溯
- 并发修改,状态变更有序,状态变更消息有序
- 后台系统操作可反馈
- 后台系统审批化
- 文档注释
- 备份
- 经济学原理类比
- 前端
- 减少DNS查找
- 减少对象
- 页面布局少,图片合并。对象不要过大,减少到浏览器并发连接数
- 后台系统操作可反馈
- 文档和注释