浅谈企业应用架构(一)

浅谈交易链路中的一些设计原则&模式 本人之前也对设计原则、模式等进行过学习,但是主要是走心,谈了一下自己的感受。要想获得内心的宁静,感觉还是要参考书中的逻辑,和日常工作中的一些理解进行连接。于是乎,基于这些原则和部分模式简单谈一下。 阅读详情

作者: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技术。

告别切换烦恼!用Parallels Desktop的Host-Only网卡,在macOS上直接访问虚拟机里的公司内网 本文详细介绍了如何在macOS上使用Parallels Desktop的Host-Only网卡直接访问虚拟机内的公司内网,告别频繁切换操作系统的烦恼。通过配置Host-Only网络模式,实现主机与虚拟机的安全高效通信,特别适合需要频繁访问内网资源的IT从业者。文章包含分步指南、自动化脚本和常见问题解决方案,帮助用户优化工作流程。 阅读详情

相关推荐

如何安装PyFluent

PyFluent 是PyAnsys生态系统的一部分, 允许您在所选的 Python 环境中结合使用 Fluent 与其他 PyAnsys 库和外部 Python 库一起使用。PyFluent 实现了客户端-服务器体系结构。它使用谷歌遥控器 过程调用或 gRPC 接口,用于启动或连接正在运行的 Fluent 进程作为服务器。但是,您只需要与 Python 交互接口。可以使用 PyFluent 以编程方式创建、交互和控制 Fluent 会话,用于创建您自己的自定义工作区。

B_etter_Man的博客 2926

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

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

在红尘中争渡 2万+

如何更好的理解PFC(功率因数校正)

此电路虽然简单,可以在前期设计的无PFC功能的设备上,简单的增加一个合适的电感(适当的选取L和C的值),从而达到具有PFC的作用,但是这种简单的、低成本的无源PFC输出纹波较大,滤波电容两端的直流电压也较低,电流畸变的校正及功率因数补偿的能力都很差,而且L的绕制及铁芯的质量控制不好,会对图像及伴音产生严重的干扰,只能是对于前期无PFC设备使之能进入市场的临时措施。)在t4~t5期间尽管二极管左边电压在逐步上升,但是由于二极管右边的Uc放电缓慢右边的电压Uc仍旧大于左边,二极管仍旧反偏截止。

U_YAO的博客 949

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

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

ttod的博客 2834

【高清照片】深圳光博会看PCIe Over Fibre 实现方案

本文分析了PCIe over Fibre技术及其在数据中心的应用前景。该技术通过光纤延伸PCIe总线,解决了传统铜缆距离限制问题,支持跨机架资源池化。目前主要有两种实现方式:CDFP混合光缆方案和Retimer转接卡方案,各有优缺点。文章还探讨了CDFP接口的现状、低速信号传输解决方案,以及PCIe速率与光通信发展的对应关系。最后对比了PCIe光缆与以太网光缆的关键差异,指出PCIe光互连在协议透明度和边带信号处理上的特殊要求。随着标准推进,PCIe over Fibre将成为数据中心扩展高带宽、低时延互连

Saniffer的博客 1387

3D点云目标检测Complex-YOLO(训练篇)(一)———KITTI数据集预处理与制作

KITTI dataset Download dataset KITTI 3D Object Detection Evaluation 2017 link 下载四个部分,共41.4GB 解压后为四部分内容(相机校准矩阵calib、RGB图像image_2、标签label_2、点云数据velodyne) 对应的testing和training数据。其中,training数据为7481张(图片和点云对应的场景),testing数据 7518张(无label_2数据)。 Data Preprocess

“知识最大的敌人不是无知,而是错觉” 7152

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

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

weixin_45727359的博客 3万+

Miniforge3部署教程,完美替代Anaconda3

大背景不介绍了,哎!直接上教程!

zzy_ucas的博客 1万+

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

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

chenllxx的专栏 5129

addr2line解析不出来行号的解决方式(汇编解析高阶版)

摘要:本文针对AEC crash问题中addr2line无法解析行号的情况,通过llvm-addr2line和反汇编分析,定位到CamX::AECBEStats17::AdjustROIParams函数中的乘法溢出问题。关键发现包括: 常规addr2line只能解析到函数名但无具体行号 llvm-addr2line解析出多个可能溢出点(行196/204/211/218/270/271) 反汇编显示6个条件分支跳转到溢出处理函数 源码分析确认这些位置均存在乘法运算 最终通过汇编级调试工具成功定位UBsan报告

168

使用ArcGIS Pro进行土地利用分类的机器学习与深度学习

传统的土地利用分类方法通常依赖于手动解译和规则定义,但随着机器学习和深度学习的发展,我们现在可以利用这些技术来自动化和提高分类的精度。ArcGIS Pro是一种功能强大的GIS软件,它提供了丰富的工具和功能,可以支持土地利用分类的机器学习和深度学习。我们将首先讨论数据准备和预处理的步骤,然后介绍常用的机器学习和深度学习方法,并提供相应的源代码示例。这可以通过人工标注或半自动的方式完成。数据裁剪:根据研究区域的范围,裁剪遥感影像数据,以减少计算和存储的负担,并确保只包含感兴趣的土地利用区域。

code_program481的博客 2039

浅谈企业应用架构

作者: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

甲基化生物信息学分析及批次效应校正全流程

本文系统阐述了DNA甲基化数据分析中的批次效应问题及解决方案。甲基化数据(β值和M值)对实验批次差异高度敏感,可能导致假阳性结果。文章详细介绍了批次效应检测方法(PCA可视化、BEclear定量评分)和校正流程,包括数据预处理、参数化(ComBat-met)与非参数化(BEclear)校正方法,并提供了完整的R代码实现。重点解决了β值有界分布与统计模型假设冲突的问题,为甲基化研究的可靠性提供技术保障。

huanghm88的专栏 109

浅谈企业应用架构(二)

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

中源 196

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值