`

什么是架构师

 
阅读更多

对于任何一个软件开发人员来说,架构师都是一个令人向往的角色。就连世界首富比尔盖茨在2000年卸任公司CEO的同时,也担任了微软公司的荣誉角色“首席软件架构师”,可见“架构师”这一称谓的吸引力。架构师是公司的“金领”,有着非常高的收入,很少需要考虑生存的问题,从而有更多的精力思考关键技术问题,形成“强者愈强”的良性循环。部分优秀的开发人员在工作了一定时间后,就要开始考虑自己的未来到底向哪个方向发展。如果开发人员的沟通能力强过技术能力,在补充一定的项目管理知识后,可以向技术管理的方向转型。如果其对技术一直很感兴趣,而沟通能力也不弱,则可以试着进一步加强技术修养,以期向架构师的方向发展,最终“修成正果”。
        那么,到底什么是架构师呢?所谓的架构师,应该是一个技术企业的最高技术决策者。他主要负责公司软件产品或软件项目的技术路线与技术框架的制订。好的架构师都是善良的独裁者,具有很强的技术、良好的写作能力、良好的口头表达能力,能够在各个层次进行沟通。从开发人员到架构师的成长应该是阶梯式的,一般来讲开发人员在刚刚开始工作时只能开发简单的独立软件模块,慢慢的随着经验的增长,他开始接触一些相互之间有信息传递的模块,而后来,他会发现自己接到的开发任务已经不是一个独立的单体,这些任务由一些专门的软件部分组成,可能包含数据库,工作流引擎,消息服务等等各种功能模块,可能分布在不同的服务器上,所有的部分协同起来,完成软件功能。而这时候,体系结构的好坏将直接决定了系统的性能和可扩展性,而就在这时候,这名优秀的开发人员也开始思考架构师应该思考的问题了,或者说,他向成长为架构师的道路迈出了一大步。
        什么是架构师最具价值的技能呢?就是要了解不同的知识,做一个“杂家”或者说“博学家”。当然,如果你的数据库技术非常棒,或者你在工作流引擎方面具有不可超越的专家知识,那也是很不错的。好的架构师有好多都是从专家成长过来的。但是,这不是架构师应该做的事情,架构师应该做的是了解所有的东西,既了解技术的宏观面,又了解技术的细节。真正的架构师不仅仅要了解软件,也要了解硬件,在关键的部位使用合适的硬件来取代软件,可以成倍甚至成百倍的提高整个系统的效率。下面我将会以互联网行业对的架构师的要求为例,向大家讲解作为架构师应该具备的知识。
        互联网行业是当前最激动人心的行业之一,很多的创新都来自于这个行业,而每一个大型的网站如Google,Yahoo,Myspace等都需要解决一个非常复杂的问题,就是网站的分布式向外扩展(Scale Out)的问题。解决这个问题,需要最优秀的架构师对业务进行剖析,利用软硬件将网站进行重构,甚至根据业务研发相应的分布式技术,解决网站复杂的分布式计算的问题。如果你想在这个行业中成为一名架构师的话,需要至少掌握网络知识,硬件,软件,网站优化等方方面面的知识:
网络知识。
        当前的软件已经绝对不是那种仅仅跑在一台单机上的孤立应用了。不仅仅是在互联网行业,任何一个行业的软件,都要求其具有网络功能。因此,网络知识是架构师必备的知识。我们所说的网络知识,不仅仅包括TCP/IP,http等互联网行业常用的软件协议,也包括网络规划,甚至更具体的说,根据网站应用所处的地理环境进行网络规划。比如人们常说:“这世界上最远的距离不是生与死的距离,而是电信到网通的距离”(笑)如果应用是建立在中国的,就要考虑电信用户和网通用户访问网站的速度应该都比较快才可以。这时候的解决方案可能有多种,比如采用CDN(Content Delivery Network内容分发网络)使得网站的内容发布到离用户最近的服务器,又可以采用把服务器放在一些所谓的双线机房中,甚至将几种方案结合起来使用。这些都统统归到网络知识中。做为公司的架构师,要对这些知识都有所了解,才有助于在遇到问题时找到最佳答案。
硬件知识。
        了解硬件的极限,是架构师的基本功。我见过一些人,他们的眼中软件硬件都是没有极限的,需要资源就申请,系统性能下降了就买更高级的设备。然而,硬件的性能有很大一部分取决于I/O设备。而这些I/O设备依靠的都是机械物理运动,这种运动是有极限的。因此当资源访问量增大到一定的程度时,这种物理运动将成为瓶颈。比如说,在开发网站的过程中,记录访客的状态是一件很重要的事情,一般来说可以使用HttpSession来记录。而 HttpSession的存储问题将是一个很大的挑战,尤其是多机共享Session时,将HttpSession存成文件并通过多机共享或网络备份的方式来解决分布式的问题是常用的方案,然而,架构师必须考虑到这种方案是有I/O极限限制的,很难扩展到超过一定规模的大型网络。同时,架构师应该了解目前最近的硬件发展是否对软件系统会造成一定的影响,比如在多核的条件下是否对软件编程有新的要求,是否会对运行在虚拟机和非虚拟机上的程序有影响等等。
软件知识。
        软件知识所包含的范围就更加广泛了。对于互联网行业来讲,架构师要了解操作系统,数据库,应用服务器等各方面的知识。比如说,如果网站使用的操作系统是Linux,就要了解这个Linux版本的性能与局限性,比如说最多可以存放的单个文件为多大。有的数据库的数据是以单个文件来存放的,虽然我们很少见到数据库中的数据多到不能再放入一条记录的情况,但是作为架构师,请时刻注意,这种可能性是有的。而且如果你有幸在一家高速成长的互联网企业中,而你所负责的应用又没有经过优化的话,可能你会很快见到这种现象。这种现象的发生可能是由于操作系统不支持大文件的原因,也可能是数据库不支持大文件。不论如何,架构师应该在这种现象发生之前就把一切都准备好。对数据库中表的拆分是架构师应该遇到的另外一个困难。一般来说增加应用服务器比较简单而增加数据库服务器则是比较复杂的问题,如果一个站点由多个数据库支持,架构师需要考虑如何在保证数据一致的情况下,让多个数据库分担压力。有些解决方案是将数据库的读写分开,使得大多数的查询sql不经过核心数据库,而只是访问数据库的副本,但事实上,这种方式也只能维护规模不大的网站。对于大型的网站来说,把业务分散到不同的数据库中,只共享必要的数据,才是合理的提高网站扩展性的解决方案。
其他知识。
        作为系统架构师,可能还需要对分布式系统,负载均衡,网络安全,数据监控等等各方面都有所了解。不仅仅是了解理论知识,也要对相关的产品和业界进展有一定的认识。比如说做负载均衡最好的产品是那种。目前最常用的备份策略是什么,有什么缺点。如何使用缓存,如何做好日志分析等等。

        刚刚谈到的是架构师需要掌握的知识,然而,冰冻三尺非一日之寒。这个过程需要我们慢慢的积累。如果你已经进入到公司进行软件开发,请时刻关注你所开发软件的性能与可扩展性,而不仅仅局限在功能上,时刻想着任何一个简单的问题:我开发的模块如果放在多人并发的环境下会怎样,慢慢的就会有所心得。如果你还是一个在校学生,不要想着自己离架构师这个职位还很遥远。要知道,成为架构师的修炼之路是很长的,甚至可以说是终身的,因此早点进入学习状态,不断修炼自己。在学校期间学好离散数学,数据结构,操作系统,编译原理,体系结构,数据库原理等关键课程,并积极寻找机会到外面实习,增长自己的工作经验。如果有机会去到一些技术主导的公司中工作,就一定不要放弃这种机会,慢慢就会成长起来。最重要的,你会养成关注技术,勤于思考的好习惯。当有一天你发现自己对任何技术难题都可以一眼看到其本质,并能够将其分解为一个个可轻松解决的模块,你会由衷的感觉到知识给你带来的快乐,或许那一天,你已经是一个架构师了。


作者:万欣
       原IBM CRL (China Research Lab,IBM中国研究中心) 资深软件工程师,光线传媒系统架构师。企业级应用方案设计解决专家。曾负责众多大型项目,包括:光线传媒E网、中国联通"联互通"信息管理系统、国家863项目基于角色的通用权限控制系统、国家863项目Thsswf工作流引擎、清华大学博学网投票系统(轻量级J2EE)、IBM Web sphere下Strategy Map 插件的开发 (Eclipse, GEF, EMF, Hibernata) 及斯伦贝谢(Horizon Viewer) 全球联合开发项目和斯伦贝谢产品使用记录组件。清华大学信息学院硕士。 东方标准国际java软件软件工程师讲师。

分享到:
评论

相关推荐

    架构师成长之路 架构师培训 什么是架构师 共19页.pptx

    【架构师的角色与职责】 架构师在IT行业中扮演着至关重要的角色,他们既是技术专家,又是项目管理者。架构师的工作不仅是关注技术实现,还需要具备深入理解业务需求的能力。他们需要评估系统需求,给出开发规范,...

    天翼云认证解决方案架构师

    天翼云认证解决方案架构师题库知识点,帮你直接通过天翼云解决方案架构师认证考试。天翼云认证解决方案架构师题库知识点,帮你直接通过天翼云解决方案架构师认证考试。天翼云认证解决方案架构师题库知识点,帮你直接...

    架构师成长之路,架构师成长指南

    《架构师成长之路》这本书是为那些志在成为优秀架构师的IT专业人士量身打造的指南。它深入探讨了架构师的角色、职责以及如何在职业生涯中逐步提升自己的技能和视野,以适应快速变化的IT环境。 一、架构师的角色与...

    架构师(第1期).架构师(第2期).架构师(第3期).pdf

    架构师,这个在IT领域充满着技术智慧与策略智慧的词汇,不仅代表着一个职位,更是对个人专业能力及综合素质的极大认可。随着技术的不断进步和业务需求的日益复杂化,架构师的角色越来越凸显其重要性。《架构师》系列...

    架构师的自我修养pdf

    在当今IT行业,架构师的作用越来越被人们所认识和重视。架构师的职责不仅在于技术层面的领导,还涵盖了从系统设计到维护的全过程。一个优秀的架构师不仅要精通技术,还需要具备良好的沟通能力、管理能力和对业务的...

    系统架构师学习笔记

    系统架构师的学习笔记,通常是资深架构师或者对架构有深入研究的专业人士根据个人经验和学习总结所撰写的学习资料,它可以帮助开发工程师向系统架构师的职业发展道路上迈进。 从提供的内容来看,系统架构师的学习...

    测试架构师修炼之道:从测试工程师到测试架构师1

    测试架构师在软件开发行业中扮演着至关重要的角色。从简单的测试执行者到架构师级别的测试专家,职业晋升的道路上充满了挑战与机遇。《测试架构师修炼之道:从测试工程师到测试架构师1》这本书,就是为了指引那些...

    软件架构师教程,系统架构师讲义

    《软件架构师教程》是一本全面且深入的指南,旨在帮助读者掌握软件架构设计的核心概念、原则和实践。作为系统架构师考试的重要参考资料,这本书涵盖了高级软件架构师所需的知识点,同时也是系统分析师提升专业能力的...

    做人、做事,做架构师——架构师能力模型解析

    【架构师能力模型解析】 架构师,作为IT领域的一个关键角色,不仅关乎技术实力,更涉及个人特质和软技能的全面发展。成为一名优秀的架构师,意味着你需要在“个人特性”和“技术技能”两方面下足功夫。在这个能力...

    做架构师——架构师能力模型解析.pdf

    "架构师能力模型解析" 架构师是一个职业名称,而不是一个技术高下的职位名称。要想成为一个优秀的架构师,需要具备“个人特性”和“技术技能”两个方面的能力。“个人特性”包括人际关系的能力和业务能力,而“技术...

    一线架构师实践指南 电子书

    《一线架构师实践指南》是一本专为有志于或已经在IT行业中担任架构师角色的专业人士准备的电子书籍。该书旨在提供实用的、一线的架构设计与实施经验,帮助读者提升自己的专业技能,理解并解决实际工作中遇到的挑战。...

    架构师是如何练成

    架构师是如何练成,讲述如何成为一名架构师,以及架构师所需要的一些技术栈等

    系统架构师教程.pdf

    系统架构师需要掌握一系列的技术和理论知识,这些内容在“系统架构师教程.pdf”中得到了系统的介绍和阐述。 首先,系统架构师需具备扎实的计算机网络基础。计算机网络是现代信息系统不可或缺的组成部分,架构师应...

    架构师体系架构

    在IT行业中,架构师扮演着至关重要的角色,他们负责设计和规划复杂的系统,确保软件项目的稳定性和可扩展性。"架构师全面体系架构"这一主题涵盖了架构师在开发过程中的各个方面,包括但不限于系统架构、软件架构、...

    java架构师是什么?58套java架构师资源870G进阶架构师学习.pdf

    Java架构师是软件开发领域中的一个关键角色,他们负责设计、规划和实施复杂的Java应用程序的架构,确保系统的稳定性、可扩展性、性能和安全性。在深入理解业务需求的同时,Java架构师还需要具备广泛的技术知识,包括...

    历年高级系统架构师真题

    系统架构师是一个在IT行业中至关重要的角色,他们负责设计、规划和实施复杂的计算机系统,以满足业务需求。历年高级系统架构师真题是备考这一专业资格考试的重要参考资料,涵盖了从2009年至2017年的历年试题,旨在...

    架构师官方教材.zip

    《系统架构师官方教材》是一份详尽的资源包,专为那些致力于成为或已经在担任系统架构师的专业人士设计。这份教材涵盖了系统架构师所需掌握的广泛知识领域,旨在帮助学习者深入理解如何设计、构建和优化复杂的技术...

    人人都是架构师高清扫描版

    全书分为四部分:概述、高可用原则、高并发原则、案例实战。从负载均衡、限流、降级、隔离、超时与重试、回滚机制、压测与预案、缓存、池化、...该书适用于任何对分布式系统架构感兴趣的架构师、开发人员以及运维人员

Global site tag (gtag.js) - Google Analytics