轻量级微服务架构及最佳部署

一、微服务将变得轻量级

架构需要由人去设计,这些人被称为架构师。或许很多人并未授予架构师的头衔,但自己却从事着架构的工作。我们认为,架构这项工作永远都需要由人去完成,可能短期内都无法由机器来取代。如果我们不理解什么是架构,或者对架构师的职责感到疑惑,那么很难让架构这项工作有效地落地。我们将在本节重新认识架构,并重新定义架构师的职责。此外,架构演进是一个曲折的过程,但我们却不难看出架构的发展规律,甚至还能推测出架构将来的发展趋势。我们相信,微服务一定不是架构的终点,它或许只是架构从重量级转型为轻量级的桥梁,我们正是设计并建造这座桥梁的工程师。

现在我们从架构与架构师的角度开始出发,开启轻量级微服务的架构探险之旅。

1. 架构与架构师

可能绝大多数的程序员都想成为一名优秀的架构师,每天都能从事技术架构的相关工作,编点框架代码,画点架构图,写点PPT,帅气地站在讲台上给程序员们进行技术培训。大家普遍认为,架构师的代码比别人写得少,但是工资却比别人拿得多,架构师是技术团队中技术最牛的人,别人搞不定的技术问题,在架构师眼中都是小菜一碟。

这样的人真的是架构师吗?

我们认为,他们不是架构师,而是技术专家。其实架构师与技术专家有着本质的区别,从他们所关注的技术方向来看,架构师更偏向技术广度,而技术专家更偏向技术深度,如图1-1所示。

图片描述

图1-1 架构师与技术专家的区别

换句话说,架构师需要有较强的综合能力,他们需要接触的技术领域较广,但他们所掌握的技术专业能力却没有技术专家那么深。如果我们想成为一名架构师,那么就不应该把所有的精力都投入在某个技术领域上,而是要学会分散自己所关注的层面,做到在众多技术领域上都要有一定的深度。

架构师除了需要具备在技术上所需的“硬技能”,还需要不断完善自己的“软技能”,比如沟通、组织、学习等技能。有时候软技能可能比硬技能更加重要,甚至软技能还会影响自己的职业发展。如果没有较好的软技能,架构师将无法将自己所设计的架构顺利地移交到程序员们手中,并指导他们将其真正落地。架构师正是通过他们所具备的综合能力来带领技术团队,解决不断出现的技术挑战。

架构师的职责是什么?

我们的回答是:制定规范 + 指导落地。

架构师根据业务需求所制定的合理且可落地的技术规范,我们将这样的规范称为架构。

将架构工作做好犹如我们用两条腿走路一样,左腿迈出去表示“制定规范”,右腿跟上来表示“指导落地”,如图1-2所示。

图片描述

图1-2 架构师的职责

如果左腿迈出去,右腿没跟上来,那不是架构师,可能是需要拄拐的人。然而,我们身边却有一些这样的不合格的架构师,他们只懂得制定规范,却忽略了指导落地。如果架构无法落地,那么就无法称为架构了。

此外,还有一些架构师认为,架构只是技术层面上的问题,自己设计的架构应该用到市面上最为流行的新技术,比如别人公司在用微服务,那么自己公司也要用起来。如果将架构工作脱离于业务需求,我们认为这不是做架构,而是玩技术。脱离业务来设计架构是对架构的不尊重。微服务是一种应用系统架构,需要架构师围绕业务进行设计。

但是,我们绝不要为了微服务而去微服务。

从事微服务架构工作的架构师,相比传统架构的架构师而言,所要求的技能更加全面。他们不仅仅是系统架构师,也是业务分析师,他们的责任重大且挑战艰巨。

从大的方向来看,微服务架构师需要具备以下基本职责。

(1)分析业务需求并切分微服务边界。 
(2)定义架构规范与文档标准。 
(3)确保微服务架构顺利落地。 
(4)改善微服务架构并提高开发效率。

职责与挑战往往是无法分离的,微服务架构师必须面对并克服这些挑战。

(1)架构需要适应不断变化的业务需求。 
(2)架构具备稳定性、扩展性、安全性、容错性等。 
(3)使技术团队深刻理解微服务思想。 
(4)展现微服务架构的价值。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。