一个架构师谈什么是架构,以及怎么成为架构师
来点轻松的话题。我们调剂一下后再继续讲CAS SSO单点登录吧因为后面的内容全部和代码有关,大家会觉得枯燥。所以今天我们先来点”番外篇“,讲讲什么是架构师,什么是架构这个永恒的话题吧。此篇源出自我在公司内部写的一个PPT,它是用于在公司内部向广大技术人员做普及用的一个资料,而****这边的编辑不支持图文混排的效果,因此一些章节我就直接截取自我的PPT里的内容了,这样可能对大家在阅读上会显得更加生动和活泼一些吧。
架构的定义
先来看看软件架构的普遍定义吧。
一个程序和计算系统软件体系结构是指系统的一个或多个结构。结构中包括软件的构建,构建的外部可见属性以及它们之间的相互关系。
体系结构并非可运行软件。确切的说,它是一种表达,使软件工程师能够:
分析设计在满足规定需求方面的有效性。
在设计变更相对容易的阶段,考虑体系结构可能的选择方案。
降低与软件构造相关联的风险。
软件架构的生命周期
软件开发有其生命周期,它应该是:
而软件架构也有着其生命周期,它又是怎么样的呢?
软件架构的重要性
为什么说一个软件架构是很重要的呢?直接编程直接开发,多EASY?请看下面几点:
软件架构能够满足系统的品质
架构设计使受益人达成一致的目标
架构设计能够支持计划编制过程
架构设计对系统开发的指导性
架构设计能够有效地管理复杂性
架构设计为复用奠定了基础
架构设计能够降低维护费用
架构设计能够支持冲突分析
什么是好的软件架构
这个问题,可能大家一直都在问,包括一些IT企业也在问,对于这个问题的回答,可能不仅仅是一个简单的语句或者是定义就可以回答的出的,我们来看下面的几个形象的例子:
这个是什么东东呢?乐高玩具,乐高玩具大家肯定都玩过吧?
它即可以以一个完整的模型卖给你,你也可以把它全部打碎了重新从一个模型自由的再去组装成另一个模型,因为每一个乐高的模块在横向、坚向里都有标准的接口,这就是我们常说的高内聚、低耦合。
什么又是糟糕的架构
大家看看上面这幅图是什么?
一个是清代的八股文,一个是孔乙己。还记得回字的四种写法吗?那么你专门就研究回字的四种写法 ,但你有没有想过我把回字折开来又可以变成几个字?是否好折?
要知道最时髦的并不一定是最好的
为什么M1A2和阿帕奇直升机里不用A8处理器,或者是最新的奔腾处理器啊?实用、经过检验的才是最好的!
成功的软件又是怎么样的呢
我们谈的是软件架构,架构的最终体现是一个软件,那么什么是成功的架构什么是成功的软件呢?
大家看左边的这个图,是美国的“阿利伯克级”宙斯盾驱逐舰,右边的是印度模仿美国的宙斯盾自己设计和建造的”德里级”的“咖喱盾”驱逐舰。
两艘战舰一对比,怎么样?
一个是模块化的设计,整体线条流畅,战损时模块可以任意替换。
一个却是拼拼凑凑,线路外露,甲板上布满了各种电子设备和天线,一旦战损,极难维护
架构之美
架构,架构,到底什么是架构?我以前上大学时有一个70多岁的老教授,他上课每讲20分钟左右,需要2个同学”架“着去上一次WC,我们的架构师当然不是指这种”架构师“。那么我们一直说的架构,到底它是一个什么样的东西呢?怎么样又可以做出一个完美的架构呢?
架构就像是迷踪拳
动作轻灵敏捷,灵活多变,它其实违背一切传统拳法,因此可以克敌制胜。
架构就像是独孤九剑,破剑式、破枪式、无招胜有招,它发源于传统武术,又扩展了传统的武术。
架构就像是一件艺术珍品,有时一个看似简单的架构往往却是一件艺术珍品。
大家知道挪威画家蒙克的那幅叫”呐喊“的作品吗,蒙克是一个疯子,这幅画很简单,就是随手涂鸦一般,但是大家知道这幅画值多少钱吗?2012年该画在纽约苏富比拍卖上以1.19亿美元被拍卖。
架构的意境
一个好的架构不应该受限于框架,受限于语言,受限于技术,受限于各种条条框框,它是一种意境。
架构时需要考虑的几个基本因素
JAVA通用领域的相关技术
当然,我们这边主要说的是JAVA,那么作为一名学习JAVA、J2EE的架构师来说,要具备一些什么样的技能才能达到架构师的水平呢?
上面这张图,我们这样来看,它分为3个部分:
顶部,是我们需要掌握的一些技术领域的知识,它可以使我们应对通用领域如电商、企业OA、银行保险金融等领域的一些解决方案和设计
中部,为了达到顶部这些技术我们需要了解的一些中间件、数据库、开发框架这些知识,它是一根支柱
底部,底部呢?它是我们的基础,为铺设我们通向中间或者更上层的一个基石,这也是为什么大家有时发觉我的博客和其它博客有不一样的地方,不仅仅有编程还有”中间“的这一层即数据库、性能、安全、框架搭建这些东西混合在里面的原因,因为我不希望大家通过阅读完了我的博客还只是停留在一个码农、码工、螺丝钉的这种水平上。
架构师的职能
说了这么多架构,我们来说说架构师吧。
大家看到了没有,架构师的第一职责就是关注:non-functional requirements,即非功能性需求。很多人对功能性需求和非功能性需求的界线划分还是不清楚,我这边举2个例子说明一下吧:
功能性需求
页面查询,这个查询是关联哪些哪些数据库表,因为我的业务是有这样这样的需求,在界面A里点了一个按钮,然后弹出窗口B,在窗口B里要显示什么样的数据,最后界面A里点完后,当我打开界面B时哪块数据已经随之发生了更改。
非功能性需求
我们的系统查询速度小于2S,是否考虑使用异步查询、使用队队列机制,系统要求可以容纳1000个并发,这个系统要可以做成插件式的,要可以横向扩展,要符合XXX协议,这个Webservice要做成SOAP HEAD内带有BASIC认证,还是做成符合NTLM的认证的,还是使用令牌环认证的?这个下拉框要做成即可输入又可以下拉的,这块认证要访问LDAP?
很多以业务为主的项目型公司认为架构师就是trouble shooting(即排错、查错的意思,就是有错误、出问题了再找架构师),把架构师当成了fireman(救火员),可是你不自己想想为什么出了问题架构师过来2秒、2分钟或者1天半可以解决你们1个月几十人天天到零晨也解决不了的问题呢?嗯?
解决了说这是人家应该的,解决不了,说人家架构师不合格呢?是不是我们应该从这个软件最早的框架上、架构上去发现一下问题呢?
架构师啊,这不是一个trouble shooting的问题啊。
在节前我也进行了一些面试,出于纯技术角度来说,即走架构师,TECH LEADER这样的路线的侯选人。我还是发觉了不少的问题这也是中国的一个通病:即我们的程序员,很多时候不是在做程序,而更多时候是在做业务逻辑,成了一个某一领域的业务人员了。
当然,我们的程序员在其职业生涯的前3年、4年都是做某一块领域的代码的,这个是没有问题的,但是请一定一定记住,我们是编码,是IT,是程序员,不是“业务人员”!!!
什么是IT?什么是程序员?什么是Tech Leader?什么是架构师?这个问题大家有必要好好的去问一下自己,去好好的想一下,架构师的要求是什么?
我这边随便说一些东西:相信对一些要走技术道路的同学们是有帮助的:
TCP/IP协议,加密解密,计算机原理(增补反码),JPG码,MPEG2-3协议,逻辑电子电路,计算机编译器原理(堆、栈、队列),这些东西你平时工作时一直用到吗?这些是你一直关注的底层吗?
如果你是要走技术路线,一定一定请记得“数据库+ASP/JSP”不是技术,它只比表单制作,报表制作人员稍微强了那么一点点。
请一定记住,技术路线关注的是非功能性需求,非功能性需求啊,就是一种一通百通的东西,有了这块底蕴,任何需求和你说清了,对你来说是没有任何“难度”的,或者你再去学,是可以举一反三的啊。
最近一直面试一些侯选人,做架构师的,在此过程中我对此深有感受,找一个程序员开发不难,招一个架构师,难。。。唉,我觉得大家有必要要考虑一下,如果我走技术路线,我缺什么,我怎么补,还要关注些什么?
科技是第一生产力,管理方法论中的所谓的六SIGMA即六西格玛的第一条就是“技术人才是当下企业的第一生产力”,大家看看能够发财的是哪些公司?阿里,淘宝,支付宝,GOOGLE, 通讯,互联网,高科技等等等一些企业,他们靠的不是业务逻辑,而是真正的技术,这足以说明问题了,所以大家如果要走技术道路,请多关注一下更细节,更底层的东西吧。
这也是为什么我在之前的博文中所阐述的那些东西的原因,可见企业IT项目开发之七宗罪。
第一宗罪:重业务不重技术
第二宗罪:编程开发人员沦为业务开发人员、沦为码农
第三宗罪:IT市场沦为自由市场、小菜场一样的叫买
第四重罪:技术无用论的诞生
第五宗罪:闭门造车,与实际脱节,完全抛弃业务
第六宗罪:消极怠工
第七宗罪:不思进取
架构师的分类
一般会把架构师分为:
业务架构师即BA
系统架构师SA
其实从严格意义上来说架构师是可以分成三类的:
一般就是把系统架构师和应用架构师合成一类。这个从本质上来讲倒没有什么太大的区别,不伤大雅。
架构师会做什么
一个架构师在一个团队中或者说在一个企业中它具体要做哪些日常工作呢?
架构师并不是万能的
架构师很牛B,可是架构师也是人,他不是超人。
架构师需要掌握的软技巧
技术,是架构师的Hard Skill,那么架构师的Soft Skill有哪些呢?
架构师不是皇冠上的明珠
大家一定一定要记住,架构师决不是像大家想像中的那样,是所谓的皇冠上的明珠,架构师承担的责任是相当的大的。
如何成为架构师
人类是如何进化的?学习、使用工具、社会协作性、不断的总结经验。
架构师也会退化到比一般的程序员都不如。如果停止了学习的步伐,那么。。。。。。
谈架构师的自我修养
学习之道
需要掌握的基本功中的基本功
大家注意,上面这个列表在学习时是有先后顺序的,从上至下分别为第一步,第二步,第三步。。。。。。不要觉得枯燥,你可以去试试,真的,被折腾着和被快乐着。Bad artist copy good artist steal
放正你的心态
不断的需要自我激励
成功的唯一方法便是,承认现实,超越现实,鼓起勇气并善用它。
学会平静的对待生活中的不完美之处,适应自己的情绪,了解如何让它们自然宣泄出去
学习如何把不完美的地方转换成我们的优势,激发我们的创造力
自我激励,不管外部条件是否有激励性,找到一种激发最佳状态的情绪,学习如何在我们的意识中制造一些波动来激励我们前进
此文献给众IT技术人员和那些将要或想要走上IT道路的朋友们
来源丨https://blog.****.net/lifetragedy/article/details/43925857/
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!
【推荐书籍】
01
《微服务架构设计模式》
《微服务架构设计模式》
推荐语:本书由世界十大软件架构师之一、微服务架构的先驱、Java开发者社区的意见领袖Chris Richardson亲笔撰写,旨在帮助架构师和程序员学会使用微服务架构成功开发应用程序。书中描述了如何解决我们将面临的众多架构设计挑战,包括如何管理分布式数据,还介绍了如何将单体应用程序重构为微服务架构,涵盖44个架构设计模式,系统解决服务拆分、事务管理、查询和跨服务通信等难题。
▲扫码了解详情并购买
02
《企业级业务架构设计:方法论与实践》
推荐语:19年金融行业经验资深架构师撰写,微软、阿里、百度、网易等13家知名企业架构师联袂推荐,业务架构“知行合一”。作者在书中倡导“知行合一”的业务架构思想,全书内容围绕“行线”和“知线”两条主线展开。“行线”涵盖企业级业务架构的战略分析、架构设计、架构落地、长期管理的完整过程,“知线”则重点关注架构方法论的持续改良。
▲扫码了解详情并购买
03
《微服务架构设计模式》
《Service Mesh微服务架构设计》
推荐语:从设计与工程化视角分析Service Mesh微服务架构与实现,穿插大量一线实践真知灼见。
▲扫码了解详情并购买
04
《架构即未来:现代企业可扩展的Web架构、流程和组织(原书第2版) 》
推荐语:本书凝聚作者多年来在不同的互联网公司工作和咨询过程中积累的丰富经验,从人、过程、技术三个角度深刻而广泛地讨论了技术管理和技术架构的具体实践经验,强调了组织、人员、过程和技术的配合,深入浅出地分析了在技术管理过程中经常遇到的各种具体问题,既讲解理论,也佐以实例,让读者可以系统地获得关于技术管理和技术架构方面的知识和经验。
▲扫码了解详情并购买
05
《微服务架构设计模式》
《架构真经:互联网技术架构的设计原则(原书第2版)》
推荐语:本书是《架构即未来》的姊妹篇。全书共分13章,用成功互联网产品公司首席技术官和企业家的故事,引出了对构建可扩展的产品至关重要的50条规则,可帮助软件研发人员、技术运维人员和管理者修复或重新架构现有产品,了解关于扩展的佳实践并有计划地实施,还可以帮助建立一套架构原则以推动未来的研发。
▲扫码了解详情并购买
06
《系统架构:复杂系统的产品设计与开发》
推荐语:本书首先讲解了什么是系统,什么是系统架构,并从形式和功能两个方面讲解了如何分析系统。之后开始讲解如何创建良好的系统架构。在将概念演化为架构的过程中,架构师需要对系统进行分解,以看清这些组件的结构以及它们之间的交互情况,因此需要根据一些衡量指标来构建权衡空间,以便使用优化算法找出优势较大的架构。
▲扫码了解详情并购买
07
《微服务架构设计模式》
《软件架构:Python语言实现》
推荐语:本书首先解释如何利用Python语言实现应用软件架构,让你逐步理解什么是架构级的需求以及如何确定这些需求;然后,你可以获得对架构不同质量属性的完整理解,这些质量属性包括可修改性、可测试性、可扩展性、可部署性和安全性等,从而帮助架构师构建满足业务需求的软件架构产品。
▲扫码了解详情并购买
08
《软件架构理论与实践》
推荐语:本书是一本全面介绍软件架构的书,从软件架构发展历史的过去、现在到可能的未来,从软件架构的基础理论方法到技术手段,从软件架构的设计开发实践到质量保障实践,以及从静态软件架构到动态软件架构、再到运行态软件架构,等等。
▲扫码了解详情并购买
09
《微服务架构设计模式》
《DevOps:软件架构师行动指南》
推荐语:本书从软件架构师视角讲解了引入DevOps实践所需要掌握的技术能力,涵盖了运维、部署流水线、监控、安全与审计以及质量关注。通过3个经典案例研究,讲解了在不同场景下应用DevOps实践的方法。这对于想应用DevOps实践的组织具有切实的指导意义。
▲扫码了解详情并购买
10
《实用软件架构:从系统环境到软件部署》
推荐语:本书是一本实用的教程,使读者可以按照书中所说的方法,通过多个阶段的演进,来迭代式地构建出软件的架构。书中指出了各种架构工件的运用方式,使人可以把这些清晰、简明、精准而且易懂的工件,恰到好处地运用在实际的应用场景之中。本书简单、明确、易于理解、便于描述,而且足够实用,能够加以执行。可给IT工作者和软件工程专业的学生带来较大的帮助,使他们明白怎样对软件系统进行架构。
▲扫码了解详情并购买
11
《微服务架构设计模式》
《OpenShift在企业中的实践:PaaS DevOps 微服务》
推荐语:多位全球知名企业IT负责人联名推荐,两位红帽和亚马逊AWS云计算和微服务资深架构师和技术专家合著,从实战角度全面剖析OpenShift、 DevOps和微服务技术,为企业通过OpenShift实现IT业务转型。
▲扫码了解详情并购买
12
《数据中台:让数据用起来》
推荐语:数据中台领域领先企业数澜科技出品,阿里巴巴集团联合创始人推荐!萃取百家头部企业数据中台建设经验,系统总结数据中台建设方法论。
▲扫码了解详情并购买
13
《微服务架构设计模式》
《企业IT架构转型之道 阿里巴巴中台战略思想与架构实战》
推荐语:阿里巴巴中间件首席架构师撰写,近10年架构转型实战经验总结,“互联网+”落地必读手册。本书从10年前阿里巴巴为何要启动中台战略说起,详细讲述了惊心动魄的架构转型过程,以及在这个过程中的深度思考和各种实践,包括成功经验,也包括失败教训。这是迄今为止首次披露阿里巴巴集团中间件体系最全面系统的资料,这些宝贵资料对所有进行“互联网+”实践的企业和单位都有参考价值,对软件开发人员和架构师也会有所启发。
▲扫码了解详情并购买
京东/当当正在大力度促销!
囤书正当时
数据库专题天猫上线
复制¥JPJc1VWZ3e4¥
直达店铺专场
...