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

简介: 架构的本质是管理复杂性

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

背景

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

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

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


架构设计理念说明方法

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

还有这么几句:

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

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

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


道:架构设计理念

  • 架构本质

架构的本质是管理复杂性,微服务本身也是架构演化的结果

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

架构设计理念

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

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

  • 简单

以最简单的方式实现,最大限度的降低复杂度。方便开发与验证,提供简单的设计模式,有利于系统内的所有人员达成一致,为高效的组织提供可能。

  • 有效

以有效的方式解决问题。不进行过度设计,以免不必要的复杂度加入到系统中。在精益中提到的拒绝浪费,以最有效的方式完成设计拒绝任何形式的浪费。

  • 可靠

提供可靠的解决方案在现有的场景下选择最适合,最实用的技术搭建可靠的解决方案。

  • 完备

完善的解决问题,不遗留任何问题。支持快速决策的要求,提前考虑可持续发展,异常场景等需要决策的内容。在精益中提倡系统性的思维,根据系统整体情况为系统建设提供完善的解决方案。


法:落地指导

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

  • 架构落地驱动力

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

  • 合适的就是最好的

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

  • 模式思维

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

  • 没有万能的银弹

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

  • 架构设计工作推进方式

    • 透明

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

  • 合作

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

  • 开放

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

  • 体系

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


术:设计工作指导原则

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

  • 数据化

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

  • 可视化

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

  • 体系化

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

  • 标准化

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

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


器:方法与工具

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

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

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

总结

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

参考

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

目录
相关文章
|
29天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
97 6
|
29天前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
38 1
|
4月前
|
存储 架构师 测试技术
架构之道——人人都是架构师
本文的探讨和编写主要围绕三个方面:架构是什么?架构师要解决的问题有哪些?解决这些问题的方法论是什么?最后作者希望人人都能具备架构师思维。
|
2月前
|
缓存 NoSQL Java
秒杀圣经:10Wqps秒杀,16大架构绝招,一文帮你秒变架构师 (2)
高并发下的秒杀系统设计是一个复杂的挑战,涉及多个关键技术点。40岁老架构师尼恩在其读者交流群中分享了16个关键架构要点,帮助解决高并发下的秒杀问题,如每秒上万次下单请求的处理、超卖问题的解决等。这些要点包括业务架构设计、流量控制、异步处理、缓存策略、限流熔断、分布式锁、消息队列、数据一致性、存储架构等多个方面。尼恩还提供了详细的实战案例和代码示例,帮助读者全面理解和掌握秒杀系统的架构设计。此外,他还分享了《尼恩Java面试宝典》等资源,帮助读者在面试中脱颖而出。如果你对高并发秒杀系统感兴趣,可以关注尼恩的技术自由圈,获取更多详细资料。
秒杀圣经:10Wqps秒杀,16大架构绝招,一文帮你秒变架构师 (2)
|
2月前
|
消息中间件 运维 数据库
架构设计之解析CQRS架构模式!
架构设计之解析CQRS架构模式!
架构设计之解析CQRS架构模式!
|
2月前
|
缓存 NoSQL Java
秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师 (1)
高并发下,如何设计秒杀系统?这是一个高频面试题。40岁老架构师尼恩的读者交流群中,近期有小伙伴在面试Shopee时遇到了这个问题,未能很好地回答,导致面试失败。为此,尼恩进行了系统化、体系化的梳理,帮助大家提升“技术肌肉”,让面试官刮目相看。秒杀系统设计涉及16个架构要点,涵盖业务架构、流量架构、异步架构、分层架构、缓存架构、库存扣减、MQ异步处理、限流、熔断、降级、存储架构等多个方面。掌握这些要点,可以有效应对高并发场景下的秒杀系统设计挑战。
秒杀圣经:10Wqps高并发秒杀,16大架构杀招,帮你秒变架构师 (1)
|
3月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
222 3
|
4月前
|
Kubernetes Cloud Native Docker
云原生之旅:从容器化到微服务架构探索移动应用开发:从理念到实践
【8月更文挑战第27天】在数字化浪潮中,云原生技术如一艘航船,带领企业乘风破浪。本文将作为你的指南针,指引你探索云原生的核心概念,从容器化技术的基石Docker和Kubernetes,到微服务架构的设计哲学。文章不仅阐述理论,更通过实际代码示例,让你体验从传统应用向云原生应用转变的奇妙旅程。准备好,我们将启航进入一个更高效、更灵活的软件部署和运维新时代。
|
26天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
7天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。