时间和预算是约束的基本条件。
技术清单,现有系统的互操作性(兼容性),目标部署平台,技术成熟度(保守),开源技术,供应商关系(阿里云,还是AWS),过去的失败,内部知识产权
团队规模,技能,团队扩展的速度,咨询和培训,运维团队的技能
企业战略的影响,办公室政治的影响
约束条件也是有优先级的。
编码标准和规范,自动化单元测试,静态分析工具
1)分层策略,如UI组件里没有数据访问的逻辑
2)业务逻辑的位置:
3)高内聚、低耦合:解耦合可以推迟技术决策的时间
4) 无状态组件:可伸缩性的瓶颈
5)存储过程:爱恨交加
6)域模型:面向对象的丰富程度
7)http会话的使用程度:少用
8)始终一致和最终一致: 一般趋向于数据的最终一致性
9)不/使用ORM
10)依赖注入