再谈应用架构

标签: IT咨询 | 发表时间:2013-09-08 08:57 | 作者:人月神话
出处:http://blog.sina.com.cn/cmmi
前面谈了业务架构和数据架构,接着谈下应用架构,对于应用架构的描述将参考togaf信息系统架构部分的内容,但是不完全相同,总体思路是围绕在IT架构层面来谈应用架构包括的内容。为了区分高层架构(包括多个应用的总体架构)和底层架构(针对单个业务系统的架构),前者采用企业架构中的应用架构这个词,后者采用系统架构这个词以进行区分。

首先说下应用架构中静态的部分,包括了应用功能架构和应用数据架构两个部分的内容,应用功能架构由业务架构中的业务组件架构转化过来,应用数据架构由业务架构中的业务对象数据架构或全局ER模型转化过来。中间会体现出映射关系。

对于应用功能架构可以比较明细的看到和业务架构之间的映射关系,但是要强调的是高层应用架构图中已经会明确的体现出了具体的业务系统,因此业务架构中的业务域业务组件和应用系统间往往不是一对一的关系,其中既存在合并也存在拆分,比如对于采购可能是独立的业务域或业务组件,但是在构建应用系统的时候可能是构建一个大的供应链系统;而财务是一个大的业务域,但是又可能拆分为报账,预算,成本管理等多个业务系统。这个一方面是结合企业实际情况,一方面仍然是考虑系统分解的粒度和耦合度。第二点应用架构和业务架构的不同体现在应用架构重点已经是在实现层面,需要实现业务架构朝IT架构层面的抽象和转化,最明细的就是底层可能会抽象相应的基础平台和技术平台,而上层或抽象相应的门户等,这些在业务架构中是绝对不会关心的内容。

业务架构阶段的数据架构重点是业务和领域对象,数据域的划分,主数据的分析和识别,重点是数据的概念模型。而到了应用架构则需要将业务对象转换为数据对象或具体的数据库表对象,应用架构的重点则已经是逻辑模型和物理模型。同时在应用架构阶段已经在分析数据对象和应用系统和应用功能之间的CRUD矩阵,以明确功能边界划分的合理性,以做到更好的系统划分和高内聚。

其次,在业务架构中有流程建模的动态建模部分,在业务架构中往往会从高端流程-》流程分解-》一直在具体的业务用例建模。而到了应用架构中要注意仍然存在动态建模部分,即业务用例-》系统用例-》用例实现,这个可以理解为应用架构中更加细化的动态建模,这个动态建模完全是实现层面的事情了,和本身应用系统的技术架构和分层也密切相关。但是这个过程却相当重要,特别是核心业务用例的用例实现,在这个动态建模过程中会分析和识别出一些细粒度的服务交互。在单个业务系统的架构设计中往往应用到类似序列图的方式来进行用例实现的交互,重心是在分层模型上面,而在应用架构中往往也用到序列图的交互,重心不是在分层上而是在不同的技术组件上的交互,这一点需要明确。

再次,应用架构设计中一个重要内容就是集成架构,集成包括了数据集成和业务集成两种,需要区别对待。数据集成架构重点是参考BI架构方式,而业务集成重点则是SOA参考架构模式进行。集成架构的分析可以在进行了业务系统划分后识别出业务系统之间所有核心的交互点和接口,作为数据集成或SOA服务的输入信息,也可以进一步对业务系统划分是否合理,是否满足松耦合的条件进行修正。集成和共享是两个层面的内容,集成往往数据落地,而共享往往数据不落地只是提供能力,当你在进行集成分析的时候发现了多点集成和交互的时候,往往都需要考虑能力抽取和下沉到平台,进行能力共享。

最后,应用架构中包括技术架构的内容,在这里分为多个方面的内容,首先是涉及到支撑企业内所有应用的技术平台层架构方面的内容;其次是整个应用架构中基于SOA参考架构的服务架构的内容;还有就是针对单个应用的类似java的ssh分层架构的内容,对于基础设施架构暂时先不纳入应用架构中的技术架构来考虑。

前面有两篇文章再谈这个内容可以参考:

应用架构构图: http://blog.sina.com.cn/s/blog_493a84550101ayag.html
基于SOA应用架构: http://blog.sina.com.cn/s/blog_493a845501013flt.html

对于SOA组件化业务架构是对类似ssh分层技术架构的一个加强,而不是互斥的两个东西,再引入soa参考架构会会进一步强调业务组件,服务组件和技术组件,强调服务能力的抽象,强调服务能力的共享,强调了各个组件之间真正意义上的松耦合,强调部分业务是可以通过服务组合和编排来实现的。

在应用架构的构建中我们引入了云平台和云化的思路,即各个应用系统不是简单的烟囱式的结构,而是从底层基础设施层面开始逐层向上考虑哪些是应用系统共享的技术能力,哪些是可以集中化建设和共享的,对于基础设施层则抽象到iaas层能力,对于技术平台层则抽象到paas层能力。由底层集中化建设的iaas+paas平台来支撑上层松散耦合的多个业务系统或应用模块,这是一种应用架构中体现云计算思路的重点。

在这里可以用下面这张图来做个理解,如下:



  青春就应该这样绽放   游戏测试:三国时期谁是你最好的兄弟!!   你不得不信的星座秘密

相关 [应用 架构] 推荐:

应用架构和技术架构

- - 人月神话的BLOG
在这里再谈下应用架构和技术架构的关系和边界问题,这里的说明和标准的TOGAF会有一些区别,仅为个人理解的一些点滴记录. 首先再说下应用架构,应用架构是和业务架构有强烈的映射关系的一个架构,应用架构要说明的是整体企业内部信息化建设和规划应该分为哪些应用系统去建设,应用系统间的集成关系是如何的. 即我们常说的应用架构和应用集成架构.

企业架构-应用架构构图

- - 人月神话的BLOG
在这里要谈的是在传统的企业架构-应用架构的基础上进一步体现SOA和企业私有云平台的思想,而非传统意义上简单的原有企业各个业务系统功能架构的堆砌. 这个思想包括两个方面的内容,一个是集中化和平台化,一个是SOA服务化和业务能力组件化. 对于该构图模式考虑两种,首先第一种是充分考虑平台层独立和平台层能力的体现:.

再谈应用架构

- - 人月神话的BLOG
前面谈了业务架构和数据架构,接着谈下应用架构,对于应用架构的描述将参考togaf信息系统架构部分的内容,但是不完全相同,总体思路是围绕在IT架构层面来谈应用架构包括的内容. 为了区分高层架构(包括多个应用的总体架构)和底层架构(针对单个业务系统的架构),前者采用企业架构中的应用架构这个词,后者采用系统架构这个词以进行区分.

Java 应用一般架构

- - SegmentFault 最新的文章
原文地址: https://blog.coding.net/blog/General-architecture-for-Java-applications. 当我们架设一个系统的时候通常需要考虑到如何与其他系统交互,所以我们首先需要知道各种系统之间是如何交互的,使用何种技术实现. 现在我们常见的不同系统不同语言之间的交互使用WebService,Http请求.

浅析信息系统架构的应用架构与数据架构

- - 企业架构 - ITeye博客
    信息系统架构包括了对于 应用架构和数据架构. 这里不再介绍具体的方法论,而是考虑如何在设计信息系统架构时有效地避免复杂性. 在应用系统层面将通过分层和配置的方式来简化应用系统,从而可以获得简单的架构. 在数据架构层面将通过分层主数据的思想来考虑我们如何来管理主数据. 企业从生产/采购计划开始,到生产/采购管理,以及现场制造的执行.

iOS应用架构谈(一):架构设计的方法论

- - 博客园_知识库
  之前安居客iOS app的第二版架构大部分内容是我做的,期间有总结了一些经验. 在将近一年之后,前同事zzz在微信朋友圈上发了一个问题:假如问你一个iOS or Android app的架构,你会从哪些方面来说呢.   当时看到这个问题正好在乘公车回家的路上,闲来无聊就答了一把. 在zzz在微信朋友圈上追问了几个问题之后,我觉得有必要以文章形式专门来讲一些个人见解.

开源应用程序架构

- WCM - LinuxTOY
建筑师会在训练过程中学习并了解上千年来由不同大师所设计的建筑,而软件工程师却鲜有这样的机会去了解现实中的软件架构是什么样子. 该书列举了以下开源软件架构设计:. 该书依照 Creative Commons Attribution 3.0 Unported 发布,既可以在线阅读,也可以在 Lulu 上购买纸质印刷版本和 PDF 电子书版本(其他格式的电子书版本正在制作中).

莫要轻视应用架构

- - 灰色的灵魂
在管理大规模数据处理工作的时候,发现不少工程师,包括一些老工程师,某种程度上,都对工作有着某种程度上的轻视,常常的口头禅是“这个技术上没有什么难度”,但是我其实不太认同,所谓数据处理,在技术上没有什么难度这种说法. 的确,在这个MapReduce的基础架构已经被Google设计清楚,由Doug Cutting通过Hadoop完善实现了之后,似乎大数据处理变成了一份体力工作.

Mule应用架构:1、关于mule

- - CSDN博客推荐文章
本文介绍Mule结构上的特性,你可以使用它们构建你的Mule应用. l  关于Mule执行单元. Mule ESB提供综合的应用集成,既可服务于小型商业公司,也可用于大型企业. 企业服务总线(ESB)作为Mule的核心功能,即可利于组织内部的内网连接,也利于基于Web的API和其他云资源的外部连接.

知识共享图书《开源应用程序架构》

- Ryan - Solidot
《The Architecture of Open Source Applications》是一本新推出的采用“知识共享署名3.0 Unported”许可证的程序设计图书,每一章节讲述了一种开源程序的设计,如Audacity、CMake、Eclipse、Hadoop分布式文件系统、LLVM、Mercurial、NoSQL生态系统、Python Packaging,等等.