目录

架构师应该学习的知识

原文:成为一名架构师得学习哪些知识?

作者:慕容千语

什么是架构师

架构师英文 architect,这个词源于建筑学。软件工程当中的架构师和建筑工程当中建筑师有许多相通之处,都是负责「产品」宏观的架构设计。

在一个团队里,架构师充当了工作 Leader 的角色,不仅要完成项目的整体设计和规划,还要带领工作团队一起解决实际问题,攻克工作难点,使得软件的设计、开发、测试、发布流程得以顺利完成。

下面这张图,表达了一个应用架构师(工作 Leader)在团队当中的角色:

https://gitee.com/lienhui68/picStore/raw/master/null/20200815200253.png

需要注意的是,这张图中的架构师只是应用架构师,所以运维和 DBA 人员没有归入到他的管辖范围。同时,每个公司的具体组织结构也不尽相同。

架构师确实需要很强的编程能力,但数据显示,编程在架构师的工作占比中,只占 13%。最重要的是什么呢?IT 架构,占了 62%

架构师的职责

架构设计

架构师,顾名思义,第一职责就是在软件设计阶段,做好软件「骨架」的设计。架构师需要把产品的需求翻译成软件工程的设计文档,确定各个系统与模块的边界,评估系统的量级。

工作选型

从前端到后端,从缓存到数据库,面对为数众多的第三方组件,架构师需要作出合理的选择。

  • 前端页面选择模板引擎还是动静分离?服务端选择 Java 还是 Node.js?

  • 服务治理选择 DubboX 还是 Spring Cloud?

  • 消息队列选择 RocketMQ 还是 Kafka?

  • 分布式缓存选择 Redis Cluster 还是 Codis?

  • 数据库选择 Mysql 还是 Oracle?

  • 全文检索选择 Solr 还是 ES?

工作没有绝对的好坏之分,关键看是否适用于公司的业务场景。

管理非功能性需求

满足需求是项目开发和架构设计的根本,而管理非功能性需求则是项目的升华。

在公司从 0 到 1 的创业阶段,开发者更关注的是功能性需求,往往一个简单粗暴的 MVC 项目就可以搞定一切。当业务量级逐渐增大,用户需求逐渐多样化,非功能性需求的重要性就逐渐显现。

非功能性需求包含的内容

  • 性能(响应时间)
  • 可扩展性(适应需求的快速变化)
  • 可用性(四个9,五个9,必要时的限流和降级)
  • 安全性(防范各种恶意攻击,实现风控)
  • 可监控(完善的监控和报警机制)
  • 灵活性(便于非开发人员进行配置)
  • 可维护(持续集成,持续部署)
  • 国际化(冲出国门)

攻克工作难题

架构师不只需要关注宏观的设计,也需要具有攻克工作细节的能力。在团队开发过程中遇到难以实现和优化的工作问题时,架构师需要发挥工作优势,解决系统的疑难杂症。

工作人员的管理和指导

架构师不只是一个工作大牛,也应该是一个好的管理者,在工作中需要把较大的项目和需求拆分一个个 Story,依照每个人的情况分配给研发团队的成员,并且在必要的时候进行工作上的培训指导。

架构师的种类

应用架构师

应用架构师是行业中数量最多的架构师,主要负责公司产品的工作架构。产品架构师需要对业务有足够的理解,根据产品需求设计架构,在运营团队的协助下评估量级,并管理项目的整个生命周期。

中间件架构师

中间件架构师主要负责基础框架、公共组件,通用服务的搭建。比如分布式服务框架诸如 Dubbo,HSF;比如消息队列诸如 RocketMQ,Kafka。在大型互联网公司中,往往不是把开源框架简单「拿来」,而是研发出符合自身业务的企业中间件。

基础设施架构师

基础设施架构师负责服务器资源、网络资源、数据库等基础设施的建设;以及持续集成工具、持续部署工具的搭建。

以上所说的三种,只是架构师最基本的分类。一些特殊领域也有着专门的架构师,比如网络安全架构师、大数据架构师等等。

其实还有一种架构师,叫做PPT架构师🙂

如何成为一名优秀的架构师

工作的深度和广度

有一句话说得好,将军就是更优秀的士兵。架构师作为程序员中的将军,首先需要有足够的工作深度,同时需要广泛了解行业内的主流工作,以便更好地设计架构和工作选型。

业务的理解

抛开业务谈架构就是耍流氓。这一点对应用架构师来说尤其重要。只有对业务有了充分的理解,才能对项目的设计和扩展做出合理的规划。

良好的沟通能力

架构师不只是低头做工作,更需要协调指挥团队内的成员,也需要跨部门和产品、运营、项目经理等人员做及时有效的沟通,所以沟通能力是必不可少的。

程序员进阶成为架构师必然是一段艰辛且曲折的过程,你不仅需要在工作中不断实战来积累经验,还要利用一切可以利用的时间来继续深入学习,为了节省大家学习探索时间,我这收集整理了一套适合1~5年Java程序员进阶学习的线路规划脑图。现分享给大家。

开源框架解析专题: 站在巨人肩膀,收获不一样的视野

https://gitee.com/lienhui68/picStore/raw/master/null/20200815201445.png

架构筑基专题: 深入内核、直击故障、拒绝懵圈

https://gitee.com/lienhui68/picStore/raw/master/null/20200815201528.png

**微服务架构专题:**你还不知道微服务,怎么涨薪

https://gitee.com/lienhui68/picStore/raw/master/null/20200815201607.png

高性能架构专题: 成为互联网架构师,你要的都在这里

https://gitee.com/lienhui68/picStore/raw/master/null/20200815201619.png

团队协作开发专题: 让你团队开发效率提高十倍

https://gitee.com/lienhui68/picStore/raw/master/null/20200815201645.png

B2C商城项目实战: 撸起袖子干实事,项目经验那点事

https://gitee.com/lienhui68/picStore/raw/master/null/20200815201655.png