我研发领域也从事了一些年,期间也做过一些架构设计工作,包括C#单体转型为Java微服务、Python单体转型为Java微服务等,
也尝试着从自己的经验角度,来汇总一些知识点,同时描述一下如何成长为一个合格的软件架构师,仅供参考,也欢迎跟我一起探讨。
顾名思义,架构师就是指在某个公司/团队里,从事系统架构工作的人。
首先要明确的一点,本文讲的架构师并不是一个职位,而是指一个角色,就是从事架构工作的人。
所以不是说你的职位是架构师,你就达到了架构师的标准;同理,你的职位不是架构师,但是你可能就是这个团队公认的架构师。
作为架构师要注意的点:
架构师不能脱离现有的开发环境、项目的现状、公司的资源投入等,不能坐在空中楼阁里,指挥团队作战。
根据不同领域的细分,架构师也有一些细分的定义,一般会有:
以上细分并不一定全面,而且很多领域的边界其实是不够清晰的,比如:
1、全面了解业务需求
作为架构师,最重要的是精通业务,甚至要求成为领域专家,在系列第一讲就说了:发现问题比解决问题更重要
如果不了解业务,设计出来的架构是不可信赖的。
2、能简化和抽象问题
这是架构师设计和开发高质量软件系统的关键能力,可以帮助团队在复杂的环境中更好地理解业务需求和进行设计、开发。
以用户登录系统为例:
matchLoginType(HttpServletRequest request)
是否当前类处理的登录类型readCredential(HttpServletRequest request)
根据登录类型,读取登录凭证validCredential(UserCredential info)
验证登录凭证3、在有限资源内提出合适可行的解决方案
我们的软件/硬件/人力/时间等资源都是有限的,架构师要权限这些限制,在有限资源下寻求最优解决方案。
比如:工期有限时,架构师要能评估业务实际情况,拆解模块/功能,选择符合需要的最低功能组合进行优先设计实现;
比如:新旧系统重构时,架构师要根据团队人员、擅长技能情况进行技术选型,要衡量如何对业务最小影响的情况下,平滑过渡和人员分配的能力。
4、满足业务需求,保证系统质量
要求架构师能正确理解业务需求,并输出系统所需的非功能性需求,包括可靠性、性能、容错性等;
然后设计合适的技术方案,并持续跟踪过程,以保证质量。
5、在可预测的时间段内的可扩展性
这个一般分2方面:
6、在系统的生命周期内持续演进
架构师根据业务的增长情况,对系统进行持续的监控、评估和迭代改进。
最终目标就是在不影响业务增长的情况下,持续提升系统的可靠性和吞吐量。
作为一名合适的软件架构师,一般应该拥有的能力:
这些能力,基本都需要通过持续的学习和锻炼,比如抽象能力,就是要长期做需求分析、划分领域边界,并对比同类项目的设计,找出自己设计的不足点,进行学习和重构。
一定要记住,技术不是全部,很多场景,都可以通过需求优化来解决,而不是通过复杂的技术方案处理,后面我会有一些文章来举例。
这里分享一张极客时间的“架构师技能图谱”,可以参考:
这张图总是会被CSDN报 图片违规,大家可以自己搜索一下:
极客时间 架构师技能图谱
再分享2张来自https://roadmap.sh/的:前端能力路线图 和 后端能力路线图
—
所以,总结一下,怎么让自己持续成长,没有捷径:
理论与实践相结合,我们知道,有2种知识:
1、别人告诉你或书上学到的,这是理论;
2、自己亲身经历的,这是实践;
只有理论,很容易遗忘;只有实践;你不知道要提升什么。
我的经验:
1、自己踩过的坑,要进行复盘,了解为什么出问题,本质原因是什么
2、别人踩过的坑,我会去尝试在测试环境踩一遍,加深印象,并探究本质
最后分享一个在知乎看到的学习问题,挺有意思的:
知乎有人问过一个问题:古人有上策中策下策,为啥很多都选下策?
有个高赞回答是这么说的,以学习为例,上中下三策:
这三本书,阅读起来确实会比较枯燥,可以看一遍有个印象,再实践一段时间,回来再阅读一遍
同时,我们也不要只关注技术领域,要关注一些技术领域之外的知识;
尤其强烈推荐刘润的5分钟商学院,这是一个音频系列,每个音频5分钟左右,涵盖了商业知识、产品创新、自我管理、团队管理、绩效提升等全方面的知识,
在知乎上有些人对他评价不高,但是对于技术领域的我来说,很多知识几乎是醍醐灌顶的作用,自然也对我的成长、工作都提供了很大的帮助,强烈推荐学习。
这里介绍2个关于架构师的认证考试,有志于提升自己的架构能力的同学,可以去尝试一下,
认证涉及的内容,是比较全面的,能在整体上提升个人能力,所以千万不要抱着应付考试的目的去学习,甚至只学习,不考试也是相当OK的。
TOGAF是The Open Group Architecture Framework的缩写,它由The Open Group开发,并在持续更新中,The Open Group是一个非盈利的技术行业联盟。
The Open Group 将 TOGAF 定义为“企业架构的全球标准”,它提供了一整套方法论和最佳管理实践。
TOGAF已被80%的福布斯50强公司使用,并得到HP、IBM、Kingdee(金蝶)、Oracle、SAP等国际领先IT企业的高度认同和积极推动。在中国企业架构实践中,TOGAF认可度超过50%。
TOGAF官方介绍:https://www.opengroup.org/togaf
百度百科介绍:https://baike.baidu.com/item/TOGAF/9832356
TOGAF认证的能力模型简要概述如下:
1、通用技能:领导力、团队合作、人际交往、口才、写作、逻辑分析、干系人管理、风险管理;
2、业务技能和方法:业务案例、业务情景、组织结构、业务流程、战略规划、预算管理、战略愿景、业务指标、业务文化、遗留的投资、业务功能;
3、企业架构技能:业务流程设计、角色设计、组织结构设计、数据设计、应用设计、系统集成、IT行业标准、服务设计、架构原则设计、视图和视角设计、构建块设计、解决方案建模、效益分析、业务交互、系统行为、项目管理;
4、方案和项目管理技能:方案管理、项目管理、管理业务变更、变更管理、价值管理;
5、通用IT知识技能:IT应用开发方法和工具、编程语言、代理应用、信息消费应用、信息提供应用、存储管理、网络、基于Web的服务、信息技术基础设施、资产管理、服务等级协议、系统、商用现成品、企业连续体、迁移规划、管理工具、基础设施;
6、IT技能:软件工程、安全、系统和网络管理、事务处理、位置和目录、用户界面、国际化操作、数据交换、数据管理、图形与图像、操作系统服务、网络服务、通信基础设施;
7、法律环境:合同法、数据保护法、采购法、诈骗、商业法
系统架构设计师,是计算机技术与软件专业技术资格的一项高级认证,参考官方介绍:https://www.ruankao.org.cn/platform/details?code=03_03
它的考试要求:
(1)掌握计算机硬软件与网络的基础知识;
(2)熟悉信息系统开发过程;
(3)理解信息系统开发标准、常用信息技术标准;
(4)熟悉主流的中间件和应用服务器平台;
(5)掌握软件系统建模、系统架构设计基本技术;
(6)熟练掌握信息安全技术、安全策略、安全管理知识;
(7)了解信息化、信息技术有关法律、法规的基础知识;
(8)了解用户的行业特点,并根据行业特点架构合适的系统设计;
(9)掌握应用数学基础知识;
(10)熟练阅读和正确理解相关领域的英文文献
可见需要了解的内容还是比较多的。
架构漫谈的5个章节,到此就告一段落。
后续的文章,我会列举一些我经历过的需求分析案例,以及我们采用的技术设计方案。