微软对架构师有一个分类:企业架构师EA(Enterprise Architect)、基础结构架构师IA(Infrastructure Architect)、特定技术架构TSA(Technology-Specific Architect)和解决方案架构师SA (Solution Architect)。这个分类是按照架构师专注的领域不同而划分。
从我们对于企业架构中的维度划分的话,会分为业务架构、应用架构、技术架构、数据架构四个方向,而这四个方向对应的也是四个专业的架构师;如果从中间件、数据库这些又会出现其他的架构师或者专家。那么什么是架构师?
我们先来看一个回答:
架构师不仅仅是一个角色,他的角色性质偏综合方向比较多,定义角色其实是定义职责,架构师的职责是:识别并定义问题,创建、选择或调整架构,从而找到最优的方案,解决问题。
这其实也是架构师做事的一般套路:定义问题->确定架构->提出方案->落地拿结果,他与技术领域专家不太相同,但是往往现在公司中没有专门做技术的,都会从业务实际问题出发,基于宏观视角作出决策,并辅助团队进行落地拿结果。
我们可以看下架构师这块的定位,基于架构师的成长也大概会有三个过程,架构师、资深架构师、首席架构师。如下是两张对比技术成长路线图,虽然不同公司的不同叫法,但是最终一般称为架构师的时候,都需要具备从单兵作战到带兵作战的能力,并从战功和武功两个方面都得到组织认可。
上述的表达说的更多的是理想状态,基于笔者和身边的案例参考,目前架构师如果不能转型管理者和具备前沿技术探索的话,那么更多的工作在于日常繁琐小事,并逐步沦为不伦不类的工具,业务不如业务线研发同学熟、技术不如中间件团队熟、管理不如职业经理,最终成为一个项目经理的角色。
基于笔者工作经验,笔者将其分为知行合一的过程、知的输入来源业务、技术、管理,行的过程分为沟通、抽象、协同,最终通过整合锻炼出架构师的领域深度、广度、影响力、通用力的成长。
架构师往往不是一线经理或者管理者,那么需要可量化的收益和指标来去实施一套架构的话,需要有充分的说服和推销能力。而如下的能力模型则是帮助架构师能够更好的开展工作的法宝。
编程语言:掌握至少一门编程语言,如Java、Python、C++等。 数据库:了解关系型数据库和非关系型数据库的基础知识,如MySQL、MongoDB等。 操作系统:了解常见操作系统的基础知识,如Linux、Windows等。 网络通信:了解基础的网络通信协议和技术,如TCP/IP、HTTP等。 数据结构和算法:了解各种数据结构和算法的基础知识,如数组、链表、栈、队列、排序算法等。 软件工程:了解软件开发的基本流程和方法,如需求分析、设计、编码、测试等。 版本控制:了解常见的版本控制工具,如Git、SVN等。 前端技术:了解HTML、CSS、JavaScript等前端技术,以及常用的前端框架和库,如React、Vue等。 后端技术:了解常用的后端框架和库,如Spring、Django等。 安全:了解常见的安全问题和防范措施,如SQL注入、XSS攻击等。 AI和机器学习:了解AI和机器学习的基础知识和应用,如神经网络、深度学习、自然语言处理等。
架构师则需要在以上掌握的知识上还得包含以下几个方面:
软件架构:设计模式、 架构风格、架构模式、微服务、领域驱动设计、服务治理、代码质量保证
硬件架构:处理器架构、 存储器层次结构、 性能调优、 高可用架构、 安全架构
企业架构 : 企业架构框架、业务流程建模、信息架构、技术治理、企业数据管理、企业安全
微服务架构: 微服务架构设计、服务拆分、服务注册与发现、服务间通信、API 管理、服务监控
云原生架构: 容器化、Kubernetes、云原生应用设计、云原生存储、云原生网络、云原生安全
以上罗列的技能知识,只是一些主要的方向,架构师需要不断学习和掌握新的技术和框架,才能在日益复杂的系统中设计出合理的架构。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。