浅谈服务化和微服务化(上)

chengxunhg 2019-04-03 09:28:39
【摘要】 微服务是近期非常热门的话题,芸芸众生言必谈微服务。但是,在实践过程中,我们发现一些项目,貌似用着微服务的技术,但做出了非服务化的应用,非但没有达到目的,反而徒增了架构的复杂性,让人汗颜。因此,在微服务之前,有必要搞清楚什么是服务化。
微服务是近期非常热门的话题,芸芸众生言必谈微服务。但是,在实践过程中,我们发现一些项目,貌似用着微服务的技术,但做出了非服务化的应用,非但没有达到目的,反而徒增了架构的复杂性,让人汗颜。因此,在微服务之前,有必要搞清楚什么是服务化。

1. 官僚不是服务化

河北省武邑县需要往返6次才能办一个护照,深圳小孩出生要跑社保局、街道办、派出所,这些都是服务化程度低的标志。官僚化的程度越高,服务化的程度就越低。买房子相对好些,在入伙的时候,水、电、煤气一站式搞定。

2. 烟囱不是服务化

最近一次出差,使用了 e系统、i系统、s系统 等好几个应用,经过长期的优化,这几个系统的体验都还算不错。但用起来总感觉怪怪的,问题在什么地方呢?很多时候,当你需要找一个想要的信息,比如航班信息时,你往往不知道要到那个系统去查。 e系统、i系统、s系统都是品牌和口碑很好的应用,但放在服务化场景下重新思考,我们很容易的发现:烟囱化的应用不是服务化。

3. 超链接不是服务化

既然烟囱不是服务化,那我用超链接把各个烟囱串联起来,是不是就是服务化了呢?显然不是,简单的超链接让事情变得更加糟糕,而不是更好了。超链接就如同单向的门,为了打通两个房间,我们需要安装两个单向的门,房间数更多的时候,门的数量也更多,最后组成了一个什么呢?对,一个迷宫。

服务化的系统,不是仅仅将相关功能连接在一起,而是有机的整合、简化成 One System,让基于当前场景的用户感觉可以流畅的处理端到端的业务,而不必到处在风格迥异的系统间跳转以致摸不着头脑。

4. REST 不一定是服务化

我做了一个应用,有前台,有后台,前台通过REST(或者SOAP、RPC等)调用后台,是不是就服务化了呢?其实不然,这个还可能是一个烟囱,一个伪装了的烟囱。

5. 单体应用不一定不是服务化

服务化(SOA)是一种构建分布式应用的方法,本质上是实现能力在分布式环境中的重用。单体应用通常跟微服务应用对立起来,单体应用并没有跟SOA对立起来,单体应用也一样可以暴露足够的服务供其他的分布式应用来使用(与烟囱的区别),从而实现服务化的重用。

另外,单体架构并不一定不是好的架构,这取决于应用的复杂度。一个初创的公司,要在互联网-上开展业务,由于业务规模不大,业务复杂性有限,码农数量也不多,这个时候,单体架构就是最合适的。即使对于华为这样的大型公司,在某些独立的领域,如果一个单体应用能很好的覆盖完整业务场景,单体架构仍然是合适的。

6. 组织结构服务化才能实现服务化。

俗话说,组织架构决定技术架构。有烟囱式的组织架构,很容易导致烟囱式的系统。要实现服务化,必须打破原先一个团队搞定一个烟囱的组织架构,变为一种服务化的组织架构。应用的前端和后台应该采用完全不同的设计方法,前台UI的设计是完全以用户为中心的,而后台的服务设计则是以业务为中心的。前台和后台最好归属到不同的团队,以避免他们造烟囱的强烈生理冲动。

7. 针对完整场景的才是好的服务化。

割裂的场景导致割裂的体验,好的服务化设计都是针对完整的场景的。让用户在端到端的场景中拥有完整的、一致的、简单的、明确的体验。什么是端到端完整的场景呢?

o 差旅就是一个完整的端到端场景,从出差申请,到机票预定、酒店预定、签证申请,再到出差报告、报销整个一条*LONG*服务。

o HIC也是一个完整的端到端场景,从应用注册,到应用开发、测试、资源申请、配置管理、持续集成、持续交付、运维自动化,整个链路覆盖。

如果割裂开来,针对部分场景设计一个应用,另外的场景设计另外一个应用,则很容易形成烟囱。即使只是针对完整场景中的任何一个遗漏,都会导致服务化体验的劣化。

8. 大型系统服务化的必然结果,是业务中台化。

前面提到过,前台UI的设计是完全以用户为中心的(我的任务、我的订单、我的合同),而后台的服务设计则是以业务为中心的(比如订单处理、合同处理、财务处理等)。用户通常希望一站式的体验,那如何将一站式的以用户为中心的前台和分散的以业务为中心的后台结合起来?答案是业务中台。业务中台承接前台的请求,并整合后端的服务,在这个过程中,可以进行特定的映射、整合、规则化处理、自动化处理、智能化处理,这里侧面印证了IT中台化战略,即前轻、中强、后稳的战略。

总体来说,服务化的目标,是通过更加服务化的组织和完整的服务化的实践,构建针对完整业务场景的一站式的ROADS用户体验(套用一句流行的话)、更加解耦的架构,从而实现全流程的在线处理、更高的业务作业效率,提升业务数字化转型效果。我们不能过度强调技术,而忽略体验,因此,理解什么是服务化比理解什么是微服务更加重要。

下篇,再讲讲我对微服务的理解,敬请关注。
点击链接加入交流分享群:http://a.sccs56.cn/c/6613cd987dc465413b71f38f4ef4fc7d
文章来源华为云社区:http://bbs.huaweicloud.com/blogs/2be9c4a9456d11e9bd5a7ca23e93a891
...全文
141 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
10个技巧,让你更专业地使用console进行JS调试.pdf 50道CSS基础面试题(附答案).pdf du及df命令的使用(附带示例).pdf I O 模型.pdf IOT语义互操作性之语义.pdf Java-利用Nginx负载均衡实现Web服务器.pdf Java开发必须掌握的8种网站攻防技术.pdf JS中的二进制操作简介.pdf redis集群部署及踩过的坑.pdf 一文告诉你高逼格程序员上下班都在做什么.pdf 一网打进Linux下那些查找命令.pdf 不小心删库是一种怎样的体验?半个DBA的跑路经验总结.pdf 为什么大家都不戳破深度学习的本质?.pdf 为什么我会被Kubernetes“洗脑”?.pdf 从接入层入手,如何设计高并发的微服务架构?.pdf 使用Java语言从零开始创建区块链.pdf 关于MySQL线程池,这也许是目前最全面的实用帖!.pdf 分布式存储系统的一致性是什么?.pdf 初识Java 9模块编程.pdf 区块链难理解?200行代码教你写一个自己的区块链!.pdf 十个问答助你了解 Redis 高可用架构及 Redis 运维.pdf 后Kubernetes时代,带你系统梳理K8S 12大关键特性.pdf 容器如“衣服”,而虚拟机却是“房子”.pdf 怎样将微服务和无服务器相结合?用新型事件驱动型架构CQRS!.pdf 没想到黑客的工具这么复杂!.pdf 浅谈图片宽度自适应解决方案.pdf 浅谈微服务架构中的鉴权体系.pdf 深入了解Token认证的来龙去脉.pdf 漫画解读:轻松看懂机器学习十大常用算法.pdf 用数据赋能新零售 解密背后的黑科技.pdf 程序员的困扰:如何在不影响产品质量的情况下,加速开发进程?.pdf 终于有人把云计算、大数据和人工智能讲明白了!.pdf 融资30亿元后,李想坦承了他最大的恐惧.pdf 那些吓人的 Linux 命令.pdf

918

社区成员

发帖
与我相关
我的任务
社区描述
华为云计算论坛,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算!
社区管理员
  • 华为云计算社区
  • 海洋 之心
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧