为啥我用了微服务架构,软件还是不好修改啊?

栏目: 服务器 · 发布时间: 6年前

内容简介:很多人跟我说:老师,我也用了微服务中间件啊,为啥我的程序还这么复杂,这么不好阅读理解、不好修改、不好组合啊?嗯嗯,问题其实很简单,只有约束规定,没有约束手段。所以我比较喜欢Golang或Ruby on Rails这样的工程语言,特别适合中国这些万金油、需要大规模堆人来作业的开发模式。那应该怎么办呢?

很多人跟我说:老师,我也用了微服务中间件啊,为啥我的程序还这么复杂,这么不好阅读理解、不好修改、不好组合啊?

嗯嗯,问题其实很简单,只有约束规定,没有约束手段。所以我比较喜欢Golang或Ruby on Rails这样的工程语言,特别适合中国这些万金油、需要大规模堆人来作业的开发模式。

那应该怎么办呢?

我告诉大家一个方法,只有这样方法一起用,你的微服务才能真正成为微服务。 总的思路其实就一条:要故意强制约束到小。

一、UI层

你一定要基于类似 小程序的技术 ,而且一定要做在智能手机里。只有这样,你才会受约束。因为智能手机屏幕小,输出就少,因为智能手机没有键盘和鼠标,所以你输入也只能少。

咱们中国万金油程序员,不会开发程序,往往是界面上的功能多复杂,代码就多复杂。所以啊,让UI界面上通过强制约束倒逼它不能放太多功能,代码就就少多了。这是前提基础条件。

而且,最好是把类似小程序的技术,内嵌 在类似IM(微信)这样的移动化协同门户里 。过去咱们做功能模块,都有个集成门户,左边是层层叠叠的功能树,右边是各种指标图,复杂得就像驾驶飞机。现在好了,被内嵌进一个类似即时通信这样的软件平台里了,没有菜单树了。那怎么办啊?嘿嘿嘿,小程序写的功能,只能通过场景来触发弹出出现了。哪里还有有形的ERP体系,哈哈哈,都被场景打碎了。

不是功能复杂就是好产品。

二、逻辑层

UI层有:移动协同门户+小程序UI组件,那逻辑层也需要三个东西:Serverless + 分布式微服务中间件 +Docker 容器。

FaaS我是特别赞同的。很多人不会写函数,都没有经过函数设计编写的训练,如函数命名、隐藏性、函数输入输出参数设计、函数异常保护、函数日志、函数返回值,这都是需要精心设计的,需要天长日久训练的。我曾经见过1000多行的存储过程,谁都不敢动,很少有人能全看明白。

所以, 通过Serverless这种函数编程,就把一个功能强制约束要做简单。

很多人问过我一个微服务到底要拆到多少粒度合适?我说,拆到你能掌控了的粒度就行了。拆的细了,是灵活了,但要修改的时候,可能需要十来个函数才能做到你想要的效果,忘修改一处,跑出来的结果就不是你预想的。这就很影响效率和质量,进而影响了成本。如果你把所有逻辑都一股脑放在一个函数里,还是太复杂,就和那个1000行的存储过程一样。所以,该拆多细的粒度,根据你这个万金油的能力来。要知道,大部分的 程序员 都是呈现正态分布的,天才和蠢货都挺少,大部分人都是中庸打酱油人,所以你觉得拆的差不多了,你能掌控的住,那说明大部分人都能掌控住。这种粒度就够了。

一定要有Docker。

Docker就意味着物理隔离(虽然也只是假物理隔离)。咱们过去写万金油软件,哪里需要对接,就调用一下。这样天长日久就形成了很多文档上没有记录的系统关联调用。如果用了Docker,嘿嘿嘿,都隔离了,你咋调去。就得强制让你不能调用,才被迫想到通过统一的SOA企业服务总线来调用。

Docker就意味着开发期环境和运行期环境一致,不会出现常见问题:生产系统说有问题,在测试环境就是重现不了。或者是,有人擅自改动了生产环境。

三、技术中台层

你一定要有主数据平台、API网关。

能通过主数据调用的就调用主数据,而不是直接调用另外一个业务系统的数据。你想调用其他业务系统的业务逻辑代码,你就必须要通过API网关来统一走,而不是直接就交叉调用了。

有了这两样东西,你的各个模块、各个业务子系统,都是简单依赖的

四、基础设施层

一定要用云服务器、云存储、云数据库、云中间件、云人工智能平台、云大数据平台、云IoT平台、云文档照片音频视频处理中间件。这些都是云化的、分布式的。这样你就不用写一个Serverless函数就打包一大堆依赖的底层中间件。 你一个Serverless Docker里面就干干净净的只有你自己的应用模块代码。

你一定要用到DevOps、灰度发布、大规模日志监控运维、大规模全链路监控运维。 这样,就不会有人为在过程中干涉,导致不同经验的人有不同的后果。

五、组织

组织也非常重要。

第一,组织要全职能组织,比如,一个团队,产品经理、UIUE工程师、架构师、前端开发工程师、后端业务逻辑代码开发工程师、测试工程师,在一个团队了,而不是干每个事情都需要产品部门、UI部门、开发部门、架构部门、测试部门来回地临时抽调人。 临时抽调协同,干的活谁也没有责任,谁也不负责,谁都临时凑合。效率、质量都极差。

第二,组织大小要控制。一定要在7-20人之间。高于20人必须拆分。 小于7人施展不开,大于20人,沟通成本协调成本都很大,而且最最导致的问题是:你因为人多,所以你会自然而然地把功能做的很复杂。所以故意给你人少,你干不了多少,所以这样也是强制约束你做不了太复杂太重型的功能。

不是人多就能出好产品。

六、过程

建议不要项目管理,不要超过1个月的项目。

最好的小步迭代是:当日内测版、每周铁杆粉丝版、每月公开版。这样的周期来发布软件。

千万别憋大招,一憋就容易把功能憋复杂了。

不是周期长就一定能出好产品。

为啥我用了微服务架构,软件还是不好修改啊?


以上所述就是小编给大家介绍的《为啥我用了微服务架构,软件还是不好修改啊?》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

七周七语言(卷2)

七周七语言(卷2)

【美】Bruce A. Tate(泰特)、Fred Daoud(达乌德)、Ian Dees(迪斯) / 7ML翻译组 / 人民邮电出版社 / 2016-12 / 59

深入研习对未来编程具有重要意义的7种语言 Lua、Factor、Elixir、Elm、Julia、Idris和MiniKanren 本书带领读者认识和学习7种编程语言,旨在帮助读者探索更为强大的编程工具。 本书延续了同系列的畅销书《七周七语言》《七周七数据库》和《七周七Web开发框架》的体例和风格。 全书共8章,前7章介绍了Lua、Factor、Elm、Elixir、Jul......一起来看看 《七周七语言(卷2)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具