我的知识库

知识等于力量

« Ajax 和 REST,第 1 部分学习 REST »

Architecture:Architecture 新手入门

在此页上,Bobby Woolf 探讨了 IT 体系结构的主题,以帮助您了解什么是 IT 体系结构、IT 体系结构的作用及其历史。他概述了 IT 体系结构的发展演变过程,并定义了 IBM 的体系结构原则。他还将提供 developerWorks 上的其他资源,这些资源能够帮助您了解有关体系结构的更多信息。

Bobby 是 IBM Software Services for WebSphere 的一名咨询师,负责帮助开发人员成功使用 WebSphere 产品。他与人合著了 Enterprise Integration PatternsThe Design Patterns Smalltalk Companion。阅读 Bobby 在 developerWorks 上的 Blog(英文),以了解有关 IT 体系结构主题的更多信息。


IT 体系结构简介

什么是 IT 体系结构?体系结构非常重要。如果您问某个系统专家什么最重要,回答肯定是体系结构。系统的体系结构是创建系统的专家对系统的最高层次的共同理解。它是系统的主要部分,只有理解了体系结构,才能很好地理解系统、主要组件以及它们的相互关系和交互方式。体系结构是专业设计人员在设计的最顶层确定的重要内容;随着在设计的各个较低层次确定了各次级层次的内容,体系结构就逐步深入到重要的细节。

只要系统还在使用,设计体系结构的任务便永远不会真正完成。体系结构是构思系统时最初设想的东西。随着对系统需求的认识不断地加深,并随之实现这些需求,不可避免会更改体系结构。

在信息技术(Information Technology,IT)领域,即使对于一个软件密集型的系统,也可能存在许多体系结构。如果将整个系统视为最顶层的关注事项,那么它就是企业体系结构。如果您致力于系统运行所在的硬件和底层软件,那么您关注的是基础设施体系结构。而这对于致力于网络体系结构 的人来说可能仍然是高级的,在网络体系结构中,网络被视为最高层次的关注事项。其他人则专门致力于存储体系结构操作体系结构 涉及到保持生产系统平稳运行,即使是在诸如负载高峰和停机等难以处理的期间。

不存在任何单一的体系结构,而企业体系结构是最高层次的体系结构。企业是具有共同目标和共同利益的组织的集合。企业既可以是公司或管理机构,也可以是与同一组织中的其他分支或部门独立运作的分支或部门。企业甚至可以包括业务合作伙伴、供应商和客户,虽然利益冲突可能会使共同目标难以实现。企业体系结构处理企业的所有关注事项和需要,这是企业成功开发、执行和维护它所需的软件密集的系统所要求的。



回页首



为何体系结构非常重要

体系结构之所以重要,是因为每个系统都离不开它。有时,体系结构是在实现系统的任何部分之前开发的。其他时候,系统实现则在没有正式体系结构定义的情况下进行。大多数情况都介于这两种极端情况之间。然而,即使是在后一种情况下,系统也有体系结构,并且在软件领域,系统体系结构经常是在构建系统之后才变得明显。

这种未经过良好设计的体系结构大致具有三种类型,每种类型都具有自己贬义但难忘的名称:

  1. 大泥球(Big ball of mud,也称为“贫民窟”,Shantytown。)——此类系统包含很大的未使用部分。而且未使用的部分还与其他的一切交织在一起,使得识别它们变得不可能,更不要说删除它们了。
  2. 意大利面条(Spaghetti)——这是没有逻辑流的系统,其中任何部分都可能与任何其他部分连接在一起。在此类情况下,大多数部分都共同具有对许多或大多数其他部分的依赖性,尽管此类依赖性对于系统的整体功能并没有多大的意义。
  3. 纸牌屋(House of cards)——对于这种非体系结构,每个部分都依赖其他许多部分,因此对一个部分的更改会破坏其他若干部分,并且修复一个问题会引入许多其他问题。

许多具有一种类型的特征的系统也往往具有其他两种类型的特征。下图显示了一个示例体系结构,它具有所有三种类型的特征。

复杂系统设计

之所以采取这种方式构建系统,是因为没有对它们进行很好的规划。它们通常由缺乏必备技能和资源的人匆忙地构建以满足即时之需,而没有考虑到长期成功所必需的质量。构建此类系统的团队要么是人员太少,要么就是人员太多,从而减弱而不是增强了最有才能的团队成员的影响。

从上图可以看出,在团队开始构建系统之前,必须进行体系结构设计。在构建系统时,需要由少数(或许就是一个)预言家来领导设计团队以避免此类大杂烩。该预言家的头脑中必须有一个全盘计划,而不是每一个具体细节,更多的是有关需要什么以及如何实现的总体思想。并由该预言家来负责系统的体系结构。在开始构建系统之前有了这样的预言家,并且已经有一个准备好的体系结构,就可以井然有序地构建一致、可理解的系统——在新需求出现时可由该团队或其他团队修改的系统。




回页首


IT 架构师的作用

架构师是负责开发体系结构并确保能够创建该体系结构的人。虽然单个架构师就可以做所有工作,但是开发通常涉及到团队合作。在此情况下,架构师就像团队教练、乐队指挥或电影导演。架构师对要创建的系统的远景设想将变成要创建系统的团队的计划。

IT 架构师需要什么技能?IT 架构师必须了解整体状况,理解主要部分,并知道它们如何组合在一起。IT 架构师需要能够平衡相互冲突的需要,例如需求、预算、人力和期限。他们需要研究系统必须做什么。他们还必须预测将来的需要和系统可能面对的问题,并为解决这些问题做准备。架构师必须能够制定远景,然后将该远景传达给团队,并推动其成员实现它。

架构师最需要的是经验。没有人一开始就是架构师。将来的架构师需要精通各个主要方面,然后才能尝试承担更重要的责任。他们需要具有管理项目、与参与人员合作和领导团队的经验。优秀的架构师不是天生的;他们是在成长中逐渐适应此职位的。



回页首



体系结构简史

以下是 IT 体系结构发展中里程碑式的主要事件,大致按年代顺序列出:

  • 大型机:第一代应用程序运行在一台中央计算机上。用户通过哑终端或电传打字机连接到该计算机。当时的体系结构非常简单:应用程序负责操作系统以外的一切工作。对于持久性,当时不存在诸如 IBM DB2® 或 Oracle 之类的外部数据库——应用程序将数据存储在文件本身中。没有消息系统,没有 GUI,没有共享数据,也没有应用程序之间的交互。
  • 工作站:随着桌面计算机变得普遍起来,在其上运行的应用程序也变得普遍。出现了诸如 VisiCalc、WordPerfect(现由 Corel Corporation 发行)和 Microsoft® Office 套件等应用程序,它们可以大大提高个人的工作效率。这些是个人应用程序;每个用户都运行本地安装的副本,并在使用后退出。没有数据共享;数据存储在本地磁盘上的文件中,仅通过磁盘复制来进行分发。
  • 网络:网络将工作站彼此相连、连接到共享的服务器计算机以及连接到大型机类型的中央处理计算机。这促成了企业中的电子邮件功能和文件服务器上的文件共享。
  • 客户机/服务器:网络促成了客户机/服务器计算,其中应用程序不再完全运行于中央计算机或工作站上,而是介于两者之间。最初的客户机/服务器应用程序运行于工作站上,但是访问数据库服务器中的集中数据。后来的体系结构将应用程序本身划分为两部分:运行于服务器上用于业务逻辑的共享组件和实现用户界面的本地客户机。承载此中央业务逻辑的需要导致了应用程序服务器的发展,后者用于运行和管理应用程序的服务器部分。
  • N 层体系结构:客户机/服务器体系结构被称作两层体系结构。当数据库服务器与应用程序服务器运行在不同的主机上时,这就是三层体系结构。基于网络的应用程序变得更加复杂,设计人员将从 GUI 到数据库的应用程序堆栈划分为客户机和服务器上的多个进程。此类多层设计一般称为 n 层体系结构。
  • Internet:Internet 是一个全球网络,是网络的网络。Internet 的历史实际上比大多数企业中的网络的历史还长,但是在企业构造能够连接到 Internet 的内部网络之前,无法在企业内访问它。Internet 不仅支持企业中用户之间的通信和信息共享,而且还支持世界上任何地方的用户之间的通信和信息共享。
  • 万维网:Web 使得 Internet 图形化。它允许创作者使用超文本标记语言(Hypertext Markup Language,HTML)将文字和图片作为组合文档发布,供世界上任何地方的任何人查看。这些 HTML 文档包含指向其他文档的超链接,因此对另一个文档的任何引用都将变为活动的,从而为读者提供了对所引用来源的直接访问。这就是随需应变信息的开端,从而使得链接与节点一样重要。
  • 浏览器 GUI:Web 引入了用于查看静态 HTML 文档的 HTML 浏览器。该范例很快调整为提供用于访问远程应用程序的交互式 GUI。这是对集中计算模型的回归。它实际上并不是客户机/服务器模型,因为除了 HTML 呈现和一些简单脚本外,并没有任何应用程序在客户机上运行。甚至是输入值的验证也必须在服务器上执行。
  • Web 服务:创建 Internet 的目的是连接应用程序,而 Web 则将人们连接到静态内容和服务器应用程序。Web 服务使用 Web 来连接应用程序,以便一个应用程序能够通过 Web 连接调用另一个应用程序中的行为。
  • Web 2.0:这是将 Web 服务应用于网站。从此,网站的用户不再是人,而是另一个应用程序。
  • 面向服务的体系结构(Service-Oriented Architecture,SOA):应用程序往往是独立的,完全运行在某个中央计算机或某个工作站上。客户机/服务器和 n 层体系结构分散了应用程序层;浏览器 GUI 则将应用程序移回到服务器。即使对于 n 层体系结构,应用程序仍然是独立的,因为运行时堆栈是自包含的;应用程序最适合作为对等方进行交互。SOA 将应用程序划分为代表用户功能的服务协调器(组合应用程序中的最顶层使用者集合)和实现该功能的服务提供者。虽然协调器往往是某个特定应用程序唯一的,但是服务可以重用并由多个组合应用程序共享。
  • 事件驱动的体系结构:对于 SOA,服务协调器明确指定和调用所需的服务。对于事件驱动的体系结构(Event-Driven Architecture,EDA),应用程序检测某个事件并发出通知;其他应用程序具有能够接收通知并通过调用服务来作出反应的处理程序。通过这种方式,检测应用程序不必知道它应该调用来响应某个事件的所有服务;它只需通告该事件,而让其他应用程序决定要调用哪些服务来作出响应。

在 developerWorks 上了解有关面向服务的体系结构(SOA)和 Web 服务的更多信息。



回页首



IBM 如何定义 IT 架构师

信息技术(IT)体系结构是软件密集的系统的基本组织状态。系统之所以是软件密集的,是因为 IT 体系结构的最重要部分是其应用程序,也就是支持用户执行其业务任务的部分。

除了应用程序之外,IT 体系结构还具有其他方面。IT 体系结构中的应用程序需要基础设施,即赖以运行应用程序的基础。此基础由硬件服务器计算机、桌面工作站、存储和网络构成。它还由服务器软件构成,包括中间件应用程序服务器、数据库服务器、消息系统、工作流引擎和规则引擎。数据存储在此基础中,作为一项资产来进行管理,并通过受控的访问对多个应用程序可用。此基础还是集成解决方案的主机,以允许应用程序彼此通信。

IT 体系结构的其他方面将这些元素组合在一起。它们全都必须在运行时进行管理,以确保它们的正常操作。而架构师必须确保所有这些部分——基础设施、应用程序、数据、集成和操作——集合起来形成平稳操作、软件密集的系统,以满足其用户的需要。

因此,存在不同类型的 IT 架构师。IBM 定义了以下六个体系结构类型:

  1. 企业体系结构(Enterprise architecture)。企业架构师致力于将 IT 功能映射到业务需要。该架构师全面负责企业的软件密集系统,包括多个应用程序之间的关系、应用程序之间共享的数据、应用程序的集成以及运行应用程序的基础设施。
  2. 应用程序体系结构(Application architecture)。应用程序架构师致力于应用程序的设计,以实现业务流程的自动化并提供帮助用户执行业务任务的功能。该架构师的职责包括设计应用程序来满足用户的功能和服务质量要求,包括性能、可用性、可伸缩性、安全性和完整性。他们的职责还包括评估并选择运行应用程序所必需的软件和硬件,以及用于开发应用程序的工具和方法。
  3. 信息体系结构(Information architecture)。信息架构师致力于多个应用程序所使用的数据,包括该数据的结构、完整性、安全性和可访问性。该架构师的职责包括设计、构建、测试、安装、操作和维护用于管理该数据的系统。这些系统的设计必须考虑到数据要求,例如源、位置、完整性、可用性、性能和使用寿命。
  4. 基础设施体系结构(Infrastructure architecture)。基础设施架构师致力于硬件和服务器软件的设计,包括服务器计算机、存储、工作站、中间件、非应用程序软件、网络以及支持企业所需应用程序和业务流程的物理设施。该架构师的职责包括这些组件的评估和选择、用于验证设计和所选产品的建模、模拟和测试工作,以及最终获得的基础设施的性能、可用性和可伸缩性。
  5. 集成体系结构(Integration architecture)。集成架构师致力于支持现有应用程序、打包软件产品、网络和系统在企业中或企业之间协同工作的解决方案设计。这些解决方案可能使用不同的技术、供应商、平台和计算类型。
  6. 操作体系结构(Operations architecture)。操作架构师致力于管理企业所使用的基础设施和应用程序的解决方案设计。该架构师的职责包括为复杂信息系统的安装、操作、迁移和管理定义计划、策略和体系结构。

这些架构师并不独立工作,因为他们的职责范围是重叠的。基础设施架构师设计系统赖以运行的基础。应用程序架构师设计用户程序,集成架构师确保程序能够集成,信息架构师确保他们拥有数据。操作架构师确保一切都正常运行,而企业架构师则监督所有这些方面,并确保将所有这一切组合在一起。在下图中,您可以看到 IBM 所确定的六个体系结构类型之间的关系。

六个 IT 类型

Search

导航

热门文章

最新文章

Powered By duduwolf's wiki 1.0

Copyright 1999-2007 duduwolf.com Some Rights Reserved.