架构师成长之路(1)--什么是架构师

news/2024/5/20 6:01:48 标签: 架构, 成长, 技术人生, 架构师
原文地址为: 架构成长之路(1)--什么是架构

前言:

哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知。

如果我们要成为架构师,我们自己要面临的三大问题:
找准自己定位:我是谁?在哪里?
怎样做好架构师:我要做什么?
如何搭建架构师知识体系:我该怎么做?

这里面就是做事方法论:目标(我要做什么),方法(计划)(我该怎么做),  执行/行动

1、架构师定义

    什么是架构师,这个架构话题时永恒的问题。每个公司对架构师的定位也有所不同,因为不同公司所处的阶段,业务模式,应用场景也都不一样。对架构的要求也不一样。

     在初创公司的野蛮生长阶段:业务场景和需求边界很难把握,有时候根本不需要架构师,产品需要快速迭代和变现,需求频繁更新,这个时候需要的是快速实现。当然如果公司成长以后,这个阶段就是欠下很多技术债,埋下很多坑,如果人员流动很频繁,后期系统维护成本是非常巨大的。

     在公司成长稳定阶段:业务模式和应用场景边界都已经比较清晰,这个时候最需要架构师需要架构师能对线上业务进行模块划分,系统拆分重构,并做好相关高可用的措施,以保证系统的稳定,安全、高效地运行。

     不同的行业,对架构师的要求也不同,比如电商业务和AI领域,从架构到业务场景,完全是两个物种。

    在百度百科里面这么定义: 系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导任务。具体来说是一个确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此架构应该是特定的开发平台、语言、工具的大师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
架构师实际上就是软件的总体设计师。打个通俗的比方比如某个工程总设计师,类似三峡工程的总设计师。
架构师的形成一定是在实践中积累起来的,而并非上了几次培训班,读了几本书就可以成功的,架构师是在工程实践中培养出来的! 

2、架构师作用/职责

      架构师在整个软件系统开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化。

1)、按软件开发过程维度来说:

       需求阶段:软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和 可测试性等等,此外,架构师还要经常审查和客户及市场人员所提出的需求,确认开发 团队所提出的设计;

       架构设计阶段:架构师负责对整个系统架构设计,制定开发规范、开发计划,指导整个开发团队完成这个计划。

       开发阶段:架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;

       测试和交付阶段:协调做好相关测试和部署。

       维护阶段:软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。


2)、按职能维度:


1 确认需求
架构师要懂得用户需求,理解用户真正想要什么,这使得架构师必须要和分析人员不断沟通,反复确认需求规格说明书,以此来保证他精准清楚用户需求。
项目经理刘先生在受访时说:「架构师会与很多人沟通,例如开发人员,例如我们项目经理,有时甚至是用户本身。架构设计的目的很明确,目的是什么呢?挖掘用户需求。」
2 系统分解
架构师认可需求规格说明书后,架构师已明确用户需求是是什么,这时候便看架构师的分解能力了。
系统分解包括纵向分解和横向分解:
纵向分解是将整个系统分层,从而将整体系统分解成下一级的子系统与组件。

横向分解是在系统分解成不同的逻辑层或服务后,对逻辑层进行分块,确定层与层之间的关系。


3 技术选型
在系统分解后,架构师会最终形成软件整体架构,接下来,架构师的职责是技术选型。
前端到底用瘦客户端还是富客户端呢?数据库是用MySQL还是MSSQL又或是Oracle呢?架构师张先生在接受采访时说,在了解用户需求后,分解完系统后,技术选型是非常重要的环节,提出各个方向,我再进行评估。不过,很多人都以为架构师是有决定权的,其实不是,架构师没有拍版的权力,决定由项目经理来做。 
架构师在技术选型阶段会提供参考信息给项目经理,项目经理再从预算、进度、人力、资源等各方面情况来权衡,最终确认。

4 制定技术规格说明
如前文调查显示,架构师在项目开发过程中是「灵魂人物」,并且要具备协调组织能力和懂得人员分工。
在制定技术规格说明阶段,架构师要协调起所有的开发人员,架构师通常会用技术规格说明书与开发人员保持沟通,让开发人员能从各个视角去观测、理解他们负责的模块或者子系统,确保开发人员能够按照架构意图实现各项功能。


3)、关注点:

 •方向规划:有想法和技术展望目标,制定短期目标
 •架构设计:集思广益来设计,归类总结,根据讨论结果制定规范。设计不仅仅是技术相关(业务流程,业务方向,模块划分组合,框架设计,流程纰漏等),设计出来还是需要实施的。
 •技术攻关:疑难技术点攻关,将问题集中化解决,提供平台化解决方案以及选型决策。
 •解决疑难问题:发现各类型问题(不仅仅是技术),通过规范,演讲,绘图等方式解决隐患。
 •互动沟通:部门之间沟通,开发之间沟通,产品之间沟通,市场沟通,沟通后产出图形化文档及设计。
 •关注点:秩序,统一,规范,稳定,高效

     

架构是要靠团队做出来的
        •保持和架构的沟通,架构通过团队的沟通总结出方向
        •队员经常提出自己碰到的问题,并分享给大家,思维碰撞促进发展
        •产品经常提出设想和规划,能够使得架构符合未来发展需求
        •运维经常提出隐患及分析,能使得架构快速拆分模块
        •定期做总结归纳以此分析问题,解决问题
        •团队成长、就是每个人的成长、每个人成长眼界自然增长
        •团队的成功、就是产品的成功,产品的成功就是公司的成功
       公司的成功可以给你加光环,但光环不代表自己的能力代表经历

3、架构师分类

软件架构师:

软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员

web架构师:

web架构师是网站系统、功能、模块、流程的设计师,架构师,好比是高楼大厦的设计人员,通常一座大厦在建之前,都先由设计师将蓝图描绘出来,包括其形状、结构、尺寸、材料等等,然后建筑工程师带领工人们按照蓝图将大厦一层一层地建起来

 内部方向分类
 系统架构师:
 服务器 负载,可靠性,伸缩,扩展,数据库切分,缓存应用
 应用架构师:

 理解业务,梳理模型,设计模式,接口,数据交互

4、架构师具备素质能力

      •  精通某项技术,能够从本质上类比,触类旁通其他技术

      •  对等所有技术,只有合适和不合适,没有喜欢和不喜欢。

     • 视野开阔,了解不同技术的优缺点。知道使用某项开源技术实现某项业务需求,能够辨别重复造轮子。

     • 精通设计模式,但又不泛用。

     •  把系统拆分成多个子系统或模块。模块之间尽量松耦合,使得原先串行的开发任务变得可以并行发展。

     • 能清楚系统的瓶颈在什么地方, 不断定位技术难度,开发进度,性能,内存等个方面的瓶颈。不断调整骨干力量解决瓶颈,在风险爆发之前消除隐患。

     • 能做好前瞻性设计,预判到需求可能产生的变化。

架构师团队内做的事情

        •沟通能力:各个方面都要了解,人人想法及规划都要知道,了解产品思想,用了什么方法实现的
        •组织能力:组织推动各种技术的改进及功能的完善
        •谈判代表:左右两难的时候的调解人
        •设计模块及业务:通过图形化设计发现开发后才会发现的业务问题
        •成本规划:通过过往经验评估成本及步伐
        •愿望收集:不断收集建议及愿望,一步步实现
        •传播布道:不断参与行业交流,提高理论及技术知识科普分享团队








转载请注明本文地址: 架构成长之路(1)--什么是架构

http://www.niftyadmin.cn/n/1167134.html

相关文章

libevent(八)激活事件

激活事件添加流程 事件发生后,需要把对应的event加入到激活事件队列中。 整个流程如下: 对于定时器事件,在timeout_process过程中,会将事件从最小堆中删除。 激活事件处理流程 在even_base_loop中,底层dispatch返回后的核心问题就…

PL/SQL Developer 9.0.1.1613+注册机

原文地址为: PL/SQL Developer 9.0.1.1613注册机PL.SQL.Developer.v9.0.1.1613.Incl.Keymaker下载地址: FileSonic: http://www.filesonic.com/file/2177581831/PL.SQL.Developer.v9.0.1.1613.Incl.Keymaker-ZWT.rar Wupload: http://www.wupload.com/f…

System.web.optimization 在 Asp.Net WebForm 中应用得注意了

我们也可以在Asp.Net WebForm项目中去使用Optimization,去处理我们的资源文件,从而起到优化网站性能的效果,前端知识得从小事做起。但是在使用过程中我却发现了下面的问题。 第一步:新建一个Asp.Net WebForm项目 ,然后 通过NuGet添加Microsof…

unity3d 设置Text的文字内容和位置

原文地址为&#xff1a; unity3d 设置Text的文字内容和位置tempQie2.transform.SetParent(GameObject.Find("Canvas").transform);Text text tempQie2.GetComponent<Text>();text.text contentStr;text.fontSize fontSize;RectTransform rt tempQie2.GetCo…

iOS面试题总结(持续更新)

过段时间打算跳槽&#xff0c;找了一些面试题来做&#xff0c;在这里做个总结方便review&#xff0c;希望能对要面试的童鞋有帮助。 以下为面试题: 运行以下代码会有什么结果 NSString *str1 "str1";NSString *str2 [NSString stringWithFormat:"str1"];…

Python list 数据类型:列表

原文地址为&#xff1a; Python list 数据类型&#xff1a;列表列表与字典&#xff08;还没接触到&#xff09;是Python中两个主要的数据类型。他们可以被修改&#xff0c;可以增长可以缩短&#xff0c;也可以嵌套。 列表 list 列表可以完成大多数集合类的数据结构实现。它…

JQuery错误—JQuery未定义

原文地址为&#xff1a; JQuery错误—JQuery未定义出现JQuery未定义这个错误的原因很简单&#xff0c;就是在引用JQuery的js文件时&#xff0c;顺序不对&#xff0c;jquery.js这个引用必须在最前面&#xff0c;不然就会出错 转载请注明本文地址&#xff1a; JQuery错误—JQuery…

IIS 7.0的集成模式和经典模式

IIS7.0中的Web应用程序有两种配置模式&#xff1a;经典模式和集成模式。经典模式是为了与之前的版本兼容&#xff0c;使用ISAPI扩展来调用ASP.NET运行库&#xff0c; 原先运行于IIS6.0下的Web应用程序迁移到IIS7.0中只要将应用程序配置成经典模式&#xff0c;代码基本不用修改就…