阿里P9李运华:架构到底是指什么?

你好,我是李运华。

2018 年,我发布了《从 0 开始学架构》这门课程,分享了我之前在电信业务和移动互联网业务方面的经验和感悟。

后来,我转岗去了蚂蚁国际,从事更加复杂的支付业务。为什么说支付业务更加复杂?因为它涉及的关联方多、业务流程长、业务模型复杂,对安全、高可用、高性能等都有更高的要求。我有幸参与了一个海外钱包从 0 到 1 的建设过程,积累了不少实战经验,于是对复杂业务的架构设计有了新的理解。

2020 年,因为身体等原因,我离开了蚂蚁国际,之后就一边休养身体,一边系统地总结梳理过去的经验,先后创作了《大厂晋升指南》和《架构实战营》。在打磨课程和与各位同学交流的过程中,我对于架构学习的难点和应用的痛点,又有了新的心得体会。

因此,我决定更新这门课程的部分内容,把这些新的收获也全部分享出来,希望能帮助你与时俱进地提升架构水平。

架构到底是指什么

对于技术人员来说,“架构”是一个再常见不过的词了。我们会对新员工培训整个系统的架构,参加架构设计评审,学习业界开源系统(例如 MySQL 和 Hadoop)的架构,研究大公司的架构实现(例如微信架构和淘宝架构)……

虽然“架构”这个词很常见,但如果深究一下,“架构”到底是指什么,大部分人就搞不清楚了。例如以下这些问题,你能够准确地回答吗?

  1. 微信有架构,微信的登录系统也有架构,微信的支付系统也有架构,当我们谈微信架构时,到底是在谈什么架构?
  2. Linux 有架构,MySQL 有架构,JVM 也有架构,使用 Java 开发、MySQL 存储、跑在 Linux 上的业务系统也有架构,应该关注哪个架构呢?
  3. 架构和框架是什么关系?有什么区别?

身为架构师,如果你连架构的定义都搞不清楚,那么无论是自己设计架构、给别人讲解架构,还是学习别人的架构,都会暴露问题,要么无从下手,要么张冠李戴。这无疑会成为你面试、晋升和带领团队工作时的绊脚石。

比如有些同学明明在系统架构上做了不少有价值的工作,但是在给晋升面试的评委讲解的时候,只会说“我们是微服务架构”,然后就不知道讲什么了。结果得到的评价大打折扣,晋升失败,非常可惜。

要想准确地理解架构的定义,关键就在于把三组容易混淆的概念梳理清楚:

  1. 系统与子系统
  2. 模块与组件
  3. 框架与架构

系统与子系统

我们先来看维基百科定义的“系统”:

系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体

你可能感兴趣的:(程序员,后端,算法,Java,Go,计算机基础,容器,大数据)