点击上方“程序员小灰”,选择“置顶公众号”

有趣有内涵的文章第一时间送达!

于是,小灰去向大黄请教




这是有关未来的故事:

从前,有一个赶路的人路过一片工地,看到三个年轻人在工地上搬砖。

于是,他问其中一个人:

于是,他又问了第二个人:



于是,他又问了第三个人:



十年之后~

曾经说自己在建造城市的年轻人,成为了市长

曾经说自己在搬砖的年轻人,成为了砖厂老板

曾经说自己在搭建教堂的年轻人,最没出息,成为了架构师

什么是架构师?


架构师英文architect,这个词源于建筑学。软件工程当中的架构师和建筑工程当中建筑师有许多相通之处,都是负责“产品”宏观的架构设计。

在一个团队里,架构师充当了技术Leader的角色,不仅要完成项目的整体设计和规划,还要带领技术团队一起解决实际问题,攻克技术难点,使得软件的设计、开发、测试、发布流程得以顺利完成。


下面这张图,表达了一个应用架构师(技术Leader)在团队当中的角色:



需要注意的是,这张图中的架构师只是应用架构师,所以运维和DBA人员没有归入到他的管辖范围。同时,每个公司的具体组织结构也不尽相同。


架构师都做些什么?


1.架构设计


架构师,顾名思义,第一职责就是在软件设计阶段,做好软件“骨架”的设计。架构师需要把产品的需求翻译成软件工程的设计文档,确定各个系统与模块的边界,评估系统的量级。


2.技术选型


从前端到后端,从缓存到数据库,面对为数众多的第三方组件,架构师需要作出合理的选择。

前端页面选择模板引擎还是动静分离?

服务端选择Java还是Node.js?

服务治理选择DubboX还是Spring Cloud?

消息队列选择RocketMQ还是Kafka?

分布式缓存选择Redis Cluster 还是 Codis?

数据库选择Mysql还是Oracle?

全文检索选择Solr还是ES?

技术没有绝对的好坏之分,关键看是否适用于公司的业务场景。

3.管理非功能性需求

满足需求是项目开发和架构设计的根本,而管理非功能性需求则是项目的升华。

在公司从0到1的创业阶段,开发者更关注的是功能性需求,往往一个简单粗暴的MVC项目就可以搞定一切。当业务量级逐渐增大,用户需求逐渐多样化,非功能性需求的重要性就逐渐显现。

非功能性需求都包含哪些内容呢?

性能(响应时间)

可扩展性(适应需求的快速变化)

可用性 (四个9,五个9,必要时的限流和降级)

安全性(防范各种恶意攻击,实现风控)

可监控(完善的监控和报警机制)

灵活性(便于非开发人员进行配置)

可维护(持续集成,持续部署)

国际化(冲出国门)

4.攻克技术难题

架构师不只需要关注宏观的设计,也需要具有攻克技术细节的能力。在团队开发过程中遇到难以实现和优化的技术问题时,架构师需要发挥技术优势,解决系统的疑难杂症。



5.技术人员的管理和指导

架构师不只是一个技术大牛,也应该是一个好的管理者,在工作中需要把较大的项目和需求拆分一个个Story,依照每个人的情况分配给研发团队的成员,并且在必要的时候进行技术上的培训指导。

架构师都有哪些种类?

1.应用架构师


应用架构师是行业中数量最多的架构师,主要负责公司产品的技术架构。产品架构师需要对业务有足够的理解,根据产品需求设计架构,在运营团队的协助下评估量级,并管理项目的整个生命周期。


2.中间件架构师

中间件架构师主要负责基础框架、公共组件,通用服务的搭建。比如分布式服务框架诸如Dubbo,HSF;比如消息队列诸如 RocketMQ,Kafka。在大型互联网公司中,往往不是把开源框架简单“拿来”,而是研发出符合自身业务的企业中间件。


3.基础设施架构师

基础设施架构师负责服务器资源、网络资源、数据库等基础设施的建设;以及持续集成工具、持续部署工具的搭建。

以上所说的三种,只是架构师最基本的分类。一些特殊领域也有着专门的架构师,比如网络安全架构师、大数据架构师等等。



怎样才能成为架构师?


1.技术的深度和广度


有一句话说得好,将军就是更优秀的士兵。架构师作为程序员中的将军,首先需要有足够的技术深度,同时需要广泛了解行业内的主流技术,以便更好地设计架构和技术选型。


2.业务的理解

抛开业务谈架构就是耍流氓。这一点对应用架构师来说尤其重要。只有对业务有了充分的理解,才能对项目的设计和扩展做出合理的规划。

3.良好的沟通能力

架构师不只是低头做技术,更需要协调指挥团队内的成员,也需要跨部门和产品、运营、项目经理等人员做及时有效的沟通,所以沟通能力是必不可少的。


—————END—————

喜欢本文的朋友们,欢迎长按下图关注订阅号程序员小灰,收看更多精彩内容



漫话:什么是架构师?相关推荐

  1. 把书读薄:大型网站技术架构-核心原理与案例分析(第四篇 架构师)

    14 架构师领导艺术 职能:架构设计,软件开发,管理职能(规划产品,估算人力资源,估算时间资源,安排人员职责分工,确定计划里程碑,指导工程师工作,过程风险评估与控制). 是工程师的榜样,要做好表率. ...

  2. 一位资深Java架构师的晋级心得

    架构师是什么? 是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物.一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清 ...

  3. 阿里P7架构师告诉你Java架构师必须知道的 6 大设计原则

    在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义.本文主要将总结这些常见的原则,和具体阐述意义. 开发原则 面向对象的基本原则 ...

  4. 分享我如何在7年时间里成长为阿里Java架构师(附学习路线图)

    2019独角兽企业重金招聘Python工程师标准>>> 如何更高效的学习? 1.架构师应不应该写代码 总的来说,架构师和程序员在某些方面上有点像产品经理和用户的关系,大部分程序员并不 ...

  5. 《App架构师实践指南》:移动开发的进阶指南

    文章主要内容: 什么是 app 架构师 这本书主要内容 读完感受 什么是 App 架构师 成为"架构师"是许多程序员的梦想,当然也包括我,在工作的几年里,我见过很多架构师,他们在设 ...

  6. Win95架构师发布移动设备富媒体文档创建平台

    尽管PowerPoint在会议时很有表现力,但如果你只在网站上(或邮件中)放几张照片几句话就打发人的话,这样的展示是很难把产品给卖出去的.Satoshi Nakajima于今日发布了一个名叫Swipe ...

  7. Web架构师必备能力

    最近和几个朋友在谈到时下流行的Web 2.0,也提到了其中最重要的角色--架构师.多方各有争执,不外乎是因为背景和视角的缘故,包括架构一词,本身就从建筑学借鉴而来,至于架构师,则可以简单地从建筑学的设 ...

  8. 讲座记录:从码农到架构师(精简版)

    1.框架学习 不要过于在乎细节 学封装思想 不追新 否则太累 每个框架的设计理念不同 spring 比structs 优秀在哪? 关注增量而非全量 2.如何快速学习一门新技术 "新框架的产生 ...

  9. java培训分享:java培训架构师学习线路图

    本期java教程分享主要是讲解关于java培训架构师方面的内容,主要针对java架构师的学习线路图进行一个知识点的概括,下面来看看学习java架构师都需要了解哪些内容吧. java培训分享:java培 ...

  10. 阿里P7架构师的成长之路

    前言 系统架构师是近几年来在国内外迅速成长并发展良好的一个职位,它的重要性及给互联网行业所带来的影响是不言而喻的.很多程序员把成为一名优秀的架构师作为自己职业生涯奋斗的目标,但很多人努力却用不对地方, ...

最新文章

  1. 利用OnAnimatorove函数控制人物的移动
  2. PMCAFF | 11张图告诉你产品经理的正确思维方式
  3. python 日常小技巧
  4. ctl命令 usb_USB入门系列之六 —— USB设备的枚举过程
  5. windows media player upnp
  6. MySQL数据库进阶(事务Transaction)
  7. php面试专题---MySQL常用SQL语句优化
  8. oracle 数据管理,Oracle深入浅出之数据管理
  9. 配置Tomcat 域名解析 tomcat/conf server.xml
  10. spark学习之SparkStreaming
  11. switch更新找不到服务器,switch更新无法连接服务器(图文)
  12. Java实现水仙花数简单代码
  13. 1334177-81-9,S-acetyl-PEG8-alcohol乙酰硫基可以脱保护生成巯基
  14. Maya获取材质ShadingEngine信息
  15. python字典中删除键值对的del语句与pop方法
  16. 带你一文读懂SaaS版多租户商城系统对多品牌企业的应用价值
  17. Docker配置Daocloud加速器
  18. 公司测试部门来了个00后卷王,老油条感叹真干不过,不过.....
  19. android逆向,必会的命令
  20. 一个老中医刚刚公布的额(太强大了 除了教你怎么保健连怎么知生儿生女都有。。。。。。。。。。。。。。。。。。。。。。)

热门文章

  1. 浅谈计算机教学论文,浅谈计算机教学(论文)
  2. Android开发技巧 (四) —— 多窗口模式
  3. Java基础之集合篇(内容超详细,带你轻松搞懂List、Set和Map的使用)
  4. BeanUtils.copyProperties()复制对象时改变属性类型
  5. 云计算现在好就业吗?薪资怎么样?
  6. max-min 不等式(minimax inequality)
  7. 蓝牙HC05主从设置连接说明
  8. 番外篇 之 实现Unity和Android进行交互(基于Android Studio 3.1.1以及Jar包方式)
  9. Windows 环境下 onenote中表格插入行和列的问题
  10. seo与sem的区别与联系(大全篇)