基本开发原则
* 业务
o 非常熟悉PRD + UC + domain + 业务流程
o 熟悉业务的商业目标
o 熟悉业务的前因后果
o 熟悉业务的未来走向
o 熟悉和周边关联业务关系
o 明确划分业务服务的分界线
o 在满足业务的通用性、长期稳定性的前提下,尽量简化业务服务使用者(前端业务系统)的工作。
* 设计原则
o 简单
o 利用一切可利用的资源
o 少造轮子
o 28原则
o 重眼前,轻半年(要看业务的稳定性)后,但要考虑
* 系统设计实现
o 通用
+ 细化的domain模型
# 优化的数据库设计
# 通用字段设计:feature + option
# 必要的冗余字段
# 稳定字段和常变字段的分离
# 分库分表的考虑
# 读写分离
# 数据分析部门的考虑:gmt_create + gmt_modified + status
+ 细化的系统内、外的交互过程
# 同步、异步考虑
# 模块划分清晰
# 各模块职责独立,稳定
# 各模块的依赖清晰,尽量单向
+ 细化的状态迁移过程
# 状态的合并还是分解
# 状态机的使用
+ 周全的部署方式、结构
# 满足服务依赖原则
* 上可依赖下,上可跨级依赖下
* 下不可依赖上
* 同级可依赖,不推荐,不能有循环依赖
* 使用notify和页面依赖不限
* 下也等于高级别应用,上也等于低级别应用
# 考虑scm和sa的便利性
# 支持容灾
+ 易用的代码工程
# package按照模块划分
# client domain core server等
+ 严格的版本控制
+ 易用、合理的服务接口
# 面向业务的API
# 粗粒度和细粒度的平衡
# 通用更新和查询谨慎使用
+ 框架选型
# 选择成熟框架
# 新引入的技术要经过完善的验证
# 考虑法律风险
# 考虑以后的可维护性
+ 日志处理
# 淘宝通用日志
* xxx-debug.log 重启后清空,内容同xxx.log
* xxx.log 日切换
* xxx-filter.log 性能日志,日切换
# 必须记录堆栈
# 控制日志不要太大
+ 事务的合理使用
# 减少事务使用,减少事务段的操作个数和时间
# 最终一致
# 乐观锁的使用
o 安全
+ 保证数据完整性
+ 多线程环境的处理,保证数据一致
+ 必要的权限限制或安全日志,保留证据
o 性能
+ 性能日志的记录:Profiler + 自动拦截
+ 线程内cache
+ 读/写缓存的使用
+ 超时时间的合理设置
+ 数据库连接池的合理设置
+ 查询类接口的选择性设置
+ jvm相关优化
o 易维护
+ 重要过程的日志记录
+ 程序流程配置,比如ladder
+ 注释
+ 监控点
+ 数据订正、维护系统
* 业务
o 非常熟悉PRD + UC + domain + 业务流程
o 熟悉业务的商业目标
o 熟悉业务的前因后果
o 熟悉业务的未来走向
o 熟悉和周边关联业务关系
o 明确划分业务服务的分界线
o 在满足业务的通用性、长期稳定性的前提下,尽量简化业务服务使用者(前端业务系统)的工作。
* 设计原则
o 简单
o 利用一切可利用的资源
o 少造轮子
o 28原则
o 重眼前,轻半年(要看业务的稳定性)后,但要考虑
* 系统设计实现
o 通用
+ 细化的domain模型
# 优化的数据库设计
# 通用字段设计:feature + option
# 必要的冗余字段
# 稳定字段和常变字段的分离
# 分库分表的考虑
# 读写分离
# 数据分析部门的考虑:gmt_create + gmt_modified + status
+ 细化的系统内、外的交互过程
# 同步、异步考虑
# 模块划分清晰
# 各模块职责独立,稳定
# 各模块的依赖清晰,尽量单向
+ 细化的状态迁移过程
# 状态的合并还是分解
# 状态机的使用
+ 周全的部署方式、结构
# 满足服务依赖原则
* 上可依赖下,上可跨级依赖下
* 下不可依赖上
* 同级可依赖,不推荐,不能有循环依赖
* 使用notify和页面依赖不限
* 下也等于高级别应用,上也等于低级别应用
# 考虑scm和sa的便利性
# 支持容灾
+ 易用的代码工程
# package按照模块划分
# client domain core server等
+ 严格的版本控制
+ 易用、合理的服务接口
# 面向业务的API
# 粗粒度和细粒度的平衡
# 通用更新和查询谨慎使用
+ 框架选型
# 选择成熟框架
# 新引入的技术要经过完善的验证
# 考虑法律风险
# 考虑以后的可维护性
+ 日志处理
# 淘宝通用日志
* xxx-debug.log 重启后清空,内容同xxx.log
* xxx.log 日切换
* xxx-filter.log 性能日志,日切换
# 必须记录堆栈
# 控制日志不要太大
+ 事务的合理使用
# 减少事务使用,减少事务段的操作个数和时间
# 最终一致
# 乐观锁的使用
o 安全
+ 保证数据完整性
+ 多线程环境的处理,保证数据一致
+ 必要的权限限制或安全日志,保留证据
o 性能
+ 性能日志的记录:Profiler + 自动拦截
+ 线程内cache
+ 读/写缓存的使用
+ 超时时间的合理设置
+ 数据库连接池的合理设置
+ 查询类接口的选择性设置
+ jvm相关优化
o 易维护
+ 重要过程的日志记录
+ 程序流程配置,比如ladder
+ 注释
+ 监控点
+ 数据订正、维护系统