`
yimlin
  • 浏览: 138909 次
  • 性别: Icon_minigender_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 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技术。

分享到:
评论
6 楼 凤舞凰扬 2009-10-21  
   楼上初步总结了一些,我本来有想法打算写一个架构师之路系列的文章,总是难得动笔。
   今天太晚了,改天我写一些comment,愿和楼主做些交流。
5 楼 lgch123 2009-10-21  
做伟大的事业,不是说说就能起来的。
4 楼 hanyou 2009-10-21  
写的非常好,如果你是原版,那么你肯定从事了多年的开发,有丰富的经验
3 楼 wangxin0072000 2009-05-06  
不经意间,以为翻开了上学时的课本。必须承认,我没看完
2 楼 liujunsong 2009-05-06  
看不懂,看不懂
1 楼 snipercc 2009-05-06  
潜力贴。可惜我没有这么高的层次,学习了

相关推荐

    浅谈企业应用架构

    针对于企业应用,依据不同的关注点,架构可以分为如下几类:业务架构(BusinessArchitecture):关注于业务及其流程;应用架构(ApplicationArchitecture):关注于应用系统设计;基础架构(InfrastructureArchitec

    浅谈SoapWeb Service架构及其应用

    ### 浅谈Soap Web Service架构及其应用 #### 一、背景与发展趋势 随着互联网时代的到来,信息技术的发展使得传统的局域网或单机式信息服务结构已无法满足现代社会的需求。分布式应用技术逐渐成为主流,以适应日益...

    浅谈三层架构c# .NET 实例

    三层架构是一种常见的软件设计模式,尤其在企业级应用开发中广泛应用。它将应用程序分为三个主要层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。本...

    浅谈CRM云技术架构.pdf

    浅谈 CRM 云技术架构.pdf 本文档主要讨论了 CRM 云技术架构的设计和实现,特别是 SaaS CRM 的架构设计。随着公有云的出现,大型企业和中小企业都能够通过公有云效劳来省去自身的数据中心升级改造工作。但是,SaaS ...

    浅析基于云计算架构的移动多态应用.pdf

    总之,基于云计算架构的移动多态应用,为现代企业和服务提供商提供了一种新的业务模式和服务方式。它不仅提高了应用的灵活性和扩展性,还降低了成本,提高了资源的利用效率。随着技术的进一步发展和优化,预计移动...

    iOS企业解决方案浅谈

    ### iOS企业解决方案浅谈 #### 前言 在当今数字化转型的大背景下,企业纷纷寻求通过先进的技术手段提升自身的竞争力。iOS平台凭借其卓越的技术特点和用户体验,成为了众多企业开发移动应用的首选平台之一。本文将...

    浅谈J2EE在企业中的应用

    J2EE(Java 2 Platform, Enterprise Edition)作为一种成熟的企业级应用开发平台,为企业提供了高效、灵活且可扩展的解决方案。 #### 二、J2EE应用背景 在企业级应用开发中,存在大量通用的需求,例如数据库连接、...

    浅谈人力资源发展架构.zip

    在"浅谈人力资源发展架构.ppt"和"浅谈人力资源发展架构.pptx"这两份文件中,可能详细阐述了以上各点,并提供了具体案例和实践策略,以帮助企业更好地理解和实施人力资源发展架构。通过学习这些材料,管理者可以了解...

    浅谈多级分布式库存管理模式在海洋石油企业的应用.pdf

    针对传统库存管理模式的弊端,戴雀桥在其文章《浅谈多级分布式库存管理模式在海洋石油企业的应用》中提出了一个基于协调中心的多级分布式库存管理模式。这种模式强调从供应链整体的角度出发,协调和控制供应链上的...

    [原创]从数据仓库到数据湖——浅谈数据架构演进1

    这种架构使得企业能够对大量历史数据进行深度分析,识别趋势和模式,支持战略决策。 4. 数据仓库架构 数据仓库架构通常包括以下几个层次:源系统、数据接入层、数据存储层、数据处理层和应用层。源系统包含各种业务...

    浅谈钢铁冶金企业能源管理系统的设计与应用.pdf

    浅谈钢铁冶金企业能源管理系统的设计与应用 能源管理系统(EMS)是在钢铁冶金企业中对能源的使用和管理过程中的关键系统。该系统可以对能源的使用进行监控、分析和优化,从而降低钢铁生产过程中的能耗,提高企业的...

    浅谈分布式光伏直流供电在工业企业中的应用.pdf

    分布式光伏直流供电技术是现代光伏利用的一个重要分支,它将光伏技术与直流电结合,在特定的应用场景下,如工业企业、数据中心等直流用电设备集中的场合,具有显著的效率和成本优势。在讨论分布式光伏直流供电在工业...

    浅谈企业计算机应用技术和信息化建设.pdf

    企业计算机应用技术与信息化建设是一个复杂的系统工程,需考虑行业特性、企业规模和建设阶段,以满足不同需求。评估信息化项目时,因系统的复杂性、持续改进过程、长期效应及隐性效益等因素,使得评估方法更为复杂。...

    浅谈复杂业务系统的架构设计

    3. **技术架构**:更注重技术层面的细节,如服务间的交互方式、数据存储机制等,为业务和应用架构提供技术支持。 ### 五、架构设计时需要考虑的因素 在设计架构时,需要综合考虑多方面的需求,以确保最终方案既能...

    浅谈数据挖掘技术在企业客户关系管理的应用.pdf

    客户信息不健全是目前企业应用数据挖掘技术时面临的一个主要问题。虽然银行企业已经开始实行实名制户籍管理制度,但过去的客户数据往往较为匮乏,这导致了对于客户职业、学历等详细信息的采集不足,影响了数据挖掘...

Global site tag (gtag.js) - Google Analytics