云原生架构师的十大核心能力

Posted 云原生兴趣小组

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生架构师的十大核心能力相关的知识,希望对你有一定的参考价值。

未来十年,云计算将无处不在,像水电煤一样成为数字经济时代的基础设施,云原生让云计算变得标准、开放、简单高效、触手可及。如何更好地拥抱云计算、拥抱云原生架构、用技术加速创新,将成为企业数字化转型升级成功的关键。

云原生不但可以很好的支持互联网应用,也在深刻影响着新的计算架构、新的智能数据应用。以容器、服务网格、微服务、Serverless为代表的云原生技术,带来一种全新的方式来构建应用

云计算的下一站,就是云原生;
IT 架构的下一站,就是云原生架构 ;

回顾软件架构的发展历程,IT 基础设施(Infrastructure)的变迁总是会推动架构演进,使得架构能够充分发挥基础设施的特点。例如,在大型机时代,架构就是与之匹配的单体架构,随着 PC 及局域网时代的到来,客户服务器架构成为主流。


现今云计算的基础设施同样推动着相应的软件架构的演变。同时,云计算技术甚至还影响了软件的开发过程和团队的组织结构,由此催生的“云原生”的相关理念,正被越来越多的团队所认可并成功应用。


而谈到架构师,技术上从纯自研的 PaaS 架构向云原生 Kubernetes 和 ServiceMesh 进化,站在巨人的肩膀上,用更标准化和现代化的技术武装我们。哪些能力是核心竞争力,我们一起梳理下,抛砖引玉,欢迎大家留言补充和讨论。

(一)架构关注点分离的能力


微服务的核心理念是,系统中的各个服务可被独立开发、独立部署,独立升级,各个服务之间是松耦合的。云原生应用架构理念是进一步强调架构的松耦合,降低服务之间相互依赖的程度。


在云原生架构体系下,架构师关于点分离为:

  • 软件基础设施 (Infrastruction-as-a-Code)

  • 业务架构 (中台架构,微服务架构)

  • 软件架构 (服务治理,传统的SpringCloud, Dubbo, 新型的grpc, ServiceMesh, Serviceless)

  • 研发工程架构 (DevOps, CI/CD)

  • 运维架构 (服务编排Kubernetes,标准化Docker,可观测性Obseverbility,Prometheus/FluentBit/ElasticSearch/APM)

  • 运营架构 (业务数字化,大数据)


云原生架构师的十大核心能力




(二)业务需求分析和理解能力


云原生架构师的十大核心能力

理解业务可以让架构师的架构设计更快的落地,也让架构师能够更为顺畅的和业务研发同学进行沟通和交流。所以架构师切忌不可脱离业务,尤其是业务线的架构师,要时刻保持对业务的一定程度的理解能力。


理解业务:技术的核心是为了让业务获得成功,架构是技术的核心之一,所以架构师一定要加强对业务的深入理解,了解业务的痛点,偏向业务的架构师甚至能够预测业务的发展趋势,提前在业务需要的技术方向进行适当的准备。


提炼需求:很多时候用户提出的需求未必是真正的需求。面对需求,要养成多思考的习惯。思考需求的场景是什么,思考需求背后需要解决的问题是什么,来帮助我们识别并解决真正的需求。作为架构团队,算法和运维同学经常给我们提需求,但是用户提给我们的需求其实是经过自己加工的,隐藏了背后的场景,把他自己设计的解决方案当做需求提给了我们,但是经过深入讨论场景之后,往往可以把握真实的需求,设计更好的方法。


(三)软件工程的持续改进能力

云原生架构师的十大核心能力

软件研发是团队作战,我们每个工程师都是研发环节的一员。在软件研发领域,决定团队研发效率的核心在于研发流程和协作的效率。互联网行业面临快速的变化,不确定性非常强,云原生时代也更倡导的 DevOps 理念和敏捷的研发模式来提升效率,快速试错,来应对不确定性。我们团队从2011年开始尝试从传统的瀑布模式转移到敏捷模式,并且选择 DevOps 工具来帮助我们实施敏捷流程。

下面是我总结的几点核心能力:

  • 把握关键流程:需求分析,产品设计,软件研发,产品验收等关键环节,需要明确关键的角色为此负责,比如需求分析和产品设计必须经过产品负责人的审查,软件设计,编码和测试必须经过技术负责人和对应模块负责人的审查等等。

  • 使用工具自动化:为了提升效率,让大量重复性高的环节自动化,包括文档工具,需求卡片的自动化状态流转,选择 IDE 和代码审查工具,代码搜索,构建自动化测试流水线和基础设施等。将重复性高的工作自动化来提升效率,我认为这才是工程师文化的精髓。

  • 重视代码审查:代码是软件研发环节最核心的交付物,也是工程师之间需要协作的关键之一。作为架构师需要能够发现并且持续优化涉及代码审查的环节,这方面 Google 的代码审查实践给我们提供了非常好的参考。


(四)归纳抽象和技术泛化能力

云原生架构师的十大核心能力


架构设计的本质我认为是抽象和泛化,我在设计微服务框架过程中,不管是对外接口,还是内部组件设计,经过了大量抽象思维模式的训练。抽象是将共性和差异化的东西分离出来,共性的部分抽象成独立的接口,功能模块或者服务。泛化是将技术运用到更多相似的场景,解决相似的问题。抽象和泛化是相辅相成的,需要架构师对问题进行反复深入的思考和对比,思考问题的背后最本质的东西,解决本质的问题。日常编写代码的时候,把握好代码设计的 SOLID 原则,在需要的时候对代码或者架构进行局部重构等过程就是锻炼抽象能力的好机会。有了代码级的抽象和泛化能力作为基础,可以进一步参与模块级或者子系统级的架构设计工作,更深入的锻炼架构设计能力。



抽象和泛化能力的培养需要我们能认清事物的本质,对此我特别推荐大家锻炼结构化的思维模式。



历史是一面镜子,日常工作中及时的总结和复盘也非常有帮助。在每完成一些阶段性工作之后,对自己的工作过程和成果进行总结,可以站在更高的视角看待自己的工作过程,可以帮助自己发现更多的不足并加以改善。

SOLID 原则:

  • Single responsibility principle - 单一职责原则

  • Open/closed principle - 开放/封闭原则

  • Liskov substitution principle - 里氏替换原则

  • Interface segregation principle - 接口隔离原则

  • Dependency inversion principle - 依赖翻转原则



(五)项目管理和技术领导能力

云原生架构师的十大核心能力

技术领导力的核心我认为有三个要素:定义目标,结果导向组织能力

首先是设定目标,目标代表团队的方向,合理的目标是团队成功的前提。

其次是结果导向,团队最终为结果负责,不是为技术负责,真正创造了价值才是团队得以发展的根本。

最后是组织能力,良好的组织能力是团队高效达成目标的保障。这包括充分理解团队成员的特点,做到知人善用;合理设计协作流程和组织结构,提升协同效率;识别核心岗位和关键人才,做到人岗匹配等。管理是一门学问,架构师需要学一些管理方面的知识,才能更好的带领团队达成结果。


(六)沟通表达和合作双赢能力

云原生架构师的十大核心能力


沟通是人社会属性的重要表现方式,知识的传承依赖沟通,架构的实现同样依赖于架构师的沟通能力与技巧。

沟通有两层含义:
一、能够将自身的意思表达清楚,能够确保他人能够理解你的意思;
二、能够理解他人的意思,能够让其他人明白你理解到位了。

对于架构师而言,设计的系统架构要能够让其他人理解,能够接受开发人员的反馈,不断修正架构。
沟通的手段是交流、交流的方式可以是语言、文字,对于架构设计来讲,就是设计文档、设计文档的讲解,技术实现的讲解。

架构师需要根据电影院的座位、电影排期、折扣、优惠、会员等级,支付方式,订票、退票等流程,再结合.NET、JAVA等实现方式的优缺点,设计出合适的架构,比如采用微软.NET技术来实现,还需要定义系统的层次结构、模块设计、异常处理、后台服务等。架构师不光要设计好系统架构做架构验证,还要结合开发团队的实际情况进行讲解沟通,确保系统架构的实现得到开发团队的支持,否则最后只会是鸡飞蛋打。


云原生时代背景下,我们有更多的架构选择,比如服务治理,我们既有传统的SpringCloud,Dubbo。也有云厂商的CLB,EDAS,TSF。还有云原生架构下的Kubernetes, ServiceMesh, Serverless。如何取舍选择,如何Balance权衡、妥协各架构方案和相关方的收益。


(七)技术深度和广度结合能力

云原生架构师的十大核心能力

云原生架构师至少应该服务治理、软件架构、运维领域有着深入理解,同时涉猎其他技术广度。


如果缺乏对技术基础知识或者某个技术方向的深入理解,那想继续在技术广度上拓展就非常困难了。


在技术深度的基础上,学习和理解相关技术也相对比较容易。计算机技术发展特别迅速,即使在 BAT 或者 Google / Facebook 等世界顶级科技公司,也切忌固步自封,要多了解多同类问题的架构设计和解决方案,养成学习和调研竞对的习惯,可以帮助我们少走一些弯路。


(八)技术驱动和技术影响能力

云原生架构师的十大核心能力


作为架构师充分锻炼和打造技术驱动力和影响力可以更好的帮助团队达成目标。


对公司内和公司外打造技术影响力都非常重要。现阶段技术社区非常活跃,公司内部的技术课堂也非常充分。


架构师可以通过开源项目,技术论坛,技术课程,学术论文,或者在技术类大会上发表演讲等多种途径来提升个人的技术影响力。


平时指导一线工程师的过程中,注意积累素材,既是对团队同学的一种培养,还可以接触相关的技术圈子,扩大人脉。



(九)坚持不懈的高效学习能力


云原生架构时代,技术的革新更加迅猛,持续更新,真正的学习,是要靠自己的,要把学习养成习惯。


架构师很多时候要快速切入一个不熟悉的领域,必须要有高效的学习能力。。


在同等的时间里,怎样能最高效的吞吐量,获得更多的有价值的信息量,并沉淀为自己的能力,就需要正确的方法。


处于信息爆炸的时代,我们可以接触到的信息也越来越多,持续学习能力还要注意信息质量,注意把握信息的核心内容,对信息区分精读和粗读。


每个人都有自己的特点,需要找到适合自己的学习方法,方法得当,事半功倍。


那么学习的过程,也是一个不断发现自我,形成模式,目标导向,反复强化,不断调整的过程。



(十)正确的价值观积极正能量


一个成功的人,往往都需要具备正确的价值观和解决问题的勇气,这也是我们常说的德才兼备。


遇到挫折和指责,能不能首先反思自己的问题,进行自我批评;遇到困难或者逆境,能不能有坚定的信念和勇气,直面问题勇敢面对;


待人接物,能不能坚持诚信的原则,能不能信守承诺;


面对挑战和压力,能不能有所担当,不甩锅不逃避;


面对误解,能不能坚持原则等等。


以上是关于云原生架构师的十大核心能力的主要内容,如果未能解决你的问题,请参考以下文章

云原生布道师的机会,这要求。。。

云原生架构和微服务架构有何不同?首席架构师:本质相通

云原生架构的核心技术

云原生架构的核心技术

5G NGC — 云原生的 5G 核心网架构演进

面向云原生的5G核心网云化架构和演进策略