持续演进:云原生架构之我见

本文作者 王启军

目前就职于华为-公司架构部,负责华为公司的Cloud Native、微服务架构推进落地,前后参与了华为手机祥云4.0、物联网IoT2.0的架构设计。曾任当当架构师,主导电商平台架构设计,包括订单、支付、价格、库存、物流等。曾就职于搜狐负责手机微博的研发。十余年的技术历练,也曾经作为技术负责人带领过近百人的团队。公众号“奔跑中的蜗牛”作者。

架构没有绝对的对与错

在技术的领域里,并不存在“上帝”。没有人的每句话都是对的,没有人的所有思想都能被别人所接受。

我经常在公司范围内培训,首先是灌输架构思想和解决方案,然后会在实战演练中模拟一个比较简单的业务场景,把所有人分成 4 个团队,每个团队大概有 10 个人。结果发现,每个团队最终形成的架构图总有很大差异,很难评价一个团队的做法是对是错。例如,是要拆分为 3 个服务,还是 5 个服务,他们有各自的理由,除非比较明显的问题,否则你很难以一个理由去否定另一个理由。原因只是各个团队站在了不同的维度综合判断、权衡,形成了自己认为满意的架构方案。因此,架构没有绝对的对与错,只是在不同的角度做出的决定而已。

架构很难被衡量

每个公司的管理层都希望尽可能地去衡量架构的先进性,希望认清差距,向着好的架构方向不断演进。然而架构很难被衡量,须同时具备差距特别明显、制定指标的人能力达到一定高度、业务场景比较接近这三条才有可能衡量。当然我们可以去制定一些指标,这些指标应该是参考性的,作为一个自检项,而不是评价标准。从这个角度看,并不是符合Cloud Native 就是好的,不符合就是差的,当不符合时,你的理由是什么?你站在问题的哪个角度?

Martin Fowler 曾说:“优秀的技术人员的观点胜过任何度量,尽管它是主观的。”

因为你无法统一每个人关注的点,以及对各自关注的点的重视程度,所以架构很难被衡量。

架构需要持续演进

在传统企业中,架构设计是一个很重要且很耗费时间的过程,需要经过很多轮审核,架构文档动辄几百页,而且这个文档绝对不能有没考虑到的问题,必须面面俱到、接近完美。例如,目前系统还没有用户,就要为未来 1 千万的用户耗费精力解决性能问题,而且软件永远有你想象不到的问题发生。实际上我们描述的是一种静止的架构,这种架构每次变更都需要耗费巨大的成本。如果此时恰好出现了一个基于敏捷思想的竞争对手,则会形成一种鲜明的对比,他们不去考虑太长时间之后的事,出现什么问题就解决什么问题,因为有可能一年以后这个项目死了,也有可能用户人数突破 1 亿,系统需要进行大规模重构。

总之,未来是不确定的。可见,架构是锤炼出来的,而不仅是设计出来的。

反应速度是传统企业的硬伤,这不是通过加班就能解决的。可以看一下互联网巨头们每年的发布次数,动辄每年发布几百万乃至上千万次,每个服务每天都在发生变化,每周可能都会上线。在如今这个快速发展的世界里,你无法依赖一个人去做所有的决策。这就需要发挥所有成员的主观能动性,也就是说,架构应该交给一线决策。回到前面提到的问题,服务怎么拆分更好?我想只有深入了解需求、场景、目标甚至自身条件之后才能做出决策。并且,架构的演进不是一蹴而就的,而是一个长期发展的过程。

变革需要坚决

历史上的变革大多阻力重重,因为一旦变革就意味着打破原有的“默契”,打破原有的“潜规则”,而“顽固派”通常是原有文化的受益者,他们通常不会反对变革,而是通过“我们不能完全照抄,要走出适合我们的路”来促成妥协。如果变革过程中遇到任何风吹草动,就更会给“顽固派”各种理由“走自己的路”。这也就是为什么我们熟知世界领先 IT 企业的技术、研发流程和企业文化,而就是学不会的原因。

这时候需要的是企业领导者的果断、坚决。只要方向没错,就要坚持,决不动摇。下面这段话是马云对刘振飞(阿里技术保障部负责人)关于阿里云内部争议的回复,反映了一个领导者在企业变革过程中起到的作用。

在王坚加入阿里之前,我跟教授(指曾鸣)讨论公司的未来,觉得云计算和大数据代表未来,对国家和社会的发展有长远的意义,所以我们要干,这是第一点。但是怎么做云计算、大数据?我们谁也不知道。现在来了个人叫王坚,他说:“我知道怎么做”,为什么不支持呢?这是第二点。第三点,即使万一做失败了,那也没关系,咱们的人倒下 70%,还有 30%活着,咱们活下来的人打扫战场,换个方向继续干,总要把它做出来。

写代码不同于搬砖

如果是搬砖,那么效率高的人和效率低的人之间的差距不会太大,因此每个人每天的工资都是相对固定的。但是在如今这个知识爆炸的时代,对于从事软件行业的群体来说,效率高者的工作效率比效率低者的可能高出几十倍、几百倍,优秀的人能写出更高质量的代码,能够预测问题。而在这个行业越是优秀的人才越是稀缺,因此很多互联网公司都愿意花大价钱去招一些更优秀的人。

优秀的人不愿意来,不一定是因为钱。花钱雇佣优秀的人是一方面,怎样管理这些人又是另外一方面,用管理搬砖者的方式来管理他们是不行的,管理优秀的人需要给予他们更多的信任,需要营造一种公开透明、自由高效的环境。

关于本书

为什么会出现 Cloud Native 这个概念呢?无论是云化、平台化,还是微服务架构,又或者是敏捷开发、自动化,都只是描述了几个点,而 Cloud Native 更像是一个面,通过它把这些点都关联起来了。某几个点做得很好而忽略了其他点通常会走入误区。例如,某些团队只关注服务拆分,而忽略了工具、组织对微服务的影响,最终效果并不理想。又如,要提升系统的可用性,只是从技术的角度去考虑是不够的,还要考虑如何通过自动化测试提升可用性,如何通过 Code Review 提升可用性,以及当故障发生时如何快速修复。我希望通过个人的工作经历以书的方式传递一些这方面的经验教训。

本书分别从架构、研发流程、团队文化三个角度全面论述 Cloud Native,因为只有三方面配合才能达到理想的效果。我见到过无数失败的案例,绝大多数都是因为考虑得比较片面,例如单纯从架构角度进行变革,或者单纯从研发流程角度变革。我们希望模仿Google、Facebook、Amazon、Netflix 等领先企业,但是往往高估了架构的影响力,而低估了研发流程和团队文化的影响力。实际上,研发流程和团队文化对架构有着非常重要的影响。本书以 Cloud Native 的起源、诉求及组成开始,全面描述了 Cloud Native 的各个方面。从架构角度阐述了如何实施微服务架构,如何构建敏捷基础设施及平台服务。同时,从可用性、可扩展性、性能、一致性等角度描述了微服务架构中产生的问题及解决方案。最后,分别描述了 Cloud Native 下的研发流程和团队文化。

本书比较适合技术管理者、架构师和有一定基础的技术人员阅读,特别是传统软件企业的技术领导者,以及希望向互联网公司转型的或者转型失败的企业技术领导者。此书将帮助这些人少走弯路。还有一些比较有经验的高级研发人员,阅读此书也利于系统掌握Cloud Native 的关键技能。无论如何,都希望此书能给你带来较好的体验,使你获得启发。

————

本文为《持续演进的Cloud Native:云原生架构下微服务最佳实践》一书序文。作者从全局视角出发,全面阐释Cloud Native 的关键技术,以及其衍生出来的工具、团队文化等核心要素,对于正在部署微服务架构或开展云原生业务的企业和组织而言,终于有了面向落地的务实参考和全面指导。现在,距离你的第一个云原生项目,只差阅读原文这一步之遥,抬腿试试?

  • 内容简介:本书从架构、研发流程、团队文化三个角度详细介绍了如何构建 Cloud Native。作者长期活跃在研发一线,具有丰富的架构设计经验,也曾亲身经历过很多失败的架构设计,如很多团队在实施微服务架构的时候,只强调拆分服务,根本没有理解微服务架构应该怎么做。本书就是想告诉读者,除了拆分服务,还要把哪些事做好,例如基础设施、一致性、性能、研发流程、团队文化等。本书共分为 10 章,第 1 章从整体上描述了 Cloud Native 的起源、组成及原则等;从第 2 章到第 7 章重点描述了微服务架构、敏捷基础设施及公共基础服务、可用性、可扩展性、性能、一致性等方面的设计实践;第 8 章介绍了 Serverless 和 Service Mesh;第 9 章介绍了如何构建研发流程;第 10 章介绍了如何建设团队文化。本书希望给技术管理者、架构师和有一定基础的技术人员提供帮助,特别是希望改变研发模式,从交付型软件过渡到云服务的传统软件企业开发者,此书将帮助你少走弯路。

原文发布于微信公众号 - 前沿技墅(Edge-Book)

原文发表时间:2018-11-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏UML

Scrum和自组织团队 (Scrum and Self-Organizing Team)

Scrum项目的基本模式很简单,这对于想要敏捷的团队来说非常有吸引力。如果只是有效地采用Scum,那么我们都将运行敏捷的团队!但是许多团队发现他们在使用Scru...

42800
来自专栏产品开发

老生常谈:如何快速提升项目管理和团队效率?

越来越多的管理者认可:企业持续发展就意味着团队需要更高效的合作,而提升工作效率是唯一「可持续优化」,并降低发展成本,减少浪费的有效方式。

379100
来自专栏云社区体验反馈

关于腾讯云+社区的体验

云社区我不常逛,但对各种垂直领域的社区很感兴趣,经朋友推荐,便来此处简单的体验了一回,做了以下书面输出。

328140
来自专栏人称T客

报告丨AI能否成为下一代HR SaaS破局关键?

撰文 |Felix 在云端进行HR管理是个大趋势,至少在2020年,各种公司中几乎会有1/4应用混合和本地部署加SaaS系统。 不过,有些时候,大部分公司HR...

432110
来自专栏养码场

逼问下自己:你,是技术的主人还是技术的奴隶?

作者简介:空融,网名“D调的暖冬”。现就职蚂蚁金服,从事支付宝身份认证相关领域的技术开发。

8310
来自专栏Spark学习技巧

从架构理解价值-我的软件世界观

在浩大的软件世界里,作为一名普通程序员,显得十分渺小,甚至会感到迷茫。我们内心崇拜技术,却也对日新月异的技术抱有深深的恐惧。技术市场就像这喜怒不定的老天爷,今天...

7820
来自专栏黄成甲

虚拟现实的未来

适用过VR眼镜的同学都知道VR产品的体验大多不太好。这主要是因为目前VR视频的清晰度普遍都不够,就是所说的失真,很容易就出戏,导致沉浸感体验比较差。

15630
来自专栏云计算D1net

培养和招聘:形成DevOps环境的关键

DevOps不再只是大肆宣传的产物,已经真正成为企业IT的主要任务。 根据RightScale的2016 State of the Cloud调查显示,1060...

356110
来自专栏人称T客

报告丨从火热的SaaS产业中我们可以看到什么?

T客汇官网:tikehui 撰文 |Felix 随着移动化的进行和传统企业结构的改变,云服务软件已经成为了企业首选的内外部管理工具。因为云可以为公司带来理想的扩...

22340
来自专栏AI科技大本营的专栏

语音交互只是说话?相比自动驾驶它还在L1级!

2017 年可以看做是智能语音交互的元年,在这一年里小爱同学、天猫精灵纷纷上市。2018 年里语音交互的落地突然加速,落地的产品从大公司关注的智能音箱扩展到其它...

13310

扫码关注云+社区

领取腾讯云代金券