系统架构师(云时代架构文章读后感12)

一架构师职责php

架构师是一个既须要掌控总体又要洞悉局部瓶颈,并依据具体的业务场景给出解决方案的团队领导型人物,他须要参与项目开发的所有过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。前端

架构师主要职责有4条:sql

01确认需求数据库

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

02系统分解框架

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

      架构师的功力基本体现于此,这是一项相对复杂的工做。性能

03技术选型学习

架构师经过对系统的一系列的分解,最终造成了软件的总体架构。技术选择主要取决于软件架构。Web Server运行在Windows上仍是Linux上?数据库采用MSSql、Oracle仍是Mysql?须要不须要采用MVC或者Spring等轻量级的框架?前端采用富客户端仍是瘦客户端方式?相似的工做,都须要在这个阶段提出,并进行评估。测试

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

04制定技术规格说明

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

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

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

二架构师综合能力

做为架构师,必须成为所在开发团队的技术路线引导者,具备很强的系统思惟的能力;须要从大量互相冲突的系统方法和工具中区分出哪些是有效的,哪些是无效的。架构师应当是一个成熟的、丰富的、有经验的、学习快捷、善沟通和决策能力强的人。他必须普遍了解各类技术并精通一种特定技术,至少了解计算机通用技术以便肯定哪一种技术最优,或组织团队开展技术评估。优秀的架构师能考虑并评估全部可用来解决问题的整体技术方案。须要良好的书面和口头沟通技巧,通常经过可视化模型和小组讨论来沟通指导团队确保开发人员按照架构建造系统。

因此做为架构师须要以下的综合能力:

01沟通能力

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

这一条我认为最为重要,因此排在首位。我甚至认为下面几条均可以忽略,惟一这一条得牢记,并且要经常提醒本身

02技术能力

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

架构师的技术知识广度也很重要,须要了解尽量多的技术,所谓见多识广,只有这样,才可能综合各类技术,选择更加适合项目的解决方案。有的人说,架构师技术广度的要求高于技术深度的要求,这是颇有道理的。总而言之,一句话:架构师是项目团队中的技术权威。

03架构能力

架构是架构师洞察内在结构、原则、规律与逻辑的过程,架构师要作到清晰理解系统、简洁描述,除此以外,一个架构师还必须具有极强的分析能力,要作到根据产品宗旨和目标,分析清楚产品定位、产品业务,再整合利用现有的技术领域,找出最佳方案,实现产品概念。

04抽象分析

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

05决策能力

决策能力是一个架构师最重要的职责。

1. 技术方案决策原则

一般一个问题都会有多种可解决的技术方案,怎么来决策就相当重要了,而决策一般又和全面相关,大的来讲一般决策的原则就是性价比和可持续发展。性价比简单来讲是方案的实现成本,这个成本要包括很是多的方面,例若有些场景可能会是用硬件解决看起来是花钱,但最终折算成本是最划算的,不少系统设计在决策性价比时都过于随意,例如一个另外常见的场景就是建设一套新系统替代旧系统,这个时候可能彻底没考虑旧系统的迁移代价甚至超过了改造旧系统的代价;

可持续发展简单来讲就是所选择的技术方案在公司是否可持续,例如简单的案例是公司主体的研发人员都是php,却搞一个其余语言,且只有极少人懂的(固然,这仍是要看性价比,若是搞一个其余语言带来的效益超过了语言/人才体系的更换成本),又例如引入一个开源产品,有无专业团队维护这都是要考虑的关键因素。

2. 优先级和节奏控制

常常我会问作系统设计的同窗一个问题:对于这个业务场景而言,在系统设计上最须要把握的一个点是什么;这是一个关键问题,全面意味着考虑到了不少地方的问题,但一般业务需求实现都是有很强的时间要求的,所以在这个时候必须考虑清楚不一样点的优先级,同时也包括技术方案在决策时也要作出取舍,有可能选了一个不是那么好的技术方案,但经过留下一些可改造的空间,为之后的重构作好铺垫,那就是很不错的,尤为技术同窗有些时候比较容易陷入解决技术问题的场景去,但那个问题其实有可能不是现阶段最重要的。

优先级和节奏控制是我认为一个优秀的架构师的最佳体现,优先级意味着把握住了重点,能够确保在所设计的架构指导下业务实现不会出现大问题,节奏控制则意味着全面,知道随着业务发展该在什么时间点作什么事,为未来作好铺垫。

架构优化一方面是优化系统交易链上的每一个环节进行分析并优化,另外一方面是对单一架构进行瓶颈点分析和调优。可是优化的目标大体相同,最终目的是提升系统的响应速度、吞吐量、下降各个模块之间的耦合。

优化原则

  1. 在应用系统的设计、开发过程用中,应始终把性能放在考虑的范围内。

  2. 肯定清晰明确的性能目标是关键。

  3. 性能调优是伴随整个项目周期的,最好进行分阶段设定目标开展,在达到预期性能目标以后便可对本阶段工做进行总结和知识转移进入下一阶段调优工做。

  4. 必须保证调优后的程序运行正确。

  5. 性能更大程度是取决于良好的设计,调优技巧只是一个辅助手段。

  6. 调优过程是叠代渐进的过程,每次调优的结果要反馈到后续的代码开发中去。

  7. 性能调优不能以牺牲代码的可读性和维护性为代价。