技术选型的注意事项

技术选型的注意事项

选择你最熟悉的技术
记得看过一篇文章,里面提到一个新项目最好不要使用超过 30% 的新技术,我觉得这有一定道理,因为对于你完全不知道的技术,你不可能控制使用过程中出现的风险。我在技术管理中的向下管理里提起过,任何一位技术 Leader,如果你不能得到下属的技术尊重,你必将受到惩罚。
选择技术时有两个大原则。
第一,要取其长避其短;
第二,要关注技术的发展前景每种技术都是有它特定的适用场景,开发者经常犯的错误就是盲目追新,当一个新语言、框架、工具出现后,特别是开发者自己学会了这种新技术后,就会有种“拿着锤子找钉子”的感觉,将新技术滥用于各种项目。
记住,技术选型是稳定压倒一切。
选择拥有强大社区支撑的开源技术
看一项技术活不活跃,只要去 StackOverflow 这样的网站看看提问的人多不多就知道了。
确保技术前进步伐
选择一个技术的最低标准是,技术的生命周期必须显著长于项目的生命周期。
总的来说,你需要使用你所选择的软件技术,快速地实现应用程序的构建。记住一句话:好的技术栈永远跑在用户需求前面。
从业务端思考
技术选型必须贴着业务来选择,不同业务阶段会有不同的选型方式。
处于初创期的业务,选型的基准是灵活。只要一个技术够用并且开发效率足够高,那么就可以选择它。初创的业务往往带有风险性和不确定性,朝令夕改、反复试错是常态,技术必须适应业务的节奏,然后才是其他方面。
等业务进入稳定期,选型的基准是可靠。技术始终是业务的基石,当业务稳定了技术不稳,那就会成为业务的一块短板,就必须要修正。
当业务进入维护期,选型的基准是妥协。
代码永远有变乱的趋势,一般经过一两年就有必要对代码来一次大一点的重构。
学会从业务端思考。首先我们需要充分地理解业务,理解用户需求,理解当下需要解决的首要问题,以及可能的风险有哪些,再将目标进行分解,进行具体的技术选型、模型设计、架构设计。
假设我们需要解决的核心问题是并发,则可以通过各种缓存手段(本地缓存、分布式缓存),来提高查询的吞吐,会一定程度上需要在数据一致性上做出牺牲
先验证,后使用,重视经验。

如何进行技术选型 

以工作流引擎技术选型为例说明

(一)了解内部情况,确定问题范围
(二)研究外部发展,跟踪业界动态
(三)锁定目标,定义效果
(四)遵循选型标准,做出初步选择
序号选型依据具体内容比较说明
1公司的未来发展与公司的技术架构规划及技术路线相匹配都匹配。
2与开发平台融合符合JavaEE规范,易于与Spring整合都符合J2EE规范,但Activiti5更易于与Spring整合,jBPM5与Spring整合要做大量工作。Activiti5 持久层虽然是采用MyBatis3,但其支持JPA规范的扩展,能够很方便运用Hibernate实现扩展。
3行业标准的支持符合BPMN2.0,尽量兼容其他规范都符合BPMN2.0规范。Activiti对多种流程格式都支持,jBPM5稍弱。
4技术先进性与完整性流程设计开发能力,支持可视化建模快速开发,支持流程快速变更,支持流程版本控制;人工任务处理能力;流程仿真、监控能力。基本平手。Activiti版本更新更频繁,技术跟进及时。
5稳定性、成熟度多线程并发下稳定运行,能适应分布式部署要求,易于测试。测试报告及社区使用显示都足够成熟稳定。
6开源、易用作为开发平台的一个功能插件,必须开源。并且要能快速上手易于学习,相关文档资料齐全,对应技术社区成熟活跃。都为开源,均基于Apache License。JBoss社区名气大,但在工作流引擎方向社区活跃相当。Activiti5更忠于原有业界最流行的jBPM4以前的实现,其概念模型,编程模型等更加容易接受。
7集成整合能力易接入ESB平台,易于集成规则引擎。Activiti能够很好支持规则引擎;jBPM5基于Drools构建,对规则引擎天然支持。在对ESB平台接入方面,Activiti对更多现有ESB平台提供支持,尤其支持我们的ESB选型Mule。
 锁定主要选型后,必要情况要做更多的技术比较:

技术组成

Activiti5

jBPM5

1

数据库持久层ORM

MyBatis3

Hibernate3

2

持久化标准

支持JPA规范

支持JPA规范

3

事务管理

MyBatis机制/Spring事务控制

Bitronix,基于JTA事务管理

4

数据库连接方式

Jdbc/DataSource

Jdbc/DataSource

5

支持数据库

Oracle、SQL Server、MySQL等多数数据库

Oracle、SQL Server、MySQL等多数数据库

6

内部服务通讯

Service间通过API调用

基于Apache Mina异步通讯

7

集成接口

SOAP、Mule、RESTful

消息通讯

8

支持的流程格式

BPMN2、xPDL、jPDL等

目前仅只支持BPMN2 xml

9

引擎核心

PVM(流程虚拟机)

Drools

10

技术前身

jBPM3、jBPM4

Drools Flow

11

所属公司

Alfresco

jBoss.org






posted @   java12  阅读(370)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示