关于SOA服务化
2017-02-10 14:24
239 查看
soa
服务化,SOA,这个诱惑的很多人都想对系统做服务化的改造,但你真的需要服务化吗?
所谓的服务化,是指根据业务的职责划分为多个系统,系统之间的交互以服务的方式进行,这样的好处看起来就是系统的职责变得非常清晰。
但其实呢,服务化并不仅仅是一个纯粹的技术改造,服务化就意味着业务是由多个系统构成,这个时候首先会产生的第一个核心问题是需要有相应的人员来维护,在服务化之前,通常来说模式都是一个系统,所有的开发共同维护一个系统,而服务化拆成多个系统后,就不可能所有的开发再共同维护了,因此做服务化之前,首先要做的第一点是组织结构的调整要对应的准备好,所以其实如果开发人员不多的话,显然是没必要做服务化的,否则连开发的人都不够分,Jeff Dean在有一次的topic上讲到服务化带来的一个好处:easier to have many
engineering offices around the world.
另外,有很多想做服务化的原因是觉得服务化后职责清晰,开发效率更高,但事实上是,服务化后变成了多个系统,很多时候会出现为了实现一个需求,需要改多个系统(尽管服务化本来是希望能减少这种现象,但事实上很难做到),协调多个团队,而在一个系统的情况下,通常是每个开发都为整个系统负责,所以在实现需求时是可以一个开发搞定,这样的效率其实通常是更高的,所以其实我始终认为,服务化了以后整个开发效率是一定程度下降的,但好处是它可以支撑很大规模的开发团队。
所以从上面大家可以看到,服务化是在发展到一定情况下才需要做的,我自己觉得触发要做服务化的主要原因会是这三个:
1. 底层例如数据库连接到达上限系统共用的底层资源在随着机器增加的越来越多时,一定会成为瓶颈,这种情况下服务化会带来帮助,当系统逻辑变简单的情况下,吞吐量自然也比较容易上升,这个时候使用底层资源的机器数自然可以大幅下降。
2. 开发人员规模庞大当开发人员规模变大(100个左右)时,众多人共同维护一个系统会变得不可行,这个时候服务化可以产生巨大帮助,也会成为必须做的事情。
3. 业务多元化,共享的业务逻辑多当业务朝多元化方向发展时,各个业务可能会有很多共享的业务逻辑出现,这个时候服务化会带来帮助,不过通常业务多元化也会自然带来开发人员规模庞大,不过这个方式在逐步发展中也会出现一些问题,但总体来说这种情况下服务化还是必须做的。
当然, 服务化改造还会带来其他一些问题,
如果没有上面的那些原因的话,我的建议都是能不做服务化的话还是尽量不要做。
所以一个架构师在做架构改造的决定时,最重要的是要考虑全面(各种平衡),很有可能架构改造并不仅仅是技术层面的事,并且需要判断架构改造发生的合适时间点。
相关文章推荐
- 关于SOA
- 关于SOA的四个基本观点 from MS
- 关于SOA/CBD/AOP/OO的体会
- 关于SOA
- 关于SOA的7个问题
- 分享关于SOA的非技术性解释及例子
- 关于SOA/CBD/AOP/OO的体会
- 关于SOA您该知道却不愿知道的十件事
- test-关于soa,esb技术
- 关于SOA的基本介绍。来源于IBM DeveloperWorld
- 共享别人的转贴,关于SOA的入门
- 关于大家对SOA理解的问题(刘立恒)
- 关于SOA/CBD/AOP/OO的体会
- 关于SOA模型的建立
- 关于soa的7个问题
- 关于SOA的思考1:过去、现在、未来
- 关于SOA的思考4:SOA平台的实现原理
- [全程建模]关于SOA与新旧概念的一点看法
- IBM DW上关于SOA的规范归纳
- 关于SOA应当知道的十点