【华为云技术分享】浅谈服务化和微服务化(上)

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

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. 服务化的必然结果,不一定是业务中台。(2019年12月修订)

最近中台很火,微服务拆的太多了,只好换个名义去整合。貌似不搞中台,都不好意思跟别人打招呼。但是服务化一定会走向中台吗?其实未必。

前一阵跟冉启春交流很有启发,启春认为,现在做业务中台成功的只有阿里。对于这个观点,我必须毫不遮掩的表示赞同。这里并不是说其他公司技术不好,做不成中台,而是目前具备需要中台的企业并不多。阿里有很多相似但有明显差异的前台业务,比如淘宝、天猫、1688、聚划算等,所以需要把通用能力沉淀到中台去解决,比如订单中心、商品中心等,而在前台去解决业务的差异化。

为什么说只有相似但不相同的多个前台业务才需要中台呢?我们分析如下三种场景:

a. 有多个前台,但前台是雷同的,则通过服务化就很好的可以解决,比如爱奇艺和爱奇艺(台湾)

b. 如果前台的差异过大,完全无法沉淀业务能力到中台,那也没有必要做中台,比如商城和金融服务。

c. 当前正处于业务的发展初期,业务还未定型,需要更敏捷的发展,则也没有多大必要构建中台。

总结来说,中台更多的是一种组织级的战略,通过中台的能力沉淀,支持不同前台的共享和差异化。

具体到华为IT来说,现在也在搞中台。比如合同中心、用户中心等,关键在于发掘相似但有明显差异的业务,从几个维度可以思考

a. 不同类型的业务,如设备、软件、服务

b. 不同区域的业务,如中国区、海外各区域

c. 不同BG的业务,如CBG、EBG、CNBG的业务

那到底哪个是相似但有明显的差异的业务?需要深入了解这些业务,并深入思考。

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

作者:quitgame

原文地址:https://www.cnblogs.com/huaweicloud/p/12383441.html

时间: 2024-11-06 07:06:55

【华为云技术分享】浅谈服务化和微服务化(上)的相关文章

【华为云技术分享】#探索鲲鹏#之“在鲲鹏上使用编程语言——C语言

[内容简介]本文将从三部分手把手教大家如何在鲲鹏上使用编程语言:1.编写hello world,并在鲲鹏上运行:2.编写一个带cmake的标准跨平台C工程,完成软件在鲲鹏平台上的编译,安装功能:3.选择一种由C / C ++语言编写的跨平台开源软件Mysql,完成该软件的编译,安装,制作成可分发的替代. 正文开始 在鲲鹏上使用编程语言——C语言 这不是一个C语言的教程. 然后接下来的几期,主要介绍各种编程语言在鲲鹏上如何从二进制编译到二进制文件,从二进制文件编成一体,从软件包制作成码头工人或者V

王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019【华为云技术分享】

演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019)在北京举办.在计算机视觉技术专题,华为云OCR人工智能高级算法工程师王晶分享了“文字识别服务的技术实践.底层框架及应用场景”的主题演讲. 演讲的第一部分,他分享了文字检测和识别的基础知识以及难点和最新进展.第二部分是华为云文字识别服务关键能力.关键技术,以及落地过程中遇到的“坑”,这对其他人工智能产

【华为云技术分享】如何设计高质量软件-领域驱动设计DDD(Domain-Driven Design)学习心得

DDD做为软件设计方法于2004年提出,一直不温不火,最近几年突然火起来了,为啥呢?正所谓机会给有准备的人,因为微服务的流行,大家都跃跃欲试把传统单体软件转成微服务架构,但理论很丰满,现实很骨感,光是分解微服务就让人找不到北,而DDD是歪打正着也好,富有远见也好,正好适合微服务转型设计,不火都难. 最近学习了领域驱动设计(Domain-Driven Design),感觉受益匪浅,那到底啥是DDD呢?这里分享一下学习心得.网上有很多详细的资料,感兴趣可以看看这个https://www.infoq.

【华为云技术分享】技术探秘:华为云瑶光何以定方向

作为北斗第七星,瑶光自古就可用来判断四季更迭.引向定时.而作为全新发布的智能云操作系统,瑶光智慧云脑又是如何做到统领云上各类资源.实现租户需求与资源供应之间最佳匹配的呢?在华为云瑶光实验室.华为云算法创新实验室里,我们找到了答案. #初识资源调度# 云OS:我太“南”了 依托虚拟化技术,我们得以将数据中心海量的计算.存储资源以云服务的形式对外提供.而随着数据中心规模扩展.边缘计算带来的算力延伸,承担着高效.精准资源调度的云操作系统面临着三大挑战: 第一个挑战是云计算的资源消耗/售卖模式带来的.云

【华为云技术分享】漫谈LIteOS-物联网操作系统介绍

[摘要] 本文主要对于目前物联网操作系统的定义以及主要特点进行了分析,最后介绍了几个常见的物联网操作系统. 1简介 提到操作系统,可能首先想到的就是苹果操作系统,windows,Linux,Unix,Android,IOS等,显然目前比较为人熟知的操作系统基本都是一些手机或者电脑端的操作系统.而随着互联网技术的不断发展,硬件的体积越来越小,物联网技术也迎来了爆棚式的发展.物理网不同于 互联网的不同在于后者更关注的是人与人的互联,而前者是更加强调人与物,物与物的连接,从而实现万物互联(IOT).显

华为云实战开发】5.如何快速创建免费Git代码仓库【华为云技术分享】

1 文章目的 本文主要帮助已经掌握或者想要掌握Git的开发者,如何更好的应用Git,以及更好的将Git与DevCloud结合应用. 2 概述 2.1 版本控制系统介绍 从狭义上来说,版本控制系统是软件项目开发过程中管理代码所有修订版本的软件,能够存储.追踪文件的修改历史,记录多个版本的开发和维护,事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理.版本控制系统(Version Control Systems)主要分为两类,集中式和分布式. 2.1.1 集中式版本控制系统 集中式版本控

【我的物联网成长记3】如何开发物联网应用?【华为云技术分享】

[摘要] 物联网应用是设备管理.故障监测.数据分析的重要工具.本文介绍如何基于物联网平台开发应用,包括API.SDK和图形化开发三种方式. -------------------整体方案------------------- 物联网应用是企业和开发者进行设备管理.告警&故障监测.业务监控.数据分析的重要工具.物联网平台屏蔽了设备接入的复杂性和协议的差异性,解耦应用与设备,为上层应用提供统一格式的数据,简化终端厂商开发的同时,也让应用提供商聚焦于自身的业务开发.基于华为物联网平台的应用开发方案如下

揭秘丨7分钟看懂华为云鲲鹏Redis背后的自研技术【华为云技术分享】

2019年5月,华为云发布全球首个基于自研ARM架构的分布式缓存鲲鹏Redis,搭载华为LibOS+华为编译器+安全容器引擎三项黑科技,在保证Redis强劲高性能外,还降低客户30%的使用成本,真正实现了好用不贵的普惠型分布式缓存Redis产品. 本文从技术视角解读华为云鲲鹏Redis是如何通过数据中心基础设施.芯片.硬件.软件等全栈创新优化,达成以上效果. 一.为什么ARM架构适合Redis? 众所周知,Redis是一款风靡全球的高性能.高灵活性.数据结构类型丰富的key-value内存数据库

华为云流媒体性能测试解决方案 轻松应对流量危机【华为云技术分享】

背景 随着带宽提速和互联网发展,内容丰富.形式多样的视频正成为碎片化时代娱乐消费的新宠,短视频.视频直播.在线钢琴陪练.合唱直播一系列新玩法层出不穷,涉及电竞.社交.电商.教育等各个行业.网络视频快速发展对系统性能带来了巨大的考验. 流媒体业务场景 下面是用户与流媒体服务器的简化交互关系,主要分为推流和拉流2大类. 推流就是从外界采集数据后利用流媒体协议将文件推流至流媒体服务器端,拉流就是将文件从流媒体服务器拉取至本地播放的过程,流媒体的文件主要是由音频和视频2个部分组成,youtube.土豆.