的年终回顾,总结了滋养我成长的建筑思想。叫做:蜕变!1属性派任何系统都必须有自己的架构属性。一个架构——一个系统的属性——和一个架构师所产生的——一组文档——绝对不是一回事。架构描述(AD)是一组工件,它以利益相关者可以理解和证明架构已满足其关注点的方式记录架构。Stone注:选择这个观点放在本文的第一篇,就是要摧毁架构师的个人主义和英雄主义,提醒架构师在团队中的主人翁精神。特别是在大型组织中,软件架构有时会失控。2组合软件体系结构是由软件组件及其属性、组件之间的关系组成的系统结构。程序或计算系统的软件架构是系统的一个或多个结构,它包括软件元素、这些元素的外部可见属性以及它们之间的关系。架构元素(或只是元素)是一个基本的组成部分,系统可以被认为是从中构建的。石头记:这是教科书,也是最基本的思路。我个人认为构图派更多的是从空间维度来考虑建筑。3决策软件架构是关于软件某些重要方面的决策的集合。这种说法的典型代表是RUP中软件架构的定义。软件架构涉及以下方面的重要决策:1.软件系统的组织;2.构成系统的结构元素的选择和它们之间的接口,以及这些元素相互协作时表现出的行为;3.如何将这些元素组合起来,使它们逐渐形成更大的子系统;4.用于指导本系统组织的架构风格:这些元素及其接口、协作和组合。5.软件架构不仅关注软件本身的结构和行为,还关注其他特性:功能性、性能、可扩展性、可重用性、可理解性和美观性。StoryofStone:依旧是教科书式的定义,更有设计感。4BridgeSchoolSoftwareArchitectureinContext是需求和设计之间的重要桥梁。这种相互作用是架构过程的核心。这就是WaterfallR&D背后的思路。5结构平衡是各种因素平衡的结果。石头的故事:一个特别务实的定义。昵称是:“权衡”。6康威定律:组织结构决定软件架构康威定律:设计系统的组织[...]被迫产生设计,这些设计是这些组织通信结构的副本。内部和之间的通信结构。StoneNotes:康威定律的意识是成熟建筑师的标志。在微服务架构大行其道的今天,康威定律被反复提及。微服务的本质是技术迫使组织结构发生变化。“你建造你所知道的,而你所知道的会影响你建造它的方式。”——这或许就是建筑与建筑师之间的关系。7建筑学派:坚固、实用、美观公元前1世纪,古罗马帝国工程师、建筑师马库斯·维特鲁威·波利奥在其著作《坚固、实用、美观》中首次提出建筑的三大要素《建筑十书》.英文表达是Firmitas,Utilitas,Venustas,通俗地说就是Solid,Useful,Beautiful,用计算机术语表达:Firmness:达到令人满意的免于破坏性失败的程度。商品:用于完成其声称的任务的实用程序。愉悦:使用中的愉悦。石头记:时至今日,这三个要素仍然是优秀软件架构的重要组成部分。8“4+1”视图模型逻辑视图主要强调面向对象设计;进程视图主要强调并发和同步;物理视图主要强调软件和硬件的映射;部署视图强调部署环境中软件的静态组织。场景强调主要需求或用例。石头记:经典的“4+1”架构视图,衍生版本众多。它是架构师入门的必修课,是指导软件架构设计和开发的重要思想。9使用视图和视角与利益相关者合作利益相关者是对架构感兴趣的任何个人或组织。关注点是利益相关者对架构的任何期望、需求或目标。视图是架构涉众关注点的结构化表示。透视图是用于构建透视图的模式、模板。使用视图和透视图的第一个好处是关注点分离。单一的观点难以描述复杂系统的架构。二是促进与利益相关方的沟通。同时方便管理系统的复杂度,增加开发者的注意力。它的缺点是观点支离破碎、观点选择错误以及观点之间不一致。架构视角是确保系统属性的一系列活动、策略和指导。StoneStory:一种基本且经典的建筑方法。由合格建筑师获得的执照。掌握这个方法,你就可以进入架构的世界,特别适合在大型组织中混,玩弄技术。推荐经典书籍:《软件架构设计》、《软件架构师12项修炼》、《软件系统架构:使用视点和视角与利益相关者合作》。10以终为始:作者游君从架构到团队管理,再回头看架构。初级架构师往往注重边界和责任,只扫自己门前的雪,不推卸责任,以此为荣。作者一针见血,从用户需求的角度思考架构——以终为始的架构观——阐述了良心架构的思考与责任:不为未来挖坑。作者首创的PMC框架(P>平台\M>商户\C>客户)值得所有互联网行业高手参考。从作者的文字来看,我对建筑的观察和总结是:1.建筑的空间属性:视图、视角、层次2.建筑的时间属性:动态、演化3.建筑的组合属性:功能、质量(非功能性)全文按照黄金圈理论组织,称为本章结构。这篇文章有真意,想辨别的话忘了词了。请阅读原文,感受美好。11闭环架构系统架构层面的闭环主要体现在系统监控上,主要分为三个层次:1.系统层监控,监控CPU、网络、存储等底层硬件的性能状态;2.应用层监控,监控页面/服务调用次数、调用延迟、错误次数等应用性能;3、业务层监控,监控PV/UV、用户登录数、订单量等重要业务指标。上图是一个假设的电子商务网站的分层架构图。1、系统层监控,监控CPU、网络、存储等底层硬件的性能状态;2、应用层监控,监控应用性能,如页面/服务调用次数、调用延迟、错误次数等3、业务层监控,监控重要业务指标,如PV/UV、用户登录数、订单量等.石头记:作者杨博的文章是我今年认知升级的最大信息来源。闭环思维也适用于人、组织和流程。12EvolutionArchitecture网站在不同的阶段遇到不同的问题,解决这些问题的技术也不同。流量小的时候主要是为了提高开发效率。前期要引入ORM、DAO等技术。随着流量的增加,通过动静分离、读写分离、主从同步、垂直拆分、CDN、MVC等方式不断提升网站的稳定性。面对更大的流量,通过垂直拆分、服务、反向代理、开发框架(站点/服务)等,不断提升高可用。面对亿级更大的流量,通过中心化、弹性服务、消息总线、自动化(回归、测试、运维、监控)来迎接新的挑战。未来是要不断实现移动化、大数据实时计算、平台化……系统架构会不断迭代演化,就像当初从零到现在。StoneNotes:演化思维是敏捷架构的核心。对于很多创业公司来说,有必要仔细阅读一下58同城技术委员会执行主席沈健的这篇文章。13全栈架构“全栈不是万能的,跟选择的技??术栈甚至业务栈都有关系。”老曹是这样描述全栈的定义的。”我说全栈架构师可能是我自己发明的,但是全栈思维的优先级还是被大部分朋友认可的,其实就是一种大局观,一个功能,两者都可以实现前端和后端。优缺点和解决方案最好的选择是有一个全栈架构师,至少要有全栈思维。全栈思维可以简单理解为一种系统的思维方式。”如果把问题分为:已知的已知,已知的未知,未知的未知的话,全栈架构师的作用就是从未知的未知变成已知的未知。石头笔记:全栈思维和全栈能力,架构师的硬技能。14软件是用户参与的协同创作张林先生从一个问题开始:你重新开发了一个微信,它的功能和微信一模一样,它还是微信吗?没有用户的微信还是微信吗?由此推导出软件是代码+算法+数据结构+用户。因此,软件开发是开发者和用户群体共同创造的信息重构过程。架构是对大量非结构化信息进行重构、整合、组合以获得结构化信息的过程。石头笔记:科技承载双11狂欢?还是双十一塑造了技术架构?15建筑拓展方块石笔记:推荐经典书籍《架构即未来》。16架构扩展原则AKF最常用的架构原则1.N+1设计2.回滚设计3.禁用设计4.监控设计5.设计多活数据中心6.使用成熟技术7.异步设计8.无状态系统9、水平扩展、非垂直升级10、至少两步的前瞻设计11、非核心购买12、使用商品硬件13、小构建、小发布、快速试错14、隔离故障15、自动化石头:推荐经典书籍《架构即未来》。17OKR结构视图Stone注释:这是Stone的杜撰。斯通一直认为,一个优秀的架构师首先要负责关键技术的突破,解决技术可行性问题,从0到1得出关键成果。18架构六步思考夏华夏,美团点评食品首席架构师配送与店内餐饮,总结了架构师的三大能力和六步思维法。架构师的三大能力:1.站在高处——考虑“整体”:站在更高的层面全面看问题2.放眼长远——考虑“未来”:善于预见和规划3.深入————思“细节”:洞察六步思维法底层实现的细节:石头笔记:架构过程的闭环,很多团队都没有完成这个闭环吧?19开发和运维的三种方式三种方式:支持DevOps的原则。石头注:强调从开发到运维的价值流转,打破组织壁垒。并加强对该价值流的反馈闭环,提高交付效率。团队文化支持不断的试错。想想这三个轴是否反映了你的组织存在的问题?20领域驱动架构设计【本文为专栏作者诗诗原创文章,转载请通过作者微信公众号butianys(布蒂安斯)获得授权】点此,查看更多本作者好文章
