浅谈企业应用架构(一)

作者:Anders小明
2009年5月5日
 

一、什么是架构

在牛津高阶词典(第7版)中,架构(architecture)一词的解释是:the design an structure of a computer system,而架构师(architect)一词的解释是:a person who is responsible for planning or creating an idea, an event or a situation。

针对于企业应用,依据不同的关注点,架构可以分为如下几类:

业务架构(Business Architecture):关注于业务及其流程;

应用架构(Application Architecture):关注于应用系统设计;

基础架构(Infrastructure Architecture):关注于基础技术;

数据架构(Data Architecture):关注于数据存储及其规划;

这里所说的企业应用架构,即属于应用架构,包括如下几个部分:

1.目标和愿景。即应用系统所面临的问题域。

2.评价指标。从哪些纬度和指标来评价和度量解决方案。

3.原则和方法论。为解决这些问题,所采用的原则及其方法论。

4.技术架构。架构的技术层面,给出相应的设计以及结构,描述应用系统。

5.组织因素。架构的组织层面,组织的各个部分如何参与。

 

二、架构的目标和愿景

1. 架构的问题来源

1.     外部,客户要求包括了业务和技术上。

2.     内部,组织管理、项目管理和技术发展上。

特别的,架构需要解决的非业务问题包括如下:

A.系统目标:系统性能,稳定性等。

B.项目目标:开发成本,项目质量等

C.项目过程:需求的不确定性和开发过程的团队协作性,即所谓的开发管理。

2. 架构的核心问题

问题可分解为两种类型,业务上和技术上。

1. 业务上。问题域分解为,逻辑的纵向抽象层次,以及逻辑的横向模块分解和集成。

2. 技术上。问题域分解为,纵向的技术主题,以及横向的技术职责的分解和集成。

A.领域化

传统的架构模式是三层或者四层模式,虽然从技术上有效的横向分解系统结构,但对业务模型如何建立,如何进行层次间传递,模型间关联关系,以及与服务逻辑耦合等问题没有给出进一步的细化,也带来了很多问题。

此外,在传统设计方法下,分析模型和设计模型的转换也是一个大的问题。

B.组件化

实施组件化或者说模块化,其需求分为两个层面。

1.内部管理,可以帮助开发过程中进行业务切分,帮助控制进度,降低风险,以及财务分析;对于大型复杂的项目,也有利于知识的传递和积累。

2.销售需要,All in one的系统因不符合发展趋势而不利于销售;组件化有助于产品销售,可以针对客户,将若干组件打包销售,同时减少集成的风险。

C.产品化

C.1 定制化问题

定制化问题的由来:1.面向行业的应用通常没有标准,或者完备的标准;2.通常产品的开发是针对于通用或者公共需求,不针对于特定客户;3.而一个确定的客户,其自身的业务差异和管理差异导致需求的差异性。

这种现象尤其在缺乏标准的行业应用中,以及系统的产品化过程中。

传统的简单的解决方式是为每个客户单独维护一个系统分支,在此情况下提供维护和升级,则维护成本巨大;因此如何解决领域的定制化就成为一个重大问题。   

C.2 升级问题

领域需求每次进一步的挖掘和实现,都意味着领域的升级。但升级面临的诸多问题:数据迁移,旧版本的兼容问题,依赖关联等等,在组件化和定制化情况下,还面临定制化兼容和冲突检测。

C.3 国际化问题

1.文本消息国际化

国际化消息没有直接呈现,而是中间存储后呈现;

2.布局国际化

阿拉伯人是从右到左;

3.业务时间,跨时区;

4.计量单位,多币种;

D.平台化

应用系统可以分为两个内容:应用程序和基础设施。应用程序处理业务问题,而基础设施处理技术问题。

来自客户的要求是包含业务和技术两个方面。其中技术上包括两种“定型和定性”,其所需的知识和技能是不同于业务上的;

此外,内部管理也提出相应的要求。由于技术的发展和业务发展之间的不同步,对于一个产品而言,同时存在技术升级和业务升级两个需求。而同时升级存在较大的成本和风险。

同时对于一个产品来说,技术方面需要较强的适应性,能够低成本上的适应客户的特别要求。

因此有效解藕技术和业务两个部分成为必然。

3. 架构的应用问题

A.事务管理

数据一致性问题出现的原因通常是开发过程中,由于错误的并发和事务控制导致的;而在业务过程中也存在错误的业务操作情况。

B.并发处理

不同的业务应用存在不同的并发场景(并发度以及存在的业务依赖),因此业务上需要明确原则和方案;而不同平台所支持的并发方式和能力也不相同,则采用一定框架支持有助于简化问题。

C.集成能力

业务应用所面临的集成问题不同,包括不同的集成环境:外部系统,内部系统,遗留系统等;不同的集成模式:基于文件,基于数据库表,基于消息等,导致所需的集成方法及其能力也不同。

4. 架构的设计问题

分析设计和开发实现存在着一定的差异性:分析设计属于知识级,而开发实现属于操作级的。

分析设计是需求和实现的中间桥梁,因而设计必须解决系统边界的合法性,内部逻辑解藕的合理性和实现的可达性(设计的类方法为实现的30%-70%)。而开发实现需不断重构代码,采用约定和框架能力等技术手段解决开发的实际问题,解决程序级别的健壮性,可读性,可维护性以及可测试性。

传统的方式,分析设计存在于文档中,而开发实现存在于代码中。两者的割裂导致沟通的困难,也导致了开发工程中具大的风险——分析设计和最终开发实现的不一致性。

三、架构的评价指标

1. 财务角度

在传统的财务核算机制中,系统或者产品的开发通常属于成本中心,对于IT企业来说,电脑设备,办公室等属于沉没成本,而IT人员的工资属于可变成本,是成本的核心部分,为了控制成本,就需要减少项目的开发时间。

因此架构一个重要的关注点在于控制开发成本和维护成本,通常讲维护成本是开发成本的3倍。降低开发成本核心,在于提高效率、提高适应需求变化的能力。

2. 技术角度

技术角度评估架构很难说一个架构行或者不行。技术角度需要给出的最大指标是风险性。而风险性和各个指标因数有很大相关,但还需要结合相应实际情况判断。例如:如果决定了不可能换数据库,那么即便强绑定oracle也没有特别的风险。

以下指标参考了架构的质量特性,但进行了裁减。

A.内部指标

1.侵入性。或者说是可迁移性,即系统与外部资源的关联关系,以及系统内部的关联关系。例如,如果架构决定使用pl/sql,那么就意味着架构和Oracle数据库是强绑定。

2.重复性。虽然我们都知道关于重复的两个原则(1.不要重复,2.不要自己重复),但是有时重复看上去无法避免,那么就是判断这个重复性带来的问题有多大。

3.扩展性。即架构提供何种条件下的何种扩展和变化能力,及其成本。

4.平稳性。在业务或技术扩展时的,架构所呈现的发展态性。

5.抽象性。即可视性,并包括了概念完整性。系统是否完整以及层次化的反映应用问题,能否明确的呈现和表达。

6.修改性。包括了可重构性,代码级别的侵入性以及单元测试能力。

7.诊断性。系统提供的实时观测能力。

B.外部指标

1.性能。

2.可靠度。

3.可用度。

3. 组织角度

组织角度涉及两个方面:人和流程。

人的方面,架构需要组织的角色参与(业务专家,技术专家)及其参与度,以及涉及到人力资源匹配情况。若架构所需的技术如果太新或者太窄,将面临人力资源的困境。

流程上,要看架构是否与流程匹配。架构原则指导下不同角色在不同阶段关注点不同,而工程实践中,不同流程阶段需要提交的产出物也不同,此时就可能存在二者不匹配的情况。

四、架构的原则和方法论

1. 原则

总原则是:关注点隔离。

在解决各类问题都应以此原则为指导。但针对于不同层面该原则的变化不同。针对于高层设计(概要设计):合理划分逻辑边界;针对于详细设计层面是:任何改动最多涉及一个接口和一个实现类(简单类职责的变体)。

 

2. 方法论

方法论有两个:自上而下,由内而外。

其对应的完整理论体系为:面向对象/面向方面,领域驱动设计以及测试驱动设计。

 

3. 发展与演化

A.总结归纳型

这个方式最常见。程序员所需要面对的问题是:在有限的时间、资源,面对有限的需求,在容错范围内的做出一定的产品。在这种有限条件下反复训练出来的决策机制,使得程序员对归纳法有着特殊的偏好。它对于程序员开发的大部分工作都是行之有效的。

B. 技术思辨型

通过更广泛的分析,获取深刻的理解和普遍的关联,以创造新颖的技术。所谓大牛们正是如此。例如GC算法,例如AOP技术。

Proxmox VE(PVE)与UPS联动配置:实现智能断电保护方案 本文详细介绍了为Proxmox VE (PVE)服务器配置UPS智能断电保护的完整方案。通过安装和配置apcupsd软件,实现PVE与UPS的联动,可在市电中断、电池电量不足时自动触发安全关机流程,有效保护虚拟机数据与服务连续性。文章涵盖了硬件选择、软件配置、策略设定及实战测试指南,并扩展了网络共享UPS的高级应用。 阅读详情

相关推荐

瑞萨芯片串口配置,基于RL78芯片的串口使用配置

在这里隆重给大家介绍瑞萨编辑器CS+ for CA 的自动生成代码功能,只需要配置几个参数,就可以得到你想要的串口配置了,我现在已经忘记怎么手动配置寄存器了,哈哈。选择设置,此时将端口设置成功接下来设置时钟,根据自己的芯片所需设置相应的时钟,自己芯片是什么时钟查看数据手册和原理图可以找到。瑞萨芯片的串口配置其实和ST芯片的串口配置差不多,只是ST芯片的中文数据手册比较多,就更好配置了,找到所需要的串口配置IO口,此时将UART0 配置为引脚P61和P62,瑞萨芯片的串口配置竟然要配置串口。

qq_45315904的博客 4303

【软件开发与系统知识】应用架构、业务架构、技术架构和业务流程图详解「建议收藏」

应用架构(ApplicationArchitecture)是描述了IT系统功能和技术实现的内容。应用架构分为以下两个不同的层次:企业级的应用架构和单个系统的应用架构。企业级的应用架构:企业层面的应用架构起到了统一规划、承上启下的作用,向上承接了企业战略发展方向和业务模式,向下规划和指导企业各个IT系统的定位和功能。单个系统的应用架构:在开发或设计单一IT系统时,设计系统的主要模块和功能点。

在红尘中争渡 2万+

深度学习-算法工程师岗位面试常见问题及解答

一、相关的问题 深度学习优化学习方法(一阶、二阶) 一阶方法:随机梯度下降(SGD)、动量(Momentum)、牛顿动量法(Nesterov动量)、AdaGrad(自适应梯度)、RMSProp(均方差传播)、Adam、Nadam。 二阶方法:牛顿法、拟牛顿法、共轭梯度法(CG)、BFGS、L-BFGS。 自适应优化算法有哪些?(Adagrad(累积梯度平方)、RMSProp(累积梯度平方的滑动平均)、Adam(带动量的RMSProp,即同时使用梯度的一、二阶矩))。 梯度下降陷入局部最优有什么解决

nobles007820的博客 2924

一文搞懂业务架构、应用架构、技术架构、数据架构

一文搞懂业务架构、应用架构、技术架构、数据架构

ttod的博客 2834

ros2 gazebo仿真阿克曼小车搭载livox mid360雷达流程

流程简介:仿真环境的搭建需要安装ROS2和Gazebo。使用的是Humble版本,需要确认是否已经正确安装。然后是阿克曼小车模型的URDF,需要包括底盘、转向机构、驱动轮等,需要参考现有的阿克曼模型,比如ClearPath的Husky,但需要调整参数。Livox Mid360雷达在Gazebo中的仿真可能没有现成的插件,需要使用通用3D LiDAR插件来模拟。IMU的仿真相对简单,但需要注意噪声模型,以接近真实数据。

weixin_43802726的博客 3211

智能汽车域控制器FOTA升级方案探讨

上文提到的Entry属性,包括Active 属性, Bootable 属性, Successful 属性, Retrycnt 属性 ,Active 属性用于标志槽的优先级,bootloader优先选择Active 属性=1的槽启动,Bootable 属性标志槽可否可启动,Successful 属性标志槽是否成功启动过,Retrycnt 属性标志槽可尝试启动的次数。芯片启动后,首先进入Bootloader阶段,此阶段将读取存储系统的分区属性,根据属性值进行逻辑判断,并确定进入哪个分区,详见流程图。

huibian1234的博客 1570

一文搞懂各种架构(业务架构、应用架构、数据架构...

01 什么是架构和架构本质02 架构分层和分类03 架构的级别04应用架构的演进05衡量架构的合理性06 常见架构误区07 架构知识体系01 什么是架构和架构本质在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟...

weixin_45727359的博客 3万+

VCS的增量和分离编译

vcs的增量和分离编译

yunduor909的博客 3302

应用架构、业务架构、技术架构和业务流程图详解

很多人都了解这样的事实,那就是,企业中的很多升职后的中高层领导,在就位后的很长时间内,不能进入应有的管理角色中,这绝对不只是个人能力的差异问题,而主要是因为我们的中高层领导总是习惯地认为:研究执行层的作业方式和规律才是他们的主要职责,而没有注意到自己的作业内容和作业方式在整个作业链条中的重要作用,其结果,自然是管理层和决策层领导们的业绩,只好取决于执行层作业人员的努力程度,这种习惯也导致我们的中高层领导们不会去研究影响自己判断能力和决策能力的技术瓶颈是什么。这便是后面的章节中将要重点介绍的核心内容。

chenllxx的专栏 5129

网工实验笔记:SNMP的配置

简单网络管理协议SNMP(Simple Network Management Protocol)是广泛应用于TCP/IP网络的网络管理标准协议。SNMP提供了一种通过运行网络管理软件的中心计算机(即网络管理工作站)来管理设备的方法。

2301_76170756的博客 2116

【100%通过率】华为OD机试真题 Java&Go 实现【微服务的集成测试】【2023 Q1 | 100分】

现在有n个容器服务,服务的启动可能有一定的依赖性(有些服务启动没有依赖),其次服务自身启动加载会消耗些时间。给你一个nxn 的二维矩阵 useTime,其中 useTime=10 表示服务i自身启动加载需要消耗10s,useTimeli[j]=1 表示服务i 启动依赖服务i 启动完成,useTimei[k]=0,表示服务i 启动不依赖服务 k其实 0

MISAYAONE的博客 1万+

浅谈企业应用架构

作者:Anders小明2009年5月5日 一、什么是架构     在牛津高阶词典(第7版)中,架构(architecture)一词的解释是:the design an structure of a computer system,而架构师(architect)一词的解释是:a person who is responsible for planning or creating an i

wangyongjun_cn的专栏 946

Qt代码-军用仿真系统基础框架

ui->mapClickLabel->setText(QString("地图点击:(%.1f, %.1f)米").arg(worldPos.x()).arg(worldPos.y()));emit simulationEvent(QString("添加实体: %1 (ID: %2)").arg(attr.name).arg(entity.id()));// 像素坐标→世界坐标(米)

寒寒豆豆软件公司的博客 169

浅谈企业应用架构(二)

五、架构的技术层面 (一)基础手段 提高开发效率和品质的基本手段是分解——即充分的分离系统中不同的关注点,好处不用说了,可以并发的工作,每个人面对的问题都简单而容易操作。而与分解对应的集成,只有提供了好的集成能力,分解才成为现实,而只有分解了,才能清晰的提供业务更多适应性。 分解和集成的手段分为编程语言和技术框架两个层面。所谓语言就是强框架,而框架就是弱语言。 A. 开发语言 现代面向对...

中源 196

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 浅谈企业应用架构(一)
下一篇: 浅谈企业应用架构(二)
林仪明
博客等级 码龄25年 313粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值