架构设计00-架构师知识体系05-架构设计理念

架构设计系列文章,请参见连接。

背景

一个人怎么做一件事情,取决于一个人怎么认知这件事情。对于架构设计来说也是一样的。到现在软件业界对架构没有一个统一的认知,而在没有统一认知的情况下怎样去做架构设计这件事就成了一件无解事情。

作者本人对与架构设计的认知是:技术架构设计是业务架构的一个组成部分,由业务去规划业务蓝图、发展规划等内容后由技术架构设计将整体架构填充起来。所以,就有了业务架构设计完成后,“灵魂”就诞生了,IT架构则是根据灵魂的需要设计“容器”。

对于企业的业务架构设计的方法论以及理念有很多方法论,例如:ZachManTOGAF
EAFDODAF等。这里就不讨论关于这部分了。


架构设计理念说明方法

在中国传统哲学理念中有:道、法、术、器。道是战略思想、战略规划,体现在以怎样的理念、价值观去指导设计架构工作。法是实现战略的最根本的战术方法、指导方针、思路,体现在架构设计过程中模式。术是具体的手段、具体的行为方式等,体现在架构设计应该遵循的原则。器是工具、体现在架构设计中真正落地事需要进行的分析与设计的方法与工具

还有这么几句:

道以明向,法以立本,术以立策,势以立人,器以成事。

用最精炼的化将道法术器的作用与关系说明的清晰了然。

在软件界技术、方法、思想都处于高速发展的阶段来说,怎样确保自己不被技术的滚滚洪流所冲倒。借鉴道不易,法简易,术变易,那么通晓架构设计最基本的道就可以长久的屹立不倒。下面会按照道法术器的层级关系分别说明这几部分。


道:架构设计理念

解决的是什么是正确的事,法、术、势、器解决的是如何将事情做正确。是不是感觉到有了这套方法论之后就再也不怕做错事了!作者就是以架构设计理念的方法指导具体架构设计工作。以这种方式使工作更加强有责任感与更加高效,并以这种态度开展与推进具体的工作。

架构设计理念

通过对平常工作过程中接触到的项目、系统、模块的架构设计的经验与教训的总结,再综合软件业界对于架构设计工作的理念与思想,在加上作者对软件架构设计的理解。最终总结出在实施软件架构设计时需要注意四个要点:\color{red}{简单,有效,可靠,完善}

这四个要点对于架构设计工作至关重要,它覆盖了架构设计工作的方方面面。而且这四个要点在架构设计中并不是孤立的,它们之间有着千丝万缕的联系。简单的架构在有效的解决业务问题的基础上,同时能够提供完善解决方案并且提供可靠的业务服务能力才是好架构。再有:只有简单的架构才能最可靠的,设计过于复杂会产生各种不可控的问题。只有完善的架构才能为提供有效的业务解决方案等等。

  • 简单
    以最简单的方式实现,最大限度的降低复杂度。方便开发与验证,提供简单的设计模式,有利于系统内的所有人员达成一致,为高效的组织提供可能。
  • 有效
    以有效的方式解决问题。不进行过度设计,以免不必要的复杂度加入到系统中。在精益中提到的拒绝浪费,以最有效的方式完成设计拒绝任何形式的浪费。
  • 可靠
    提供可靠的解决方案在现有的场景下选择最适合,最实用的技术搭建可靠的解决方案。
  • 完善
    完善的解决问题,不遗留任何问题。支持快速决策的要求,提前考虑可持续发展,异常场景等需要决策的内容。在精益中提倡系统性的思维,根据系统整体情况为系统建设提供完善的解决方案。

法:落地指导

法在战略之下提供对于战术方法、指导方针、思路级别的工作指导。对于真正下手进行架构设计前必须明白的一些事情,也是在架构设计过程中用来规范落地中的思路问题的解决方案。

  • 架构落地驱动力
    在之前读的几本书中说明了不同的架构设计驱动方法,这些书以不同的方式描述在架构设计过程中以怎样的驱动力来驱动架构设计。
    以风险驱动为主的《恰如气氛的架构设计:风险驱动的设计方法》说明在风险不足的情况下不要过多的设计,在风险来之前做推迟决策,在风险来临时做快速决策的方法。
    以演进式思路的《演进式架构》说明在UVCA时代软件技术从业人员应该以怎样的方式去应对变化,以达到变化驱动的设计的方法。
    以业务为灵魂以技术为肉体的《企业即业务架构设计》说明在有业务这个灵魂的时候技术才是有意义的。并以业务驱动的设计方式推进技术设计的进行。
    还有最重磅级的《领域驱动设计:软件核心复杂度应对之道》,它帮我们建立认识世界的大门。
    几本书说明了不同的设计驱动力,在不同的驱动力下会要求作出不同的架构设计。这就是需要进行模式思维的时候。

  • 合适的就是最好的
    马丁.福勒的《Is Design Dead?》已经很好的阐述了什么样的设计是好设计,作者在这里只是借鉴最终结论:合适的设计就是最好的设计。

  • 模式思维
    模式是前人通过不断的努力在某个特定的方面总结固定搭配或流程。像设计模式,架构模式都是这一类的。第一点需要知道在什么场景下哪些模式是最适用的。第二不要拘泥与模式中具体的知道要做到将模式融入到实际的工作中。总结起来就是:规则对于智者来说是指导,对于愚者来说是遵从。

  • 没有万能的银弹
    在萨姆·纽曼的《微服务设计》一书中明确的说明没有万能的银弹,也不可能有万能的银弹。这就需要从业人员用自己的分析能力,分析出具体业务中的问题并根据问题形成方案。而不是利用某一个银弹去指导自己一切工作。

  • 架构设计工作推进方式

    • 透明
      系统是完全透明的。可以让所有人都能很好的看懂,很快的理解系统。明确的表明系统结构,提供可以可视化,可被评估,可被改进的基础。

    • 合作
      对于企业内部、外部业务的支持都是需要通过架构体现出来的。为公司的合作建立基础,在技术体系的基础上,更快的得到共识,更快的达到统一。

    • 开放
      架构开放,任何人、任何时间、任何地点都可以提出改进意见。为我们的技术体系建设提供智慧。促进形成开放的组织,开放的过程。为公司建设更加主人公意识的团队与过程。

    • 体系
      建立完善的体系。帮助建立完善的思维体系。减少碎片化对系统带来的未知感与不确定感。体系中可以包括:业务,工程,技术,组织等软件工程中的内容。


术:设计工作指导原则

术是具体的手段、具体的行为方式等,体现在架构设计应该遵循的原则。要让架构表现哪些内容才能让架构看起来更符合上面的道、法的内容。一个系统架构设计最普遍的要求是安全、稳定、性能和规范这四个大点,还有可能包括提高工程效率、实现业务目标等。要满足这些点需要让架构体现出一下四点:数据化、可视化、体系化、标准化。

  • 数据化
    方便进行量化的分析与决策支持工作。这里就需要将业务指标和技术指标全部进行设计与验证。这些指标可以通过可视化进行可视化。

  • 可视化
    以直观的方式去获取想要看到的,关心的数据。在可视化中运维需要可视化,帮助快速定位运维问题、以及线上问题快速定位能力。更加方便之后进行弹性伸缩,方面的方法制定。再有业务可视化,基于数据化的内容进行业务数据的展示工作。

  • 体系化
    制定技术目标,在目标的基础上进行相关的开发与设计工作。明确框架不可能保证系统的可用性,性能,安全,可扩展性。这些是有架构去完成的。所以,需要一套架构。

  • 标准化
    统一公司内部的技术栈,以及技术栈上相关的组件。可以降低技术团队沟通以及技术选型所造成的不一致问题,标准化服务划分标准,为公司构建共同的设计平台以及构建功能的方法。标准化包划分标准,为代码的可读性,标准化质量标准,规范化质量过程中各个方面的质量标准。方便进行验证与实施。标准化运维。用来规范实施过程以及运维过程。

如需四化的具体内容可以留言。


器:方法与工具

对于一个技术人来说以什么样的底子支撑架构设计?第一条就是需要对技术有全面的认知。而这个认知不是一时半会就可以形成的,需要有完善的知识体系。例如作者正在输出的《微服务实践》系列文章就是对于技术知识体系的梳理与完善。完善自己的技术知识体系有一个标准,这个标准就是对与统一领域不同技术实现的应用方式都有自己的见解。

对事物的分析方法:分解、抽象、知识。借用这三个方法可以对世间的任何事情进行分析与设计工作。这是《恰如其分的架构设计》一书中提出的,具体内容可以参见此书。

接下来就是最实际的工作:以那种分析方法分析系统中特性,怎样构建模型,构建什么样的模型,以什么方法进行设计。可以通过MDA、DDD进行业务的分析,以UML进行模型构建,以设计原则,架构模式、设计模式指导进行架构设计。

总结

对于个人来说懵懵懂懂的过日子可以,但活明白自己的人生才是更重要的。对于自己所热爱的内容需要以不断的热忱、好奇心去探索它。并为能够做好它的而感到骄傲。而做好热爱的事情不能盲目的去做,需要有自己对这件事的理想、在理想的指导下形成我们对事情的追求、以所追求的目标指导自己的工作、为达成目标寻找并实践各种方法论。这样才能真正的从理想落地到实施上。并在实施过程中不迷失自己。

参考

程序员的道法术器势
道法术器势

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 一、生命周期 一个事物一旦出生,就必然会长大,变异,一旦长大,就面临着衰老,接下来就是消亡了,这个过程就称为一个事...
    ZyBlog阅读 2,647评论 1 11
  • 微服务架构设计实践 1 序言 最近,在软件架构设计领域,微服务非常火。 一提到软件开发、架构设计,如果不提微服务,...
    java高并发阅读 929评论 2 13
  • 什么是同源策略 浏览器出于安全的方面考虑,只允许同协议,同域名,同端口下的接口交互,不同源的客户端脚本在没有授权的...
    ZombieBrandg阅读 305评论 0 0
  • 顾春阳 公司 扬州市方圆建筑有限公司 打卡第339天 【知~学习】 《六项精进》5遍 共1330遍 《大学》5遍 ...
    顾春阳阅读 51评论 0 0
  • 我做了四年微商,微商虽小,学问可大。 我刚开始做微商,可以说是傻白,什么都不懂,技术方面,微信也没玩过,朋友圈都不...
    阿霞_ecdb阅读 351评论 0 1