来源:阿里云

作者:林昊(花名毕玄),阿里巴巴技术保障部研究员,曾任淘宝网平台架构部架构师。个人的研究方向主要为Java模块化、动态化系统的构建,以及高性能大型分布式Java系统构建,主导阿里数据中心异地多活项目建设。

架构师,这个title就和总监之类的title一样,已经彻底被用烂了。但在一个软件产品的生命周期中,架构师是实实在在的一个极度重要的角色。架构师非常重要的职责是编写整个系统中核心部分的代码。这个部分并不一定是技术挑战最高的,但对整个系统的质量甚至成败起到非常关键的控制作用。架构师必须是从写核心代码的人中诞生而来。毕玄的这篇文章就是主要讲他理解的架构师到底应该具备什么素质。


业务理解和抽象能力

架构师的第一职责是理解业务,并转换为可被研发理解的实现方案,因此业务理解能力是架构师的必备技能。通常来说一个资深的业务架构师,对业务会有非常深的认识和积累。一个极好的业务架构师应该能大概预判业务未来的发展趋势,以便在系统的可扩展性上留好一定的空间。所以也会很自然的出现有些业务架构师做着做着就干脆转为PD类型的角色。
 
抽象能力是通过对业务的理解转换为系统实现的模型,这显然也是重要的能力。抽象很多时候也承担了分解清楚多个团队的职责,分工清晰化。

NB的代码能力

之所以现在很多的架构师都会被认为是大忽悠,就是有一堆顶着架构师头衔,又不干活的人(甚至会出现对技术几乎不太懂的人),光说不干,再加上说的不靠谱的话,自然很容易被认为是大忽悠。
 
我一直认为架构师有个非常重要的职责是编写整个系统中核心部分的代码。这个部分并不一定是技术挑战最高的,但对整个系统的质量甚至成败起到非常关键的控制作用。

所以架构师必须是从写核心代码的人中诞生而来。在一个跨多领域的大型系统中,架构师不太可能什么都擅长,不可能写各个部分的核心代码,这种时候架构师一定要知道怎么判断非自己知识领域的部分实现是否OK,以确保各部分组合在一起的时候是符合架构设计预期的,通常这种确保各部分组织在一起work的机制部分的代码应该由架构师自己操刀。
 
最关键素质:全面

 
全面是一个架构师展现出来的最关键素质,全面体现为以下三点:

一、在面对业务问题上,架构师脑海里是否会浮现出多种技术方案:

这点其实挺重要的。否则可能就会出现明明有一个简单成熟的方案,但由于不知道而做了其他复杂不成熟的方案,所以广阔的技术视野是架构师的必备

另外架构师不可能全部擅长,在自己不擅长的点上,需要知道找哪个专业的人是靠谱的,这点也非常重要。

二、在做系统设计时是否考虑到了足够多的方方面面:

例如很多系统设计容易遗漏上线环节的细节,导致在上线时发现漏掉了什么考虑,临时解决或只能重来。

记得有一年我做的一个设计没有考虑到上线阶段的一个细节,导致上线的时候发现由于网段的问题完全不work,并且没有临时解决方案,只好重来。

系统设计不仅仅指导研发同学怎么写代码,也包括指导其他所有相关技术同学的工作。

又例如我2008年在做服务框架设计的时候,集群和集群之间通过硬件负载均衡设备来访问的,连接的方式是单个长连接,这个设计导致了运行过程中如果要发布被调用的服务方,很容易出现压力都集中在前面重启的机器上,这也是典型的整个链路没有考虑清楚造成的设计问题。

再例如2013年我在做一个比较大范围的系统改造的设计时,由于对其中一部分的软件了解得不够,判断错误,导致后来这个改造在进行过程中才发现有些需要改造的关键软件设计做得太粗糙,最后上线进度差不多推迟了一个多月,而且那些后来补的设计都是紧急做的,风险非常高。

回顾自己设计过的软件,发现在这个点上犯的错可以讲好几天,看来我应该整理另外一篇文档《我在系统设计上犯过的xxx个错误》,里面有些其实靠一份好的系统设计模板也许就能避免掉。一份好的系统设计模板是可以帮助架构师思考全面些的。

三、在做系统设计时是否考虑到了未来的一些发展?

尽可能不要出现未来的一点变化就导致现在白干或要花大量力气来改造的现象
 
想当年做服务框架的时候,后来就发现由于当年做设计的时候没有考虑到将来服务调用trace的问题,导致了后来为了弥补这点花了巨大的力气(不是技术上,而是实施上)。
 
全面需要架构师有足够广的技术领域知识和足够多的经验积累,从全面这点就可以看到架构师的工作绝不是画几个框,连几根线那么简单。
 
对架构师“全面”这点的挑战,会随着系统的范围越大(一个系统的设计,和100个系统组成的大系统的设计挑战是完全不同的)而变得越难,无论是知识的广度、考虑的点的覆盖度、还是未来趋势,更复杂的情况甚至会出现架构的调整对应着组织结构的调整,这种也要考虑到,例如服务化这种大的架构改造,就意味着专职的专业领域服务团队的成立。
 
全局 

全局观通常是指在系统设计时是否考虑到了对上下游的系统的影响。

毕竟通常所设计的系统不是一个孤立的系统,如果没有足够好的全局观,有可能会导致自己的系统做完上线,其他上下游系统(尤其有些连上下游是谁,怎么用都不知道的情况下)出现问题。这种案例同样不少。
 
权衡 

权衡同样也是架构师极度重要的能力。或者也可以认为是决策能力,技术方案的拍板是一个架构师最重要的职责。
 
上面说的“全面”是架构师在思考时“放”的过程,而权衡就是“收”的过程。收的过程结束基本就意味着技术方案的确定,同时也确定了节奏。

权衡在两点上会体现得特别突出:

一、技术方案决策原则: 

通常一个问题都会有多种可解决的技术方案。怎么来决策就至关重要了,而决策通常又和全面相关。大的来说通常决策的原则就是性价比和可持续发展。

  • 性价比简单来说是方案的实现成本,这个成本要包括非常多的方面。例如有些场景可能会是用硬件解决看起来是花钱,但最终折算成本是最划算的,很多系统设计在决策性价比时都过于随意,例如一个另外常见的场景就是建设一套新系统替代旧系统,这个时候可能完全没考虑旧系统的迁移代价甚至超过了改造旧系统的代价。

  • 可持续发展简单来说就是所选择的技术方案在公司是否可持续。例如简单的案例是公司主体的研发人员都是php,却搞一个其他语言,且只有极少人懂的。

    当然,这还是要看性价比,如果搞一个其他语言带来的效益超过了语言/人才体系的更换成本。又例如引入一个开源产品,有无专业团队维护这都是要考虑的关键因素。

二、优先级和节奏控制:

经常我会问做系统设计的同学一个问题:对于这个业务场景而言,在系统设计上最需要把握的一个点是什么。

这是一个关键问题,全面意味着考虑到了很多地方的问题,但通常业务需求实现都是有很强的时间要求的,因此在这个时候必须考虑清楚不同点的优先级,

同时也包括技术方案在决策时也要做出取舍,有可能选了一个不是那么好的技术方案,但通过留下一些可改造的空间,为以后的重构做好铺垫,那就是很不错的,尤其技术同学有些时候比较容易陷入解决技术问题的场景去,但那个问题其实有可能不是现阶段最重要的。
 
优先级和节奏控制是我认为一个最NB的架构师的最佳体现,优先级意味着把握住了重点,可以确保在所设计的架构指导下业务实现不会出现大问题,节奏控制则意味着全面,知道随着业务发展该在什么时间点做什么事,为将来做好铺垫。

转载于:https://www.cnblogs.com/zhjh256/p/6444535.html

架构师是大忽悠吗?阿里技术大牛告诉你真相!相关推荐

  1. 【IT技术】阿里RDS首席产品架构师何云飞:阿里云数据库的架构演进之路

    专访阿里RDS首席产品架构师何云飞:阿里云数据库的架构演进之路 原文作者:pipihappy8888 http://www.itpub.net/thread-1887486-1-1.html 如果说淘 ...

  2. 天猫总架构师何崚:好的技术团队不是“需求翻译机”或“架构优化机”

    " 一个好的技术团队应该具备哪些特质?一个好的技术团队的leader应该怎样实施管理?技术和业务如何做到完美结合?这是来自天猫技术团队的经验,仅供参考. 前言 2012 年,无线化大规模到来 ...

  3. 一线Java架构师概括互联网公司的标准Java技术架构

    一线Java架构师概括互联网公司的标准Java技术架构 大部分人对于BAT的技术有一种莫名的崇拜感,觉得只有非常牛逼和天才才能做出现在的这些系统,但经过前面两篇博文的分析,我们可以看到其实并没有什么神 ...

  4. 2019年开发者必读!20位阿里技术大牛们帮你列了一份经典书单!...

    导读:寒冬中,最值得投资的是学习,是增厚的知识储备.下面就是20位阿里技术大牛们为我们推荐的经典书籍.书籍类型涉及技术.管理.哲学等方面,希望这些书籍陪伴你度过这个漫长的寒冬.书单之外,还有成长感悟. ...

  5. Java入门到架构师知识点整理,P8的技术大咖是这样通关的

    一个人最怕的不是路途遥远,而是看不到胜利曙光.我希望下面这篇文章能给你的学习之路带来一丝曙光,大家不妨试着读一下吧,如果有收获给我点个赞哟. 温馨提醒:这篇文章写着写着就一万字了,建议大家关注后再收藏 ...

  6. 阿里 P8 Java高级架构师,都需要掌握哪些技术栈?

    大家都知道,阿里P8高级技术专家,基本上是一线技术人能达到的最高职级,也是很多程序员追求的目标.达到平均年入百万的P8 Java高级架构师级别,不仅要具备优秀的编程能力和系统设计能力,在技术视野和业务 ...

  7. Java架构师,大数据架构师,高并发设计模式,机器学习知识点分享

    第一章:java精品课程目录大全 1.亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 1课程介绍以及高并发高可用复杂系统中的缓存架构有哪些东西?32分钟 2基于大型电商网站中的商品详情页系统贯 ...

  8. 为什么蚂蚁金服架构师建议从Zookeeper开始提升技术水平?

    随着移动互联网的发展,网站或手机APP不再只有少部分人使用了.流量是互联网公司最想得到的东西,他们会想尽一切办法去获取流量. 在这样的背景下,对于网站和APP来说一定要想办法去应对更多的流量,也就是网 ...

  9. 看下资深架构师平时需要解决的问题,对比你离资深架构师还有多少距离——再论技术架构的升级之路...

    我目前奋力在技术架构的路上不断前行,虽然中间遇到很多障碍,目前自己感觉,勉强能达到架构师的级别,所以自己感觉还有底气写这篇文章. 之前,我写过篇博文,架构师更多的是和人打交道,说说我见到和听说到的架构 ...

最新文章

  1. ORACLE分区表详解
  2. java webdav服务,nginx+webdav
  3. win2012每次启动显示服务器管理器,win2012r2服务器管理器打开角色.功能出错
  4. 洛谷 P1004 方格取数 【多线程DP/四维DP/】
  5. MVC运转-平台分发
  6. Java服务端向客户端写文件_java实现客户端向服务器发送文件
  7. EasyUI+JSP之java读取数据库后JSON格式数据的返回及调用
  8. 手机端的1px细线问题
  9. JAVA Pattern和Matcher 的用法
  10. Grunt-jsdoc生成JS API文档
  11. 不同地址访问mysql_应用服务器如何访问位于多个不同的私网内,但是私网 IP 地址是一样的数据库服务器?...
  12. GeekTool介绍及Shell模式应用二则(以及df、cal、date、sed的使用)
  13. Python学习笔记3——条件语句及循环语句
  14. Python爬虫 requests使用post请求分析并登录Chinaunix
  15. opencv图像处理学习(四十)——伪彩色处理
  16. 连英文都不懂怎么学python_在英语完全不懂的情况下如何学编程?
  17. python分析红楼梦中人物形象_《红楼梦》三大人物形象分析
  18. 数据ETL——使用R语言对身份证进行校验,排序筛选等操作
  19. 无线路由器使用方法,教你怎么设置无线路由
  20. java熔断器_详解spring cloud分布式关于熔断器

热门文章

  1. Altiumnbsp;designernbsp;学习教程
  2. 玩转mini2440开发板之【在Ubuntu 14.04下编译安装tslib 1.4版本】
  3. 基于Java NIO的Socket通信
  4. MOSSE目标跟踪算法的理解
  5. Linux进程和线程
  6. 特斯拉超级充电桩亮相:充电5分钟能跑百公里
  7. FIFO IP设计说明
  8. HIS中的医学影像信息处理系统(PACS、RIS、LIS)
  9. resnet keras 结构_Day146:第二讲 ResNet
  10. python添加时间戳_在python中添加时间戳