关于架构师

转自:自阿里云栖社区

作者:独孤建客

原文:https://yq.aliyun.com/articles/694584

(略有改动)

阅读本文大概需要 5分钟。


昨天写的一篇,关于架构师是做什么的文章,之后就有读者在后台问起,说要想成为架构师要具备那些方面的知识,那今天就让我们一起来扒一扒。


曾经有这么个段子:


甲:我已经应聘到一家中型软件公司了,今天上班的时候,全公司的人都来欢迎我。


乙:羡慕ing,都什么人来了?


甲:CEO、COO、CTO、All of 程序员,还有会计、司机都来了。


乙:哇,他们太重视你了,人才啊,这么多人迎接你!


甲:没有啊,就一个人!


乙:靠,#%¥$%...

业内很多的创业型公司都是这样,在公司发展前期,因成本有限,往往需要一个人身兼多职,也比较锻炼人。架构师有时也扮演着这样的角色,身为团队的顶梁柱,公司的「IT架构灵魂人物」,自然大小事务都可能会涉及。


那什么是架构师?


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


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


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



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


架构师都做些什么?


1. 架构设计


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


2. 技术选型


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


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

服务治理选择 Dubbo 还是 Spring Cloud?

消息队列选择 ActiveMQ 还是 Kafka?

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

数据库选择 MySQL 还是 Oracle?

全文检索选择 Sol

3. 管理非功能性需求

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

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

非功能性需求有很多,比如:性能、可扩展性、可用性、安全性、可监控、灵活性、可维护等方面。

4. 攻克技术难题

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

5. 技术人员的管理和指导

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

6. 制定技术规格说明

架构师在项目开发过程中,是技术权威。他需要协调所有的开发人员,与开发人员一直保持沟通,始终保证开发者依照它的架构意图去实现各项功能。

架构师与开发者沟通的最重要的形式是技术规格说明书,它可以是UML视图、Word文档,Visio文件等各种表现形式。通过架构师提供的技术规格说明书,保证开发者可以从不同角度去观察、理解各自承担的子系统或者模块。


架构师学习路线图!一共七大专题:


架构师除了具备过硬的技术能力外,架构思维的培养也尤为重要。因此课程设置上我们兼顾软硬实力的培养,让学员边学技术边修炼思维,实现双向提升,才可以真正胜任架构师岗位工作。

关于架构师_第1张图片
图片发自App

关于架构师_第2张图片
图片发自App

关于架构师_第3张图片
图片发自App

关于架构师_第4张图片
图片发自App

关于架构师_第5张图片
图片发自App

关于架构师_第6张图片
图片发自App

关于架构师_第7张图片
图片发自App

关于架构师_第8张图片
图片发自App

关于架构师_第9张图片
图片发自App

最后再说说架构师都有哪些种类?


1. 应用架构师


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


2. 中间件架构师


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


3. 基础设施架构师


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


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

你可能感兴趣的:(关于架构师)