架构师_架构师面试 - CSDN
架构师 订阅
系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。 展开全文
系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。
信息
外文名
System Architect
又    称
企业架构师或者系统设计师
中文名
系统架构师
属    性
职业
系统架构师知识结构
软件系统架构师综合的知识能力包括9个方面,即:1、战略规划能力。2、业务流程建模能力。3、信息数据结构能力。4、技术架构选择和实现能力。5、应用系统架构的解决和实现能力。6、基础IT知识及基础设施、资源调配能力。7、信息安全技术支持与管理保障能力。8、IT审计、治理与基本需求分析、获取能力。9、面向软件系统可靠性与系统生命周期的质量保障服务能力。作为系统架构师,必须成为所在开发团队的技术路线指导者;具有很强的系统思维的能力;需要从大量互相冲突的系统方法和工具中区分出哪些是有效的,哪些是无效的。架构师应当是一个成熟的、丰富的、有经验的、有良好教育的、学习快捷、善沟通和决策能力强的人。丰富是指他必须具有业务领域方面的工作知识,知识来源于经验或者教育。他必须广泛了解各种技术并精通一种特定技术,至少了解计算机通用技术以便确定那种技术最优,或组织团队开展技术评估。优秀的架构师能考虑并评估所有可用来解决问题的总体技术方案。需要良好的书面和口头沟通技巧,一般通过可视化模型和小组讨论来沟通指导团队确保开发人员按照架构建造系统。
收起全文
精华内容
参与话题
  • 架构师成长之路(1)--什么是架构师

    万次阅读 多人点赞 2020-05-06 16:23:35
    如果我们要成为架构师,我们自己要面临的三大问题: 找准自己定位:我是谁?在哪里? 怎样做好架构师:我要做什么? 如何搭建架构师知识体系:我该怎么做? 这里面就是做事方法论:目标(我要做什么),方法(计划...

    前言:

    哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知。
    
    如果我们要成为架构师,我们自己要面临的三大问题:
    找准自己定位:我是谁?在哪里?
    怎样做好架构师:我要做什么?
    如何搭建架构师知识体系:我该怎么做?
    
    这里面就是做事方法论:目标(我要做什么),方法(计划)(我该怎么做),  执行/行动找准自己定位:我是谁?在哪里?
    怎样做好架构师:我要做什么?
    如何搭建架构师知识体系:我该怎么做?
    
    这里面就是做事方法论:目标(我要做什么),方法(计划)(我该怎么做),  执行/行动

     

    一、架构师定义


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

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

     

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

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

        在百度百科里面这么定义: 系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导人物。具体来说是一个确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员(需求、规范、设计、技术)。主要着眼于系统的“技术实现”。因此架构师应该是特定的开发平台、语言、工具的大师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。

    架构师实际上就是软件的总体设计师。打个通俗的比方比如某个工程总设计师,类似三峡工程的总设计师。

    架构师的形成一定是在实践中积累起来的,而并非上了几次培训班,读了几本书就可以成功的,架构师是在工程实践中培养出来的! 

    二、架构师作用/职责


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

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

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

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

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

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

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

     

     

    2、按职能维度:

     

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

    横向分解是对系统分解成不同的逻辑层,确定层与层之间的关系。是指基于技术架构层次进行的人员角色分工和任务分解。常见的分层:

    应用层:主要负责具体的业务逻辑处理
    服务层:提供可复用的服务
    数据层:负责数据的存储和访问
    分层注意事项:①必须合理规划层次边界和接口;②禁止跨层次的调用及逆向调用。

    纵向分解是将不同的功能和服务分割开来,包装成高内聚低耦合的模块单元,有助于软件开发和维护,还便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。


    3) 技术选型
    在系统分解后,架构师会最终形成软件整体架构,接下来,架构师的职责是技术选型。
    前端到底用瘦客户端还是富客户端呢?数据库是用MySQL还是MSSQL又或是Oracle呢?技术选型是非常重要的环节,因为需要了解每种技术的优缺点,如果没有足够经验和深厚的技术功底,技术选型很茫然。
    架构师在技术选型阶段会提供参考信息给项目经理,项目经理再从预算、进度、人力、资源等各方面情况来权衡,最终确认。

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

     

    3、必备技能关注点:

    1)、方向规划:
    有想法和技术展望目标,制定短期目标

    2)、架构设计:
    集思广益来设计,归类总结,根据讨论结果制定规范。设计不仅仅是技术相关(业务流程,业务方向,模块划分组合,框架设计,流程纰漏等),设计出来还是需要实施的。

    3)、技术攻关:
    疑难技术点攻关,将问题集中化解决,提供平台化解决方案以及选型决策。

    4)、解决疑难问题:
    定期做总结归纳以此分析问题,解决问题。
    发现各类型问题(不仅仅是技术),通过规范,演讲,绘图等方式解决隐患。
     
    5)、互动沟通:
    架构通过团队的沟通总结出方向, 部门之间沟通,开发之间沟通,产品之间沟通,市场沟通,沟通后产出图形化文档及设计。

    6)、开发规范:
    确保系统秩序,统一,规范,稳定,高效地运行。

    架构师无论多牛B,但一定要记住架构是要靠团队做出来的:

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

     

    三、架构师分类


    其实架构师就是个title,每个公司称呼都可能不一样,和架构概念一样。

    软件架构师:

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

    web架构师:

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

     

    架构师也要看在什么样的公司,中小公司很多架构师都是全能的。通常公司规模和体系越大,分工会越细:大体可以这么分类:

    解决方案架构师:与客户探讨业务需求,将业务、市场,与技术、产品结合起来,为客户提供解决他们需求的方案。比如阿里云针对大客户都有解决方案架构师。

    系统架构师: 也称应用架构师。最终确认和评估系统需求,并将业务转换为技术,为研发人员制订核心框架与技术规范 为研发工作澄清技术细节并扫清技术障碍 。服务器负载,可靠性,伸缩,扩展,数据库切分,缓存应用
    平台架构师:这里的平台其实包括两个平台,一个是系统平台,也就是负责搭建多个系统整合的系统应用平台;另外一个其实是基础平台,是专门负责搭建基础技术平台;两者其 实区别蛮大,也经常容易被从业人员混乱。举个简单例子,金蝶有平台架构师一职,但是金蝶BOSS应用和金蝶中间件两者招聘的对象和技术要求是截然不同的。
    业务架构师:业务架构其实已经开始脱离技术层面了,但是它要求架构师有跨越多系统的大局观,去整合和组织不同系统的技术平台与交互模式。其实这个职位的未来也就是CIO了。 主要内容:理解业务,梳理模型,设计模式,接口,数据交互。
    网络架构师:过去,我们可能听的最多的是网络工程师。不错,一个优秀的网络架构师必须有足够的网络技术基底,并且它的关注点也是系统的基础架构。比如说如果搭建并优化集群环境,如果构建基于云计算的系统应用与部署等等。它对于像淘宝、腾讯这样的互联网公司是极其重要的。
    移动架构师:移动互联网的迅猛发展横向和纵向都细分出了很多新的职责和岗位,移动架构师的职责和作用日益重要,既要整体和全局考虑整个前后端的软件系统架构,又要重点深入移动客户端的架构设计的方方面面,既要有跨平台思维,又要拿捏好原生和混合开发的尺度,另外移动应用的特点,导致移动架构师必须要比传统系统架构师更加注重非功能性的质量属性。
    前端架构师:这也是移动互联网的迅猛发展而细分出来的新的职责和岗位,这里的前端特指网站开发中的前端,主要考虑前端呈现层的设计(HTML/CSS/JS/AJAX/RIA/…),跨浏览器设计等等。

    大数据架构师:比如某些公司做大数据处理,需要理解业务,并通过大数据相关技术来实现。

    。。。。。。

     

     

     

    四、架构师具备素质能力


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

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

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

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

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

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

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

    架构师团队内做的事情

            •沟通能力:各个方面都要了解,人人想法及规划都要知道,了解产品思想,用了什么方法实现的

            •组织能力:组织推动各种技术的改进及功能的完善

            •谈判代表:左右两难的时候的调解人

            •设计模块及业务:通过图形化设计发现开发后才会发现的业务问题

            •成本规划:通过过往经验评估成本及步伐

            •愿望收集:不断收集建议及愿望,一步步实现

            •传播布道:不断参与行业交流,提高理论及技术知识科普分享团队

     

    五、架构师职场攻略


        《大型网站技术架构+核心原理与案例分析》总结:

         架构师需要处理好个人、团队、公司的利益。需要不断的在工作中发现问题,解决问题,提升工作经验,知识技能和核心竞争力。扩大自身影响力,达成工作绩效。

    1、发现问题,寻找突破


         即使在一流的技术团队,也有数不清的问题,团队人员已经习惯这些积重难返的问题,而且解决问题投入产出比不大。例如:

         1)数据库线程池存在安全漏洞。

         2)版本管理混乱。

     

     作为一个新人,从局外旁观者的视角看待,自然发现很多问题。如果新人急于表现自己,证明自己,往往是事与愿违,四处碰壁。因此新人要先融入团队,和团队共进退,等熟悉情况,了解问题深浅,再寻找突破口,择机而动。

     

    2、提出问题,寻求支持


    1) 把“我的问题”表述成“我们的问题”

    人们都不喜欢问题,问题意味着麻烦。当人们听到你说,“我遇到一个问题的时候”,下意识的远离你的问题。 如果需要他们的支持,就想办法把你的问题变成他们的问题,是他遇到了问题,而你来帮忙解决。

    既然你也是团队一员,问题表述为“我们的问题”。

     

    1) 给上司提封闭式问题,给下属提开发式问题:

    上司一般是做决策,因此给上司提问需要给出建设性的方案或者建议,然后希望得到他的支持,给上司提问:“你觉得A和B哪个方案更好?”

    给下属则相反,用开放式的问题启发他去思考,寻找创新的解决方案。“元芳,这个问题你怎么看?”

    3) 指出问题而不是批评人:

    如果遇到问题,不要责问他为什么出现问题,而是说问题的紧迫性和解决的优先级。

    4)用赞同的方式提出问题:

    如果人们遇到:“你这里有问题”可能会本能自我保护而拒绝你的建议。

    而如果这么说“我非常赞同你的方案,但是我有个小小的建议”。


    3、解决问题,达成绩效


    在解决我的问题之前,先解决你的问题:

    适当的逃避问题:比如我去开个会,回来再回答的你问题。

     

     

     

     

     

    展开全文
  • 阿里十年架构师用一张图告诉你什么是系统架构师 Java架构解析 2018-11-03 20:54:41 这张图从架构师的综合能力、岗位认识、岗位职责等方面,清楚的画出了作为一个架构的基本准则。人人都想成为架构师,可作为架构...

    阿里十年架构师用一张图告诉你什么是系统架构师

    Java架构解析 2018-11-03 20:54:41

    这张图从架构师的综合能力、岗位认识、岗位职责等方面,清楚的画出了作为一个架构的基本准则。人人都想成为架构师,可作为架构你达到了图上面的要求了吗?

    阿里十年架构师用一张图告诉你什么是系统架构师

     

    系统架构师是个神奇的岗位。为什么这么说,在一个人数不多的小公司,你可能什么都需要做,身体力行,做总监兼架构师或者是主管/高级开发兼架构师;在大公司,你可能只负责某个平台的架构,某些中间件的架构,你就是某一类的架构师。

    无论怎么分,作为一个架构师,你必须具备以下几个特性。

    技术能力

    技术能力,不用置疑肯定是最重要的。技术能力弱的架构不是一个好架构。所以,你需要知道所有主流技术的基本原理、应用场景,及快速解决问题的能力。

    所以,架构师必须要有见识,所需知识面肯定是要不断拓展的。你需要清楚在什么样的场景用什么样的技术比较合适,并知道可能存在什么样的风险。来了需求,你脑袋是空的,不知道用什么技术这是最可怕的。

    架构能力

    这个可以表现为抽象能力、整体规划能力、及设计能力。你需要照在业务的角度进行系统分解、技术选型、架构搭建,以及规范制定。架构出来了至少可以满足近几年的发展,或者可以很方便对现有架构进行扩容。

    有人说架构不需要懂业务,我面试过的就有明确表示不做业务架构。当然有方面的架构师,如中间件架构师,运维基础设施架构师等。但一般的后端架构师都是需要了解业务,不理解业务你如果进行系统分解,服务划分,及根据不同业务作出不同的架构?

    技术都是为业务服务的,不站在业务的角度设计架构,那架构就是空谈。

    沟通能力

    这个看起来不是最重要的,其实也非常重要。作为一个优秀的架构师,你需要清楚的知道客户的需求,需要不断和需求人员进行沟通,以达到客户真正的目的。

    不论是不是架构师,任何一个职场人,提高自己的沟通表达能力无疑是不可或缺的。有一句话怎么说的,领导就喜欢拍马屁的。做领导的大多不是技术特别牛的,但沟通能力肯定是一流的。

    这3点肯定是架构师的核心,但不一定是每个架构师的标准。

    国内做程序员,30岁左右就得转型,不然就会被嫌弃。不管是不是如此,大环境就是这样,程序员你能干到35已见天花板。

    所以,程序员必须转型,管理职位数量有限,对性格、沟通表达能力有要求。所以转型架构师是首选,大家一起加油吧。

    现在私信我“资料”即可获取Java工程化、高性能及分布式、高性能、高架构、性能调优、Spring、MyBatis、Netty源码分析等多个知识点高级进阶干货的直播免费学习权限及相关视频资料,还有spring和虚拟机等书籍扫描版

    作为架构师应该掌握哪些技术?

    一、架构师基础

    阅读、分析源码是程序员最基本的码代码能力也是码农的根本所在,学习经典源码中所用到的经典设计思想及常用设计模式,能够帮你了解大牛是如何写代码的,从而吸收大牛的代码功力。在阿里面试中,MyBatis,Spring等框架的底层原理是经常会被问到的。

    阿里十年架构师用一张图告诉你什么是系统架构师

     

    二、团队协作

    阿里巴巴有很多大团队,这种大团队里有很多小团队,到小团队之后,做的业务都不相同,如果想立足成为一线互联网公司中的万能选手,最主流的分布式架构中有很多知识都是必须要去了解与学习的。并且在阿里面试过程中,面试官会问到实际应用场景的问题:比如微服务化、用户量、并发量、业务复杂度以及可扩展程度等,这里不多赘述。:

    阿里十年架构师用一张图告诉你什么是系统架构师

     

    三、微服务架构

    微服务是现在互联网架构技术中最火热的话题之一,也是本屌目前正在学习研究的方向。在阿里面试过程中,面试官很少会问到关于微服务相关的问题。但作为一名开发者,一名有技术梦想的程序员微服务架构是现在必须要去了解的主流技术:

    阿里十年架构师用一张图告诉你什么是系统架构师

     

    四、并发编程

    并发编程几乎是所有互联网公司面试必问问题,并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写出高效、安全、可靠的多线程并发程序。总结出来一个最全面的学习大纲:

    阿里十年架构师用一张图告诉你什么是系统架构师

     

    五、高性能架构

    性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,特别是阿里巴巴这样的一线互联网公司最为注重,因此想进入阿里,性能优化一定是要去深入学习与理解的一环

    阿里十年架构师用一张图告诉你什么是系统架构师

     

    六、B2C项目实战

    无需赘述,如果没有实战经验,如何成为一名架构师?

    阿里十年架构师用一张图告诉你什么是系统架构师

     

    最后送福利了

    展开全文
  • 什么是架构师

    千次阅读 2019-03-28 09:42:39
    一 什么是架构师 曾经有这么个段子: 甲:我已经应聘到一家中型软件公司了,今天上班的时候,全公司的人都来欢迎我。 乙:羡慕ing,都什么人来了? 甲:CEO、COO、CTO、All of 程序员,还有会计、司机都来了。 ...

    一 什么是架构师

    曾经有这么个段子:

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

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

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

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

    甲:没有啊,就一个人!

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

    很多的创业公司,一人身兼数职的情形还是很常见的。至少,我是经历过的,一个人包办了所有的开发过程,连测试我都做了,绝对的一条龙,但是经常踩钢 丝、骑独轮车总会有失足的时候,结果有一次,从我手里发出去的光盘母盘,含有病毒僵尸,以至于被迫收回已经推上市场的2万张光盘,从那之后,我的心脏就开 始变得无比坚强,现在就是整个后台服务都瘫痪了,我也只是微微一笑。其实,一个人身兼架构师和程序员,甚至多种角色,没什么不妥,后面还会讲这个话题,这 种现象不是中国特色,跟国外是完全接轨的。我曾经跟米国的一个工程师在msn中聊过类似的话题,发现他们的路子跟咱们没什么不同,在IT这个行业,我们跟 世界的差距只有1天,他们刚弄出来的新东西,我们这里第2天保准见得到。

    架构师这个称呼不是拍脑袋想出来的,是有国际标准(ISO/IEC 42010)可查的。架构师是软件开发活动中的众多角色之一,它可能是一个人、一个小组,也可能是一个团队。微软对架构师有一个分类参考,我们参考一下, 他们把架构师分为4种:企业架构师EA(Enterprise Architect)、基础结构架构师IA(Infrastructure Architect)、特定技术架构TSA(Technology-Specific Architect)和解决方案架构师SA (Solution Architect)。微软的这个分类是按照架构师专注的领域不同而划分的。

    EA的职责是决定整个公司的技术路线和技术发展方向。盖茨给自己的Title就是首席软件架构师,网易丁磊也喜欢这么称呼自己,实际上就是EA角 色;IA的工作就是提炼和优化技术方面积累和沉淀形成的基础性的、公共的、可复用的框架和组件,这些都是一个技术型公司传承下来的最宝贵的财富之一;特定 技术架构师TSA,他们主要从事类似安全架构、存储架构等专项技术的规划和设计工作;SA的工作则专于解决方案的规划和设计,“解决方案”这个词在中国已 经到了严重泛滥的程度,大忽悠们最喜欢把它挂在嘴边。所谓解决方案,就是把产品、技术或理论,不断地进行组合,来创造出满足用户需求的选择。售前工程师一 般都是带着它到客户那里去发挥的。

    大公司会把各种类型的架构师分得很清楚,小公司一般就不那么讲究了,架构师多数是是IA+TSA+SA,一人包打天下,所以说大公司出专才,小公司出全才。

    实际工作中,我们也经常会见到另一种比较简单的分类方式,把架构师分为软件架构师和系统架构师。软件架构师基本上是TSA+IA,这也是程序员最容 易突破,最可能走上的一条道路,比如JAVA架构师、DotNet架构师、LAPM架构师等等,我后面所讲的内容都是与软件架构师的相关的话题。系统架构 师实际上是SA+TSA,更着力于综合运用已有的产品和技术,来实现客户期望的需求。系统架构师要求通晓软、硬件两方面的知识,所以它的知识体系相对庞 杂。关于系统架构师的话题,我们可以稍后再作讨论。

    二 架构师的职责

    架构师需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。

    架构师主要职责有4条:

     1、确认需求

    在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。

    2、系统分解

    依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。

    软件架构师的功力基本体现于此,这是一项相对复杂的工作。

     3、技术选型

    架构师通过对系统的一系列的分解,最终形成了软件的整体架构。技术选择主要取决于软件架构。

    Web Server运行在Windows上还是Linux上?数据库采用MSSql、Oracle还是Mysql?需要不需要采用MVC或者Spring等轻量级的框架?前端采用富客户端还是瘦客户端方式?类似的工作,都需要在这个阶段提出,并进行评估。

    架构师对产品和技术的选型仅仅限于评估,没有决定权,最终的决定权归项目经理。架构师提出的技术方案为项目经理提供了重要的参考信息,项目经理会从项目预算、人力资源、时间进度等实际情况进行权衡,最终进行确认。

    4、制定技术规格说明

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

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

    架构师不仅要保持与开发者的沟通,也需要与项目经理、需求分析员,甚至与最终用户保持沟通。所以,对于架构师来讲,不仅有技术方面的要求,还有人际交流方面的要求。

    三 架构师的误区

    1、架构师就是项目经理

    架构师不是项目经理。项目经理侧重于预算控制、时间进度控制、人员管理、与外部联系和协调等等工作,具备管理职能。一般小型项目中,常见项目经理兼架构师。

    2、架构师负责需求分析

    架构师不是需求分析员。需求分析人员的工作是收集需求和分析需求,并与最终用户、产品经理保持联系。架构师只对最终的需求审核和确认,提出需求不清和不完整的部分,他会跟需求分析员时刻保持联系。架构师是技术专家,不是业务专家。

    3、架构师从来不写代码

    这是一个尚存争论的问题。目前有两种观点:

    观点1:架构师不写代码,写代码纯体力活,架构师写代码大材小用。架构师把UML的各种视图交给开发人员,如果有不明确的地方,可以与架构师随时沟通。

    观点2:架构师本来自于程序员,只是比程序员站的层面更高,比程序员唯一多的是经验和知识,所以架构师也免不了写代码。

    我个人觉得这两种说法是与架构师的出身和所处的环境有关。

    架构师首先是一个技术角色,所以一定是来自于技术人员这个群体,比如系统架构师,多是来自于运维人员,可能本身代码写得并不多,或者说写不出来很漂 亮的代码。软件架构师多是来自于程序员,有着程序员的血统和情怀,所以在项目开发过程中,可能会写一些核心代码。我们的理想是架构师不用写代码,但事实上 有时候过于理想。架构师写不写代码,可能取决于公司的规模、文化、开发人员的素质等现实情况。另外,架构师也不是跟程序员界限分得那么清楚,按照能力也有 高中低之分,写不写代码不是区分两者的根本标准。

    四 架构师的基本素质

    周星驰有个片子《喜剧之王》,剧中的尹天仇整天揣着本《演员的自我修养》,一个好演员不仅需要天赋,也需要一定的理论指导,无师自通的人毕竟是少 数。架构师的成长过程也是这样。从普通程序员到高级程序员,再到架构师,是一个经验积累和思想升华的过程。经验积累是一个方面,素质培养是另一个方面,两 者相辅相成,所以我觉得有必要把架构师的所要具备的素质罗列一下,作为程序员努力的方向。

    沟通能力

    为了提高效率,架构师必须赢得团队成员、项目经理、客户或用户认同,这就需要架构师具有较强的沟通能力。沟通能力是人类最普遍性的素质要求,技术人 员好像容易忽略,想成为架构师就不能忽略。千万不要抱着这样的观念:怀才跟怀孕似的,时间久了总会被人发现的。还是天桥上卖大力丸的哥们说得对:光说不练 假把式,光练不说傻把式。看看你周围的头头脑脑们,哪一个不是此中高手,我们千万不要鄙视,认为这是阿谀奉承、投机钻营,凡事都要看到积极的一面,“沟 通”的确是一种能力。我认为自己是一个略内向的人,因为我是农村出来的孩子,普通话都说不好,以前或多或少带有点自卑感,幻想着是金子总会发光,所以在职 业生涯中吃了不少亏。现在,我深深懂得了沟通的重要性,我会很主动地跟同事们,跟老大们不定时地沟通,感觉工作起来顺畅多了。

    这一条我认为最为重要,所以排在首位。我甚至认为下面几条都可以忽略,唯一这一条得牢记,而且要常常提醒自己。

     领导能力

    架构师能够推动整个团队的技术进展,能在压力下作出关键性的决策,并将其贯彻到底。架构师如何来保证这种执行力?这就需要架构师具有领导能力。

    架构师的领导能力的取得跟项目经理不太一样。项目经理主要负责解决行政管理,这种能力与技术关系不大,他有人权和财权,再扯上一张“领导”的虎皮, 采用“胡萝卜加大棒”的方式,基本上可以保证执行力。架构师在项目里面可能更多地使用非正式的领导力,也就是我们常说的影响力,里面包括个人魅力、技术能 力、知识传递等等。

    抽象思维和分析能力

    架构师必须具备抽象思维和分析的能力,这是你进行系统分析和系统分解的基本素质。只有具备这样的能力,架构师才能看清系统的整体,掌控全局,这也是 架构师大局观的形成基础。你如何具备这种能力呢?一是来自于经验,二是来自于学习。架构师不仅要具备在问题领域上的经验,也需要具备在软件工程领域内的经 验。也就是说,架构师必须能够准确得理解需求,然后用软件工程的思想,把需求转化和分解成可用计算机语言实现的程度。经验的积累是需要一个时间过程的,这 个过程谁也帮不了你,是需要你去经历的。但是,如果你有意识地去培养,不断吸取前人的经验的话,还是可以缩短这个周期的。这也是我写作此系列的始动力之 一。

     技术深度和广度

    架构师最好精通1-2个技术,具备这种技术能力可以更加深入的理解有关架构的工作原理,也可以拉近和开发人员的距离,并形成团队中的影响力。

    架构师的技术知识广度也很重要,需要了解尽可能多的技术,所谓见多识广,只有这样,才可能综合各种技术,选择更加适合项目的解决方案。有的人说,架构师技术广度的要求高于技术深度的要求,这是很有道理的。

    总而言之,一句话:架构师是项目团队中的技术权威。

    五 架构师需要掌握的技术体系

    构成架构师的技能体系

     

    一:常见模式与工具

    学习Java技术体系,设计模式,流行的框架与组件是必不可少的:

    常见的设计模式,编码必备

    Spring5,做应用必不可少的最新框架

    MyBatis,玩数据库必不可少的组件

     

    二:分布式架构

    高并发,高可用,海量数据,没有分布式的架构知识肯定是玩不转的:

     

    透彻理解分布式架构的好处和优点

    了解从分布式架构原理,到分布式架构策略,再到分布式架构中间件,最后在加上分布式架构实战,让程序员可以在技术深度和技术广度上得到飞跃的提升,成为互联网行业所需要的T型人才。

    三:微服务架构

    业务越来越复杂,服务分层,微服务架构是架构升级的必由之路,Java技术体系,和微服务相关的技术有哪些呢?

     

    随着业务的发展,代码量的膨胀和团队成员的增加,传统单体式架构的弊端越来越凸显,严重制约了业务的快速创新和敏捷交付。为了解决传统单体架构面临 的挑战,先后演进出了SOA服务化架构、RPC框架、分布式服务框架,最后就是当今非常流行的微服务架构。微服务化架构并非银弹,它的实施本身就会面临很 多陷阱和挑战,涉及到设计、开发、测试、部署、运行和运维等各个方面,一旦使用不当,则会导致整个微服务架构改造的效果大打折扣,甚至失败。

    四:底层知识

    从架构设计,到应用层调优,再深入了解底层原理,扎实的Java基本功才能让自己变为扫地神僧:

     

    五:性能优化

    性能指标体系

    JVM调优

    Web调优

    DB调优

     

    六:工程化与工具

    工欲善其事必先利其器,不管是小白,还是资深开发,玩Java技术体系,选择好的工具,提升开发效率和团队协作效率,是必不可少的:

     

    七、实践一个双十一电商项目

    电商项目目的是把所学的分布式,微服务,性能调优等知识运用起来,只有在项目中你才能巩固知识,提升自己。

    展开全文
  • 本课程首先围绕普通开发人员如何向架构师转型这一课题,从架构师的角色以及转型过程中会遇到的困难及其解决方法切入展开讨论,总领整个课程。课程主体部分从软件架构体系结构、架构设计、技术体系等角度出发,详细...
  • 如何成为一名架构师

    千次阅读 2018-11-30 09:39:40
    对于工作多年的程序员而言,日后的职业发展无非是继续专精技术、转型管理和晋升架构师三种选择。那么程序员如何才能晋升为优秀的架构师?   优秀架构师需要具备怎样的素质 1 确认需求 架构师要懂得用户需求,...

    整理自网络
     

    对于工作多年的程序员而言,日后的职业发展无非是继续专精技术、转型管理和晋升架构师三种选择。那么程序员如何才能晋升为优秀的架构师?

     

    优秀架构师需要具备怎样的素质

    1 确认需求

    架构师要懂得用户需求,理解用户真正想要什么,

    架构师会与很多人沟通,例如开发人员,例如我们项目经理,有时甚至是用户本身。架构设计的目的很明确,目的是什么呢?

    挖掘用户需求。

     

    2 系统分解

    在架构师认可需求规格说明书后,架构师已明确用户需求是是什么,这时候便看架构师的分解能力了。通过100offer入职的全栈技术架构师周先生从「纵向分解」和「横向分解」和我们说明了系统分解是什么——

    「一般分为纵向分解和横向分解,纵向分解是将整个系统分层,从而将整体系统分解成下一级的子系统与组件。横向分解是在系统分解成不同的逻辑层或服务后,对逻辑层进行分块,确定层与层之间的关系。」

     

    3 技术选型

    在系统分解后,架构师会最终形成软件整体架构,接下来,架构师的职责是技术选型。

     

    「前端到底用瘦客户端还是富客户端呢?数据库是用MySQL还是MSSQL又或是Oracle呢?」「在了解用户需求后,分解完系统后,技术选型是非常重要的环节,提出各个方向,再进行评估。 」

    架构师在技术选型阶段会提供参考信息给项目经理,项目经理再从预算、进度、人力、资源等各方面情况来权衡,最终确认。

     

    4 制定技术规格说明

    架构师在项目开发过程中是「灵魂人物」,并且要具备协调组织能力和懂得人员分工。

    在制定技术规格说明阶段,架构师要协调起所有的开发人员,架构师通常会用技术规格说明书与开发人员保持沟通,让开发人员能从各个视角去观测、理解他们负责的模块或者子系统,确保开发人员能够按照架构意图实现各项功能。

     

    再来看看架构师该具备什么能力才能成为一家公司中的「灵魂人物」。

    1 设计能力-擅长整合分析

    架构是过程,并非结果。

    架构是架构师洞察内在结构、原则、规律与逻辑的过程,架构师要做到清晰理解系统,以及简洁描述,这是分析整合的能力。

     

    2 技术实力-实现产品规划

    架构师首先要将代码写的清晰易懂,要能够实现功能,做到没有Bug,这要求架构师必须具备至少熟练掌握一门语言。

    不推荐不热爱编程的人去做架构师,对于团队工作和个人发展来说,都会带来糟糕的后果。

     

    3 沟通能力-能够横向沟通

    架构师必须参与项目开发全过程,包括确认需求、系统分解、架构设计、技术选型、制定技术规格说明、系统实现、集成测试和部署各阶段,在这一系列过程中,架构师会与各部门沟通交流。

    一个产品会有多部门合作,架构师在其中的沟通极为重要,直接影响产品进度与质量。架构师不仅要与开发人员沟通,也要和项目经理、分析人员甚至用户沟通,来实现产品的各种可能性。

     

    所以,对于架构师来讲,不仅有技术方面的要求,还有能够横向沟通的要求。

     

    架构师的发展现状

    高薪职业往往都担着巨大压力,对于架构师而言,他们在工作中面临的最大困难又是什么呢——

     

    协调人际利益占了35%,管理分工占了26%,这些与「人」相关的内容成为架构师在工作中面临的最大困难。对于能成为架构师的人来说,只要不是PPT架构师,基本都具备了对架构师而言最重要的设计能力和编程能力,所以最重要的有时并不是最困难的。

     

    他们必须思考清楚用户最需要的是什么,同时协调好项目内部人员的利益关系,对于很多不擅于打交道的程序员而言,协调和管理的确成为了他们最头疼的问题。

     

    无论是企业需求,还是薪资水准,从现状而言,架构师的各方面待遇都是较好的,同样,多部门协调和多线部署也给他们带来了巨大压力。不难看出,国内架构师的发展现状是较为乐观的,架构师无论是地位、薪酬还是未来发展,都具有着优势。

     

    展开全文
  • 架构师是做什么的?

    万次阅读 2016-05-19 00:12:32
    哈佛大学有一个非常著名的关于目标对人生影响的跟踪调查。调查的对象是一群智力、学历、环境等条件都差不多的大学毕业生。结果是这样的: 第一类人:27%的人,没有目标; 第二类人:60%的人,目标模糊;...
  • 架构师之路

    千次阅读 2018-07-09 10:11:36
    本文转载自开涛的博客微信公众号写在开篇不管是开发、测试、运维,每个技术人员心里都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。...
  • 架构师之路(一) 什么是软件架构

    千次阅读 2018-12-05 13:48:53
    架构师在架构实践过程中,经常面对的困惑: 六个实际问题的困惑 大系统架构设计,如何开始? 总觉得需求不清晰,影响架构设计! 非功能需求重要,但如何设计? 将...
  • 软件架构师需要什么能力?

    千次阅读 2018-08-11 19:20:14
    架构师有哪些分类   随着行业和社会的发展,架构师的定义和分类越来越广泛和细分。目前来说,集合业界的大致认知,总结如下: 解决方案架构师 与客户探讨业务需求,将业务、市场,与技术、产品结合起来,为...
  • 漫画:什么是架构师

    千次阅读 多人点赞 2018-01-03 10:37:02
    于是,小灰去向大黄请教这是有关未来的故事:从前,有一个赶路的人路过一片工地,看到三个年轻人在工地上搬砖。于是,他问其中一个人:于是,他又问了...曾经说自己在搭建教堂的年轻人,最没出息,成为了架构师。什么是
  • 一张图告诉你什么是系统架构师

    万次阅读 2018-01-09 10:11:31
    这张图从架构师的综合能力、岗位认识、岗位职责等方面,清楚的画出了作为一个架构的基本准则。人人都想成为架构师,可作为架构你达到了上面的要求了吗? 系统架构师是个神奇的岗位。为什么这么说,在一个人数不多的...
  • 架构师,我想很多人都知道,其实该职位头衔在最早的IT领域是没有的,它是近些年来由互联网的发展所引发的需求,因为现阶段的数据量及高并发的活跃好动,引起了不少传统的技术人员的力不从心,企业愈发关注到了系统...
  • 上星期:应老东家的要求,帮其面试.NET架构师。 于是:老东家进行了一星期的简历收集; 终于:在一堆简历里,精挑细选了四个; 约了:周末上午下午各两个。 面试者年龄:在30-35岁左右,差不多10年.NET经验。 &...
  • 架构师成长之路(3)--如何成为架构师(方法)

    万次阅读 多人点赞 2020-09-08 09:39:43
    如果我们要成为架构师,我们自己要面临的三大问题: 找准自己定位:我是谁?在哪里? 怎样做好架构师:我要做什么? 如何搭建架构师知识体系:我该怎么做? 这里面就是做事方法论:目标(我要做什么),方法(计划)...
  • 随便多翻几个招聘网站,你可以看到:前端架构师、后端架构师、Android架构师、iOS架构师、php架构师、运维架构师、DB架构师、搜索架构师、中间件架构师、大数据架构师。。。五花八门,不一而足。 从这些岗位需求...
  • 架构师职位常见面试题

    千次阅读 多人点赞 2019-06-06 11:04:29
    一、架构师的日常职责是什么? 总体而言,架构师负责软件领域的顶层设计。 架构师需要根据公司的发展,规划企业未来若干年的架构,制定可落地的架构方案,解决技术难题,做技术选型与攻关,落地具体的架构。优秀的...
  • 架构师成长之路(2)--架构师必备技能(目标)

    万次阅读 热门讨论 2020-08-14 10:19:56
    如果我们要成为架构师,我们自己要面临的三大问题: 找准自己定位:我是谁?在哪里? 怎样做好架构师:我要做什么? 如何搭建架构师知识体系:我该怎么做? 这里面就是做事方法论:目标(我要做什么),方法(计划...
  • 一个架构师谈什么是架构以及怎么成为一个架构师

    万次阅读 多人点赞 2015-02-25 09:23:58
    所以今天我们先来点”番外篇“,讲讲什么是架构师,什么是架构这个永恒的话题吧。此篇源出自我在公司内部写的一个PPT,它是用于在公司内部向广大技术人员做普及用的一个资料,而CSDN这边的编辑不支持图文混排的效果...
  • 对程序员来说,“传说中的架构师”的薪资比较充满诱惑,年薪四五十万对他们来说是一件比较简单的事情。在实际项目开发过程中,架构师扮演的是多面手,技术、开发管理一肩挑,所以薪资自然也少不了,那么Java架构师...
  • 大数据架构师是做什么的?

    万次阅读 2018-04-03 15:41:11
    架构师按照专注领域不同,可分为企业架构师、基础结构架构师、特定技术架构和解决方案架构师等,专职架构师往往偏向基础结构架构师和特定技术架构师,专职架构师不负责具体的业务系统,而又对所有的系统负责,很少...
1 2 3 4 5 ... 20
收藏数 345,663
精华内容 138,265
关键字:

架构师