架构师,编织数字世界的经纬。
——架构师之道
01
先来个解释,硬技能是通过在特定领域的教育和经验获得的特殊知识,技术专业性是否合格。我们也尝试从多个角度来看看,咱要做架构师,最起码的一些知识需要准备下。
软件架构师精通特定的编程技术,来个例子:
前端技术。提到前端开发,现在大家基本都会脱口而出三大方向尤雨溪大神的VueJS,Facebook的ReactJS以及Google的AngularJS,以及配套的WebPack,以及JS化的后端语言Node.js。
后端技术。
企业级应用首先Java生态,无论开放性、持续性及可持续性,还是非常出色。 新秀Golang,Rust。对于网络计算,并行运算都有出色的表现。 C/C++依旧坚挺。在高性能领域及单片机领域风采依旧,有同学可能会说Rust也是牛的一匹,嗯,确实,只不过,想完全替代C和C++还有很长的路要走。
大数据、AI及科学计算。提到这个,一般还是Java的天下,不过Python凭借它妖娆的身姿,最近几年在网络处理(非高性能场景)及AI及科学计算方面杀出了一片天地。
咱就不再继续赘述了,每个技术流派都有自己的看家本领,就类似于咱们春秋战国时代的百家争鸣(事实也是争雄)。作为架构师,可以做某个领域的纵深专家型架构师,也可以做横盘的综合架构师。但是无论哪种,对于常见的技术栈或者方向,还是都要一定的认知。
但是,从另一个维度来看,咱们作为人类,有一个首要的先决条件我们要明白——人的脑力是有限的。所以,也不推荐大家既要又要还要还想要,没必要每个技术都摸的门儿清,掌握相关的技术理念,以不变应万变,而万变又不离其宗,也许千帆过尽,才柳暗花明般发现——这才是学习技术的正确姿势。
软件系统架构师有多种职责,可以分配从设计到软件工程的多种任务。说白了,也就是凭借自己对业务诉求的理解,以及相配的技术方案和实施路径,再加上对团队同学们的“底细”了解,把合适的放在合适的位置上,给予合适的职责,并约束好相应的技术规范和质量及时间。
因此,对技术生态的具体了解对我们来说至关重要。除了良好的技术知识外,架构师还应该了解技术替代方案。
其实技术生态圈的认知,咱们在上面的技术深度也有提到,简单罗列下目前场景的技术生态吧,也给大家重温下。
DevOps生态。提起DevOps,就不得不提那个“云”,让人又爱又恨的那朵“云”。
10多年前开始火的一个概念,一直贯彻到现在,只不过随着时间的发展,云的基建,我们普通的散修玩儿不起了,大厂专属了。但是,云的相关技术方案和生态,还是可以搞搞的,比如:Kubernetes + Docker容器生态。再搭配上研发管理流水线,任务管理,自动化测试,搞定,一个简配版的DevOps出炉。 微服务生态。微服务可以说是和DevOps中的云化的理念同期伴生而出的技术理念。提起微服务生态,还是要重点提下Java的微服务体系。其实搞懂这些,Java的生态体系的小半壁江山被你摸清。
Spring Cloud Dubbo 云原生。就是借助Kubernetes和容器技术来做,这个后续章节我们会详细分说。
大数据生态。大数据体系中,可以说是Java生态的另一块儿制胜福地。特别是从Google的那篇论文——HDFS开启了掘金之路。就像上面小节中所提,Python也逐步展露些头角。
AI生态。AI生态,怎么说呢,又是几经波折,从世纪初Google发布的几篇论文,各路学术大拿,也陆续发布了一些衍生模型,或者新的模型,到后来,再到具体的应用,语音识别,人脸识别,OCR图片识别...等等,到后来的AI机器人,再到这两年爆火的ChatGPT大模型。这里面,有Java生态参与其中,也有C/C++生态参与其中,更有Python的影子。AI生态算是其它技术生态叠加AI算法模型的一个集大成者吧。
中间件生态。泛化的中间件,包括:MQ,缓存以及数据库生态。在这个生态里面,MQ又有多个派系,Java,Golang,Erlang都有一席之地。缓存也有C/C++和Java两个体系。而数据库,基本就是C和C++的天下,也有小众的Java和其它小语言。
我们提到生态,其实就变相的明了,这不是一家之言之地。每个派系都会有各自的开源的组件来丰富,也都会有相应的技术框架来去整合,这样的体系才能称之为生态。
提起云,其实最初的初心,就是想做到资源共享共建共用,以避免不必要的浪费。谁能料到,几年后,硬件被国产打到白菜价,一台服务器没几个钱,反而搭建云平台及相关管控机制带来了巨大的资金及人力资源的投入。这也是为啥,风起一段时间后,多余中小企业来说,云成了鸡肋般的存在,后来公有云逐步的兴盛起来,才让中小企业尝到甜头,乃至于根据自身实力来决定是否自建云平台。
如果云只是这个段位,那我们也确实没必要单独拎出来讲了。云的价值,其实最大的地方,在于云的思想,以及基于该思想衍生出来的各种技术形态,不仅仅局限于硬件资源层面了。
提到基于云的技术形态,如雷贯耳的有:
容器化(Kubernetes+Docker)。 服务扩缩容 ---- 无状态和有状态服务的动态按需伸缩。 环境的快速搭建。跟时间相比,对于企业来说,那点资源消费,其实不算啥了。云化的PAAS平台,能为研发体系插上翅膀。 任务分时资源利用多样化。不同优先级的任务,不同时段的任务可以共享底层硬件资源。
其实归根结底,最大最大的溢出,就在于能让我们这帮社畜,根据业务需要,随心所欲机动灵活的来开发我们的系统以及长期可运维。
软件架构师在现代架构和范例方面具有灵活性,这对于创建健壮的应用程序至关重要。对于软件应用程序,体系结构是显示其组件如何安排和功能的基础。
架构师熟悉各种软件架构模式,无论是客户机-服务器、移动应用程序还是现代web架构。该专家可以根据组织的软件需求选择最佳架构,并帮助他们选择最佳技术堆栈。
它们还能够处理各种现代应用程序体系结构,如微服务体系结构和无服务器体系结构。除了不同的体系结构,软件架构师还精通各种软件范例或编程风格,如OOP(面向对象编程)和软件开发原则。
聊这一小章,聊的好无聊,有些教条,而实际情况呢?懂这个架构,懂那个范式,懂那个原则,其实都不重要,重要的是了解于心,化于行。说到这里,不由的想鄙视下自己,犯了装x的病,不过人呢,都喜欢装x,尤其是教育后起而常挂嘴边的那句:“没有错误的兵法,只有用错兵法的人” ---- 真TMD的对,让人无从反驳,只是能把兵法化于心的能有几人?古来能青史留名的又有几个名将?
除了对技术的理解及实现的具象化的要求,软件架构师依然需要对所面临的业务领域进行很好的理解和拆解——这也是我们常说的业务建模,并基于业务模型构建相关的数据模型及数据库的逻辑和物理关系模型。
除了这些技能外,还需要许多其他的技术技能:
统一建模语言; 熟悉软件开发的DevOps架构; 系统设计实践知识; 数据建模和数据库设计技能。
02
软实力也不容忽视
一不小心,硬性的能力牢骚的有点多了,那我们来看看软实力的诉求。
如果说硬技能展示了架构师所需的技术实力,而软技能则是将软件架构师与其他人区分开来的人际交往能力和特征品质。我们也一起来看看软件架构师所必备的常见的软技能。
图1-2 架构师软实力
领导能力是软件架构师的主要素质,因为架构师在团队中充当的更多的是一个导师和向导的角色。强大的领导能力对架构师的工作形象至关重要,我们要与开发团队协调并在整个开发过程中向小伙伴们展示工作路径及相关的技术方案。
此外,架构师一般情况下还可以管理多个团队,且要协调团队成员之间的工作及协作,解决冲突,激励团队,必要并快速做出决定。
也许有的同学会说,我就想踏踏实实做点技术不香吗?非要掺和那么事情干啥?其实领导力应该是全方位立体化的一个能力体现:
技术领导力;顾名思义,技术方案,技术决策,在公司中要有绝对的影响力。 业务领导力;对业务的嗅觉,业务的理解,是我们做好技术方案的首要条件,有些产品化的公司,业务领导力更是一个Top1的引导性角色。 组织领导力;能有强大的组织向心力,提到这个,无论一个国家或者一个企业组织要往前无谓的前进,确实需要一个强力的组织领导力,这就像太阳和八大行星及各种浮沉围绕着太阳奔波在银河系中。 执行领导力;提起执行领导力,脑海中忽然飘过一个词“妖刀过隙”,事情在推进过程中,总会面临各种各样的牵绊,一声长叹,一声无奈,盖因我们是活生生的人吧,宏观看公司中会有各种角色和各条事务线,这就会有各种纠葛、各种牵绊。其实反过来想想,这就是人性,大家都有各自的关切,事务都有不同的推进线,各种博弈,角逐,妥协可能会伴随我们整个的研发过程也算是合乎人性的自然规则。但,这不是让我们躺平摆烂的理由,反而,可以学学逆流而上的三文鱼,保持自己的第一性原则,借力打力,让自己的目标夹缝中往前推进才是正理。
解决问题是软件架构师最重要的技能之一,一是小伙伴们在研发过程中难免会遇到各种磕磕绊绊,系统发布后运行起来也难免会遇到各种疑难杂症,这也要求我们架构师有足够的知识储备和智慧来去面对不同的问题和挑战。此外,架构师还需要管理系统设计中的多个任务,能够识别问题并提供适当的解决方案来解决问题。
计划和目标设定
由于软件架构师同时处理多个任务,时间管理成为他们工作角色的一个关键方面。除此之外,架构师还参加了与各种利益相关者和高层管理人员的会议,以确保项目朝着正确的方向发展。因此,架构师有能力管理时间和设定目标来应付他们繁忙的日程安排。
本章其实直白点是想告诉大家,硬实力就像拐杖或者梯子能助你奔腾在架构师初始的成长道路上,但这是远远不够的,软实力又叫情商真的决定了你能走多远,爬多高。在这里给大家额外唠叨一点,育儿的时候,不要只看成绩,情商有时候更重要,哈哈,听听就行哈。
03
架构师分类
在有的公司中,如果没有更细的角色分工的话,一般情况下,解决方案架构师还会贯穿于整个产品/服务的交付落地全生命周期。
业务架构师
业务架构师,这个称谓跟其它架构师称谓相较,其实不算高频。也就是说,只有公司有了一定体量,才会考虑将此角色从综合架构师或者首席架构师或者CTO身上剥离出来。顾名思义,业务架构师,其实是站在公司的业务视角来去统筹目标产品的业务域及相关业务流程的设计,此角色,无论是To B的软件公司,或者To C的互联网公司都有可能会碰到。
那业务架构师具体都做些啥呢?
业务架构师会协同产品/BA同学进行业务梳理,并给出相应的业务模型;
结合业务模型,来完成相应的业务架构及功能架构的划分;
给出相应的业务流程及关键节点;
给出数据流图及主要的关键数据变化。
软件技术架构师
输出技术架构及方案;
搭建技术团队及培养技术梯队; 制定研发规范及要求; 给出最佳实践,以备大家不时之需; 带队攻克技术难关,扫清技术障碍; 规范交付物及部署架构。
数据架构师
数据架构师相对来说比较少见一些,一般由技术架构师兼任或者DBA兼任。相较于传统技术型DBA,数据架构师对业务有更深的了解。
数据架构师的职责,一般会包含但不限于:
配合业务架构师输出数据流图; 根据业务模型,设计数据模型,ER图及相关表结构; 根据业务诉求,选取相应的数据处理方案:
内存数据库;
关系数据库;
NoSQL数据库;
图数据库。
基础设施架构师
基础设施架构师(Infrastructure Architect)顾名思义主要是围绕系统的部署方案。比如我们常见的集群部署,双活/灾备,异地双活等等,都是出自基础设施架构师之手。那具体的职责大概都有哪些呢?
根据技术架构及业务诉求来制定部署方案及部署架构; 规划网络及安全设置;
Internet;
域名,DNS; 防火墙; DMZ区规划; 应用系统区规划; 数据区规划; 网段的划分及路由的管控; 软硬LB的设置; 安全策略的设置;
系统的监控; 系统的日志采集、分析、告警等; 服务的灾备处理; 数据备份/恢复机制; 流量分发及管控;
CDN分流; API和UI静态资源分流; API和文件流分流(可引入OSS等);
黑白名单管控; 异常访问拦截处理等。
如果说上面的架构师术业有专攻的话,那综合架构师就是一位浑身无短板的强者,也可以说综合架构师其实就是CTO的B角,或者说是CTO的顺位继承人;当然,要坐上CTO的职位也没那么容易,需要更敏锐的业务洞察能力以及超强执行和管理能力,这个我们在后续的章节也会陆续讲到。
说到这里,其实我想起了以前的一位随我在国外奋战过的好兄弟,那个时候,由于在国外接触的人也不太多,我们业余的时候,会选择打打对战游戏Dota,两三个猥琐男平推对面5个超级英雄,哇咔咔,别说,还挺有成就感——没有追求的咸鱼就这点爱好,无解。
04
终于要说到重点处了,身为牛马的我们要如何才能让自己在技术这条路上能够一路打怪升级,晋级心中的那个位置?
说到成长,我们不妨思考下我们的整个职业生涯,我们假设以22岁大学毕业算起,我们IT牛马的年龄坎儿,一般是在35岁,这个年龄不需要我再过多的解释什么了吧?这几年社会上各个大中小长都已深刻的教诲了我们如何做人了,哎,一声长叹 ---- 青春饭不好吃哟!
我们先姑且按照35岁这个坎儿来进行分解,22岁到35岁,一共13年,我们不妨把13年按照2年一个台阶去划分进阶;参考修仙路来说的话,就是:练气 -> 筑基 -> 金丹 -> 元婴 -> 大成 -> 金仙。
对标我们的职业生涯,其实就是:初级研发工程师 -> 中级研发工程师 -> 高级研发工程师 -> 专家/初级架构师 -> 中级架构师 -> 资深架构师。大家现在是不是清晰多了,在这短短13年中,给大家一个最大建议就是:如果真要吃这门儿饭,就要学会打怪升级,也看看自己的时间刻度和自己的职业能力是否对得上,善意提醒下----不要自己骗自己,那没意义。
图1-4 漫漫“修仙”路
按照这个路子走过13年基本问题不大,真正的风浪是在成为“金仙”之后。金仙,不仅仅只是代表你自身的能力阶段,同时也代表你的人力成本已经很“金贵”了,同时也代表你这条老油条够“金黄”了。
其实人类社会的发展基本都会遵循金字塔原则 ---- 也就是云罗大众和精英、精英中的精英的分层分级。就像图1-4中所展示的这条“修仙”路,大家都想往上爬,只是一个残酷的事实就是,每爬一个台阶就会少一大波人,没一个台阶都是无声的残酷搏杀,只不过现实社会中的各种烟火气的喧嚣遮掩了这弥漫的血腥而已。
到了金仙之后,越来越大的风浪会接踵而至,这也应对了网上大家常调侃的那句话“风浪越大鱼越贵”,扛得住风浪的金仙,才会越贵,反之,则是无情的淘汰。
如果能往上再走走,也就是渡劫成功的话,还能额外有几年蹦跶到40岁;如果再能渡劫成功,那可能还有几年高处不胜寒;否则,马路司机、外卖员、家电维修工等等,就是我们的最终归宿,随着AI和智能驾驶的发展,也说不定到时候连马路司机都是奢望了,加油吧,社畜们,奋斗吧,牛马们!噢耶,我为我是一名社畜我骄傲!!!仰天大笑三声,擦去眼角不自觉溢出的泪水,整理心情再出发!!!
本文作者 陈学进 陈学进,资深架构师和AI技术专家,早年就职于国信朗讯和上海惠普担任资深架构师等职务;后加入平安科技、众安科技、恒生电子等金融科技公司,从事过基于AI大模型的人工智能体系的建设,也主管过基于大数据的数字化营销产品线,后又从事高性能极速交易的金融投资核心系统的架构设计和技术管理工作。常年浸润于技术一线,对于ToB的系统建设,ToC的互联网系统建设都有比较深的见解,多样的经历,也造就了丰富的技术认知,期待跟大家一起在数字世界修个仙。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...