背景介绍
随着工作经验的增长,发现无论是基于现有系统的重构技术选型,还是开发新系统的技术选型,都需要从需求,成本,风险三方面进行考虑。下文是具体的技术选型思路分享。
需求
业务需求
将系统进行原型分析,输出界面原型(Axure)文档,依据原型分析出系统所包含的功能点,各个功能之间的交互方式。以此来作为技术选型的参考。
技术需求
需要考虑如下内容:
1、系统可配置
包括数据源配置,数据库连接池配置,集群配置,事务配置,ORM映射等,此时要考虑到可以满足 上述内容的技术,比如ssh,springmvc+spring+hibernate,tomcat+nginx,数据库集群
2、系统日志
日志的记录方式,文件存储还是数据库存储,本地存储还是远程存储。(log4j,自定义日志)
3、部署方式
分布式部署,独立服务器部署,集群部署,云部署等
4、通信方式
消息通信,webservice通信,远程过程调用
5、现有系统兼容性
技术引入后是否对现有功能造成影响,是否可以并存
6、历史数据处理
历史数据的转移和清理
经过业务需求和技术需求的分析,基本可以定出一套甚至多套方案,接下来就可以从风险和成本角度确定最终的方案。
风险
1、性能
并发量
同时支持多少次的访问,如何控制并发量数量,如何优化并发数量。
处理速度
接受到请求后,处理是否及时,是否可以满足系统对处理速度的要求
系统资源消耗
服务器cpu,memory使用情况
2、异常处理(健壮性、稳定性)
3、数据一致性保证
事务,数据校验,安全验证,逻辑同步,回滚机制
4、其他情况
网络,自然灾害
5、成本
以上内容需要给出量化指标和预研报告。
成本
1、学习成本
了解团队成员基本情况,采用某种技术后,是否容易学习和入手使用,需要给出量化指标。
2、维护成本
3、推广周期
4、人才培养
5、服务器采购
PS: