返回顶部
首页 > 资讯 > 精选 >如何建立架构师的立体化思维?
  • 498
分享到

如何建立架构师的立体化思维?

2023-06-05 04:06:00 498人浏览 安东尼
摘要

从程序员往架构师转型的路上,蔡学镛老师总结的“四维架构设计方法论”对我颇有帮助,让我对架构设计有了更立体化、系统化的认知,现将学习心得分享出来供需要的小伙伴参考。这套方法论通过空间(X、Y、Z)三个维度及时间T维度将问题域解构成可以轻松应对

程序员架构师转型的路上,蔡学镛老师总结的“四维架构设计方法论”对我颇有帮助,让我对架构设计有了更立体化、系统化的认知,现将学习心得分享出来供需要的小伙伴参考。

这套方法论通过空间(X、Y、Z)三个维度及时间T维度将问题域解构成可以轻松应对的小方块,分而治之。同时,空间(X、Y、Z)三个维度联动,专门为单个维度解决不了的问题提供解决方案。时间 T 维度将问题分解到一个时间范围内,分步骤按节奏逐一解决。多维度、立体化、分层次、动态演进,这是我对这套方法论特点的总结。接下来,让我们进入这个四维的架构时空一探究竟!

如何建立架构师的立体化思维? 

图1 四维座标系统

前后端维度(X1 … X7

后端维度被分解为交互、业务、领域、资源四大层,其中业务可以细分为应用X2、框架X3,领域可以细分为服务X4、核心X5,资源也可以细分为代理X6、数据X7,共分为七个层次。服务X4可以实现api,如果公开,就是开放接口,调用服务层的接口,通常需要授权。代理X6可以实现SPI,隔离耦合,避免核心X5 依赖特定的外部系统或数据库。每个层次做到高内聚,层与层之间做到低耦合。

如何建立架构师的立体化思维?

图2 X轴分层结构

在系统实现过程中,可以综合考虑现状,X2应用和X3框架可以不分拆,X4服务和X5核心可以不分拆,待后续时机成熟可以再重构分层,这样变更范围仅在内部。

表2 X轴七层架构模型及其定位

分层类型

分层名称

颜色

代号

分层定位

交互

界面层

X1

界面更像是用户的延伸,而非应用的延伸。界面可被视为用户代理。根据用户喜好、语言、平台(手机、电脑、平板等)开发各种用户界面。

业务

应用层

X2

一个应用可以有多个界面,根据市场需求,开发各种应用,并以接口的方式展现。

框架层

X3

将常用的应用流程设计成框架,后续开发同类型应用时,只要通过参数或者 DSL,就可以轻易订制应用,减少开发成本。框架也可以用接口的方式开放让外部调用。

领域

服务层

绿

X4

服务层针对领域对象进行操作,并提供弹性的调用接口。服务层接口通常数目不多,但每个接口通常参数相当多。服务层没有状态,也不做缓存

核心层

X5

核心层反映领域模型,核心层的接口基本就是对此领域模型进行操作。建立领域模型,一方面帮助接口设计,另外一方面帮助数据存储设计,梳理出弹性的存储方式。

资源

代理层

X6

具备下列作用:数据代理,代表外部系统或数据库;缓存,为了效率或提高可用性(当外部系统掉线);数据模块,支持读写分离;转接或转发,转接到外部系统,转发到日志系统;数据备份系统(通过事件钩子);热备系统接入。

数据层

X7

数据是公司最重要的资产。根据数据的特性,数据库可以是:关系式数据库;列数据库;Associative DB;Key-Value;文件数据库;日志。

 

业务维度(Y1 ... Yn

从业务维度进行划分,按照业务类型对系统进行分类。业务系统的划分更多依赖业务领域的知识,这个维度设计最常用的方法论就是领域驱动设计DDD

当Y轴的一个业务系统需要调用Y轴的另外一个业务系统时,兼顾效率和耦合,这套架构设计方法论给出了具体的架构原则:

  1. 当被调用的是公共系统时,那么调用将被视为内部调用,即服务可以直接调用服务。考虑到公共系统比较稳定,不会经常改变,直接调用可以减少调用环节,保障效率。
  2. 当被调用的是非公共系统时,那么调用将会被视为外部调用,即通过代理层去调用被调用系统的对外服务接口。这相当于把两个系统后台进行了串联,降低了系统之间的耦合,后续被调用系统发生变更,对调用系统的影响也可以藉由其代理层进行了隔离。

如何建立架构师的立体化思维?

图3 Y轴不同业务系统之间调用关系 


系统维度(Z1...Zn

该维度主要关注软件、容器、运行时、操作系统虚拟机、到硬件等这些与业务无关系统的架构。Z轴的系统可以分别用于前端优化、应用优化、平台优化、资源优化等层面。

如何建立架构师的立体化思维?

图4 Z轴分层结构


时间维度(T1 … Tn

对于一个新产品来说,架构不是一次成型的,从初始到成熟要经过一个不断演进的过程。对于一个已有产品来说,架构的优化也是要结合实际情况分步骤实施。除了技术上的考虑之外,我们还需要考虑市场及投资等方面的情况。

通常,在研发的初期,产品本身的定位还不太清晰,需要快速地迭代投放市场获取先发优势,以及验证想法,不断地明确产品的定位。这个阶段产品需求变动非常频繁,许多架构的驱动因素尚未明确,如果过于关注架构,那产品推向市场就会遥遥无期。随着产品定位的逐步清晰,架构的驱动因素及约束条件都逐渐浮出水面,这个时候架构设计的重要性就显现出来了。另外,我们还需要根据投资预算来调整架构设计。如果投入比较充裕,那我们就可以投入更多的人力来提前将架构驱动因素研究清楚,甚至可以针对不确定的约束提供多套备选方案。

先分享到这里,后续我还会继续分享各个维度的架构设计心得,请感兴趣的小伙伴记得关注哦!原创不易,如果你觉得有价值,麻烦动动手指点个 「 」,老兵哥会更有动力。另外,我还会持续分享职业规划、应聘面试、技能提升、影响力打造等经验, 关注 「  IT老兵哥 」, 赋能程序人生

--结束END--

本文标题: 如何建立架构师的立体化思维?

本文链接: https://lsjlt.com/news/241123.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何建立架构师的立体化思维?
    从程序员往架构师转型的路上,蔡学镛老师总结的“四维架构设计方法论”对我颇有帮助,让我对架构设计有了更立体化、系统化的认知,现将学习心得分享出来供需要的小伙伴参考。这套方法论通过空间(X、Y、Z)三个维度及时间T维度将问题域解构成可以轻松应对...
    99+
    2023-06-05
  • 立体运维架构与定位
    写在前面随着越来越多企业应用上云,云上应用的规模与复杂度日趋增长,对云上应用的运维,也提出了新的挑战。华为云AOM服务面向大规模企业应用的运维,在实践中演进并构建了一套完整的面向云上应用的立体化运维系统。一、常见云上应用的架构云上应用早期较...
    99+
    2023-06-04
  • 如何建立SEM数据分析思维
    本篇内容主要讲解“如何建立SEM数据分析思维”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何建立SEM数据分析思维”吧!  发现问题  在账户推广中遇到的问题非常多、多到无法很多人都无法想象。...
    99+
    2023-06-10
  • 优秀架构师必须掌握的架构思维
    一、抽象思维如果要问软件研发/系统架构中最重要的能力是什么,我会毫不犹豫回答是抽象能力。抽象(abstraction)这个词大家经常听到,但是真正理解和能讲清楚什么是抽象的人少之又少。抽象其实是这样定义的:对某种事物进行简化表示或描述的过程...
    99+
    2023-06-02
  • 如何建立维护ADO.NET数据库
    这篇文章主要介绍“如何建立维护ADO.NET数据库”,在日常操作中,相信很多人在如何建立维护ADO.NET数据库问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何建立维护ADO.NET数据库”的疑惑有所帮助!...
    99+
    2023-06-17
  • 如何实现建立在Tablestore的Wifi设备监管系统架构
    这篇文章主要介绍了如何实现建立在Tablestore的Wifi设备监管系统架构,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Wifi设备监管...
    99+
    2024-04-02
  • 如何建立与优化一个网
    这期内容当中小编将会给大家带来有关如何建立与优化一个网,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。打开一看,确实没有什么特色或者新意,出于关心,我问他为什么要选择做导航站,他的回答竟然是做导航站简单,不...
    99+
    2023-06-12
  • 如何使用css3创建动态3d立方体
    这篇文章将为大家详细讲解有关如何使用css3创建动态3d立方体,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 代码如下: <div id="e...
    99+
    2024-04-02
  • 云服务器是如何建立的
    云服务器的建立一般包括以下几个步骤:1. 选择云服务提供商:根据需求选择合适的云服务提供商。2. 注册账号:在选择的云服务提供商的官...
    99+
    2023-08-15
    云服务器
  • 如何建立隐藏磁盘的bat
    这篇文章给大家分享的是有关如何建立隐藏磁盘的bat的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:@ECHO OFF MD E:\RECYCLER\UDrives.{645F...
    99+
    2023-06-08
  • 如何利用织梦CMS建立个性化网站
    建立个性化网站是许多人梦寐以求的事情,而织梦CMS作为一款功能强大且易于操作的网站建设工具,为实现这一目标提供了很好的平台。本文将详细介绍如何利用织梦CMS建立个性化网站,并提供具体的...
    99+
    2024-03-13
    建立 个性化网站 织梦cms
  • 如何使用 Spring 框架在 Go 项目中建立索引?
    Spring框架是一个非常流行的Java框架,它提供了很多强大的工具和功能,可以帮助开发者快速构建高效的Java应用程序。但是,在一些Go项目中,我们也想使用Spring框架来建立索引,这该怎么做呢?下面,我将介绍如何使用Spring框架在...
    99+
    2023-10-19
    索引 教程 spring
  • HTTP和HTTPS连接是如何建立的
    这篇文章主要讲解了“HTTP和HTTPS连接是如何建立的”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTTP和HTTPS连接是如何建立的”吧!HTTP和HTTPS连接是如何建立的1、建立连...
    99+
    2023-06-17
  • 如何建立自己的云服务器
    建立自己的云服务器可以帮助你快速构建和部署应用程序,以及实现资源的弹性伸缩和高可用性。以下是一些步骤可以帮助你建立自己的云服务器: 确定你的需求:首先你需要明确你的应用程序需要哪些云服务器资源和功能,例如数据库、虚拟机、容器、存储、网络...
    99+
    2023-10-26
    自己的 服务器
  • Fedora中yum如何配置建立新文件优化加速
    这篇文章将为大家详细讲解有关Fedora中yum如何配置建立新文件优化加速,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。想知道到Fedora yum配置系统的真相么,想知道Fedora yum配置系统中藏...
    99+
    2023-06-16
  • 如何在Gitee上建立自己的网站
    Gitee是中国最大的开源技术社区,每个人都可以在Gitee上创建自己的代码仓库、开源项目和个人网站。在本文中,我们将详细介绍如何利用Gitee创建自己的个人网站。一、注册Gitee账号首先,你需要在Gitee上注册一个账号。如果你已经拥有...
    99+
    2023-10-22
  • sql中如何查看刚刚建立的表
    在SQL中,可以使用以下语句来查看刚刚建立的表: SHOW TABLES; 这条语句会列出当前数据库中所有的表,包括刚刚建立的表。...
    99+
    2024-05-13
    sql
  • 网站建立网页设计的时候要如何进行优化
    小编给大家分享一下网站建立网页设计的时候要如何进行优化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  第一、不可以过去的使用外链工具千万不要太过去迷恋那些外链工...
    99+
    2023-06-10
  • 如何运用结构化思维进行故障处理
    近期收到朋友赠送的一本书—《深入浅出MySQL》。闲暇之余,阅读了部分章节,书中针对故障处理一节,给我印象颇深。书中提炼出的一些方法论,正是我之前在团队中推广的方法。其目的是为了将故障应急操作标准化,进而提升处理效率。推而广之,这其实是一种...
    99+
    2023-06-04
  • 如何搭建数据库自动化运维体系
    需求背景: 随着业务的增长、对运维效率和质量的要求不断提高,对自动化运维体系的需求也不断增强。 目前笔者服务的很多中大型企业客户,运维其实还停留在“刀耕火种”的原始状态。 这里所说的“刀”和“火”就是运维人员的远程客户端,例如 xshell...
    99+
    2014-05-21
    如何搭建数据库自动化运维体系 数据库入门 数据库基础教程 数据库 mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作