智能教学、管理与服务系列之单体架构VS中台微服务

今年2月中共中央、国务院印发的《中国教育现代化2035》标志着我国教育信息化转型已经步入关键时期,2019年卓云科技凭借对数字校园智慧化领域十余年的探索和积累,成功研发并对外发布了基于智慧校园微服务中台的系列智慧校园解决方案,为全面构建智慧校园领域的新生态助力。

 2.jpg

什么是单体架构?


单体架构就是传统软件项目开发模式,无论业务多复杂都在一个工程下,不断延申扩展,程序不敢保证日益健壮,但绝对日益臃肿,系统之间交互的集成和协作成本非常高昂的一种模式。

 

什么是中台微服务?

 

高校用户为了打通系统间的集成与协作问题,有了“中心化”的思想,于是开发商也就开发了中心化的几大平台。“中心化”架构的所有服务调用者和服务提供者之间的交互都必须通过这个中心点,而这个中心点的能力是很难进行扩展的,导致这中心会成为一个瓶颈。

 

卓云在智慧校园行业率先提出“大中台、小前台”战略,中台集合了智慧校园的数据运营能力和技术能力,提供标准的认证、数据、接口以及工具,对各类型前台业务形成强有力的支撑。而微服务是体现去中心化、天然分布式,是“大中台、小前台”战略的具体实现方式的一种。

 

为什么要做微服务?

 

传统单体架构在规模比较小的情况下很OK,但随着系统规模的扩充,它暴露出来的问题也越来越多,我们来看看以下几个问题:


1.复杂性不断攀升

无论多么牛b的大拿,无论前期设计多么清晰,随着业务复杂度的提升,程序复杂性也不断攀升,模块之间逐渐模糊,逻辑逐渐混乱,因为现实环境中项目工程管理无法达到完美的程度,就算企业拿到了CMM3甚至CMM5的企业也做不到,每个模块都可能不同的人进行维护,前期的设计思想、逻辑和开发风格100%无法延续。周而复始,无论多么完美的开局最后都是一锅粥。


2.技术债务不断提升


延续上一个问题,复杂性不断攀升的同时,人员流动是常态,疏于代码质量的自我管束,导致项目中大坑套小坑。由于单体架构,代码庞大,出现问题了,明知道是坑也得跳,也无法判断哪个坑更小,往往时间紧迫,以先填坑再说的原则进行维护,导致填了一个坑的同时可能又挖了更多个坑。


3.新人难于接手


原本很简单的业务,一个新人来了接手应该很容易,但是新人不得不去了解核心业务以外更多的业务,更为关键的是即使了解外围业务也未必读得懂大坑套小坑的程序,于是可能出现新人为了完成任务,在原有环境中又开发了一次,程序越来越复杂,新开发的可能又无形中挖了新的坑……


4.技术逐渐落后、阻碍创新

立项之时确立了技术架构,随着技术的发展,新技术出现了,但又不能随意更改,比如起初项目使用struts2写的,由于各模块间有着千丝万缕的联系,代码量大,逻辑不够清楚,如果现在想用新技术来重构这个项目将是非常困难的,付出的成本将非常大,不得不硬着头皮继续使用老的struts架构,这就阻碍了技术的创新。阻碍新技术创新的另外一方面,也影响人员的招聘,有2年左右经验的喜欢使用新技术,没有经验的喜欢学习新技术,各种阻碍……

5.无法低成本地按需伸缩

一方面,技术上为扩展某个模块不得不考虑更多的模块,甚至可能影响到其他模块的功能以及性能;


另一方面,扩展一个模块原本一个程序员的工作量,结果需要至少2人甚至更多的人员,成本至少翻倍。


怎样判断什么业务适合做成微服务呢?

 

首先,微服务体现在一个“微”字上,业务清晰。假想拆分后,能否带来业务上的隔离?对于功能和功能之间有着紧密的配合关系,如果强制拆分为较小的服务单元,会让集成工作量急剧上升,并且这种人为的切割无法带来业务上的真正的隔离,也就无法做到独立部署和运行,也就不适合做成微服务了。