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