在进入 Cloud-Native 微服务的世界前, 我们必需要真正了解的一些事

我们总是从 Cloud-Native 微服务的文章中、演讲中, 看到、听到关于单体 (Monolithic) 的系统是如何的不易维护、不易快速的独立发布。Cloud-Native 微服务是如何的容易扩展、快速的独立发布、容易维护等等。

然而, 我想, 我们应从产品开发的视角, 认真且客观的看待 Cloud-Native 微服务与单体 (Monolithic) 的系统; 以避免我们从单体 (Monolithic) 系统的地狱走向 Cloud-Native 微服务的地狱。

  • Cloud-Native 微服务会不会取代单体 (Monolithic) 的系统?
    • 当然不会。
    • 而且是永远的不会。
  • 单体 (Monolithic) 的系统目前的问题,在 Cloud-Native 微服务会不会发生?
    • 当然会。
    • 太多的团队,转型到 Cloud-Native 微服务后,同时深陷单体 (Monolithic) 系统的地狱与 Cloud-Native 微服务地狱中。
  • Cloud-Native 微服务是为了解决单体上的问题?
    • 不能说不是,但当你这么想时,你就会有很大的概率做错事,而同时深陷 Cloud-Native 微服务地狱、单体 (Monolithic) 系统地狱中。

Cloud-Native 微服务最重要的思路是告诉我们:

软件可以不再只是 “系统”, 而是可以是 “服务”。

系统可以保证企业内的运作正常。

但,假如只是用系统的思维去构建直接为用户提供服务的系统,有时候是没问题的,但有的时候是, 版本的计划、开发,赶不上变化,变化赶不上ㄧ通电话的。

所以,我们要做些改变⋯

要做些改变, 并不是代表著我们要按着课本上的定义去做产品;去定义什么是单体 (Monolithic) 系统?什么是 Cloud-Native 微服务?

要做些改变, 我们应将架构区分出:

  • 不易变”、甚至是 “不可变”
  • “易变”、“常变”

根据架构上的 “变化” 的质量属性,将产品分成:

  • 那部分是 “系统”
  • 那部分又应该是 “服务”
图一

如图一所示, 产品团队先将产品识别出:

  • 核心 (Core) 的业务领域
  • 通用 (Generic) 类型的子业务领域
  • 支撑 (Support) 类型的子业务领域
图二

如图二所示, 产品团队与领域的业务专家, 再将各业务领域; 核心 (Core) 的业务领域、通用 (Generic) 类型的子业务领域、支撑 (Support) 类型的子业务领域; 中的 “不易变” 甚至是 “不可变” 与 “易变”、“常变” 的业务场景给区分出来。

  • 不易变” 甚至是 “不可变” 的业务场景, 将会构成产品的 “系统”
  • 易变”、“常变” 的业务场景, 将会构成产品的 “服务”

别忘了,有相当多的产品只要有 “系统” 就够了。

会不会有产品只有服务,微服务的实现?有的。但,相当、相当、相当的不建议这样的产品架构。

所以,Cloud-Native 微服务除了需关注团队的成员是否具备 Cloud-Native 微服务的关键技术外,更难的一点是:

  • 要花很多的时间识别 “系统”、 “服务”

然后,才能明白什么时候应该或不应该引入 Cloud-Native 微服务。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

有python基础,学大数据还需不需要学java?

Q:学校里的大佬学长说他们搞大数据基本是python,java很少,但一个培训机构的老师说大数据的许多框架都是java写的,本人有python的基础,想学大数据...

3309
来自专栏Jerry的SAP技术分享

SAP成都研究院郑晓霞:Shift Left Testing和软件质量保证的一些思考

今天的文章来自Jerry的同事,曾经的搭档郑晓霞(Zheng Kate)。郑晓霞是在Jerry心中是一位很有实力的程序媛,2011年从西安某软件公司跳槽到SAP...

1052
来自专栏Java架构师学习

阿里架构师的成长之路,Java开发者的技术梦要如何实现

写在开篇: 不管是开发、测试、运维,每个技术人员心里都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升...

3629
来自专栏腾讯NEXT学位

2018 年最流行的 100 个前端项目

? 作为一名开发工程师,当接手一个全新的项目任务时,如何选用并设计合适的技术架构?面对日新月异的技术更新,如何保持一份积极而又淡定的心态,持续高效地跟进学习这...

1272
来自专栏华章科技

大数据告诉你,最不受欢迎的编程语言居然是……

导读:哪些编程语言被开发者喜欢?哪些让人讨厌?笔者通过在Stack Overflow分析用户创建的开发者履历,得出了最不受开发者欢迎的编程语言,还有最受开发者欢...

731
来自专栏编程坑太多

后台开发 vs App应用开发?

PS:听天由命吧,像是IT发展到现在,各个技术栈之间已经没有那么大的隔阂了,只要自己有心,相互之前转起来都是很简单的事情。

1123
来自专栏phodal

天天写业务代码的那些年,我们是如何成长过来的

比起写业务代码更不幸的是,主要工作是修 Bug,bug,buG, bUg。 在一家大的公司里,不同的人总会有不同的运气: 运气好的人遇上一个好的项目,升职加薪,...

1866
来自专栏非著名程序员

GitHub 十年,感谢有你

本文是 GitHub 联合创始人兼 CEO:Chris Wanstrath 在计算机世界杂志写的文章。

1275
来自专栏EAWorld

Serverless架构:用服务代替服务器

还记得在十多年前,SaaS鼻祖SalesForce喊出的口号『No Software』吗?SalesForce在这个口号声中开创了SaaS行业,并成为当今市值5...

4578
来自专栏腾讯大讲堂的专栏

微信红包【技术篇】——如何在服务有损的情况下保证用户体验

腾讯大讲堂隆重推出【100亿次的挑战】系列海量服务之道2.0讲座,覆盖技术、产品、项目管理、支撑、支付5个维度。第一场【技术篇】3000名鹅厂员工参与,场面火爆...

2048

扫码关注云+社区