治理 是采用 SOA 之后才流行起来的。在 SOA 领域中,治理被划分为设计阶段治理(为 Web 服务定义策略)和运行时治理(实际上是将这些策略应用到实时数据流中)。
云平台(就像 SOA 中的服务)主要是通过 Web 服务 API 访问的,因此它们应该与 SOA 治理同属于一个类别。至少您可以重用 SOA 治理中的原则。
SOA 治理通常依赖于注册器。这是一个中心点,用户可以在这里查看 SOA 中的服务,以及查看应用到服务的策略。标准的 WS-Policy 及其互补 WS-Attachment 规范允许将策略分配到 SOA 中的服务。因此,服务包含一个指向该策略的 “指针”。注册器在服务和策略之间管理这种关系。
SOA 治理产品提供的另一个重要功能是管理服务的生命周期。这是指控制和跟踪服务变更的能力,以及控制谁有权力更改服务。当这种功能就绪之后,组织就能确定服务是由谁创建的,以及由谁在何时更改它。
是不是有了 SOA 治理就意味着云治理问题已经得到解决呢?这不是绝对的。向云服务发送的消息和从云服务发出的消息一般都不是 SOAP,并且这些服务通常不是 WSDL 定义的,这两个标准通常出现在 SOA 治理中。这意味着不能简单地将云服务导入到 SOA 治理注册器中。云计算使用的 Web 服务绕过 SOAP 和 WSDL,而是利用轻量级的 REST 式服务,REST 式服务因为简单而在开发人员中得到广泛使用。
云计算空间
您是否希望随时获取最新的云计算消息?是否想得到云计算相关的技术知识?developerWorks 云计算空间就是这样一个云计算信息资源的门户,在这里您可以了解来自 IBM 和业界其他媒体的最新信息,并且得到如何在云环境中使用 IBM 软件的入门知识。
IBM 在 Amazon EC2 云计算环境中提供了 DB2、Informix、Lotus、WebSphere 等方面的 AMI 镜像资源。您只需按使用量支付少量费用,就可以使用到云上的数据、门户、Web 内容管理、情景应用等服务。欢迎您随时访问 云计算空间,获取更多信息。
虚拟机是云计算的另一个新方面,它将云计算与 SOA 区分开来。除了利用 Web 服务之外,云计算还利用了虚拟机。Amazon Elastic Compute Cloud (EC2) 环境可以看作一种虚拟化宿主环境,而不是一组服务。因此,Amazon EC2 的治理可以看作是虚拟机治理的一个例子。尤其是虚拟机的部署很可能得到一个混乱的局面,因为组织可能会使用许多彼此之间稍微不同的虚拟机。就像许多 VMware 或 Citrix Xen 用户的体验一样,个体用户也很难跟踪虚拟机。想像一下,对于一个组织问题就要复杂得多,如果虚拟机驻留在第三方云服务上的话,就更加难上加难了。
不过,虚拟机(VM)治理与 SOA 治理的 “生命周期治理” 有一些相同之处。在 Amazon EC2 云中,VM 是 Amazon Machine Image (AMI) 的一个实例。能够实施规则,以让特定用户可以部署某些 AMI 非常重要。在更精细的级别上,能够控制谁可以重启 VM,谁可以向现有的 VM 环境添加容量,以及谁可以删除现有的虚拟机实例,这也是很重要的。
上述的最后一项(即删除 Amazon AMI 实例)尤其重要,因为组织必须为使用这些实例付费。定价基于使用(当映像处于运行状态时)和数据流量。如果没有云治理系统,可能会运行更多不需要运行的 AMI 机器实例,从而带来不必要的成本。不过,反过来也是成立的:如果没有云治理解决方案,就可能会误删有用的 AMI 实例。AMI 实例的生命周期管理避免了无用实例,就像 SOA 治理处理不使用治理框架时无用服务不断在组织中滋生一样。
回页首
流程而非产品
一般都认为 SOA 治理是一个流程而不是产品。云治理也坚守这一规则。要实施治理规则要求开发人员知道治理框架已经就绪。例如,如果 SOA 治理注册器已经部署,那么开发人员必须知道应该在这里注册 Web 服务(尤其是它们的 WSDL 定义)。如果没有通过注册,Web 服务就在监视之中。如果没有要求开发人员通过云服务所在的组织注册使用云服务,也会发生类似于 SOA 治理中出现的事情。
在 SOA 治理领域中,除了由注册器提供的设计阶段治理之外,还有一个运行时治理,并且在这个阶段实施在注册器中配置的规则。服务的规则实施点通常体现为嵌入式代理或网络媒介,比如 XML 网关。
对于 SOA 治理中的注册器和运行时实施点(比如代理或 XML 网关),在云计算中都是不存在的。这意味着云计算服务没有可供用户查看所有服务和相关策略的中心点。尽管策略在连接的云计算端实施(由云服务提供商实施),但是它们并没有在客户端实施。因此,云计算的治理面临重要的挑战。
回页首
无用的云
云计算在很多方面都类似于早期的 Web 服务。开发人员可能独自决定使用这一新技术,并且最终使用了。公司的 IT 管理人员是不能觉察到这种情况的。然后,才慢腾腾的添加治理这把保护伞。此时,许多组织已经进入云计算的前期治理阶段。开发人员在项目中玩弄 AMI 映像的情况并不少见;即使最初的原型化要求使用个人的 Amazon 帐户和信用卡。
回页首
客户端治理 —— 未能付诸实施?
云服务提供商通常不必提前将服务停机信息提交给客户。另外,当发生服务意外停止时,云服务提供商没有责任通知云服务用户。为了监控云服务的响应时间和可用性,必须具备一个客户端组件。客户端组件(例如,XML 网关)监控到云平台的连接。如果连接速度很慢,XML 网关将发出一个警告,或者采取补救措施,比如使用它的缓存进行响应。通过以这种方式使用缓存,可以减轻云服务停机造成的影响。
客户端上的 XML 网关还能扫描云数据,看看是否泄露隐私信息或公司的敏感数据。在将数据上传给云提供商之前,应该对数据进行加密,或者有选择地加密一部分数据。例如,XML 网关应该能够确保上传给云计算提供商的数据被去除身份,从而使该数据与隐私信息没有关联。
XML 网关,比如 Vordel XML Gateway Cloud Edition,将过滤上传到云平台的数据流,以及将策略应用到云服务的访问。这样,XML 网关为客户端连接到云服务提供一条通道。
回页首
将控制应用到 HybridCloud 应用程序
在本系列的第 2 部分中,您就开始创建 HybridCloud 应用程序,它利用了 Amazon Web Services。考虑云治理和安全性时,您将看到 Amazon Web Services 如何验证这个应用程序,以及如何对它应用策略。
Amazon 密匙
HybridCloud 应用程序利用了 Amazon SQS 云服务。SQS 像所有 Amazon Web Services (AWS) 一样,需要使用访问密匙 ID 和关联私有密匙。我们看到在 HybridCloud Java™ 代码中使用 Amazon 密匙,并将这些密匙硬编码到在 Amazon SQS 云中使用的应用程序中。这些密匙是什么,我们来详细查看一下。
Amazon S3
Amazon S3 (Simple Storage Service) 是用于在线存储的云服务。它被 Web 站点用作后端存储设备,比如照片共享站点 SmugMug(从 参考资料 可以获得它的链接)。当然,也可以使用它存储私有公司数据。您存储在 Amazon S3 上的数据可能是敏感的,这取决于上下文。如果您的数据是隐私的,那么在将它上传到 Amazon SQS 服务之前使用 XML 网关对其进行加密。此外,要跟踪数据在 Amazon SQS 中是如何被访问的。除了隐私性问题之外,您还希望跟踪 S3 的使用,因为它是需要付费的。没有人希望收到令人惊愕的巨额账单,而且还不能完整地审计该账单。为此,要打开 Amazon S3 服务的日志记录,这非常重要。
一种开启 Amazon S3 bucket 日志的简单方法是使用 Cloudberry Explorer 应用程序打开 S3 实例的日志记录(从 参考资料 了解更多信息)。Cloudberry Explorer 为 Amazon S3 提供一个很好的 GUI 前端。在 Cloudberry Explorer 中,您仅需选择一个 bucket 并单击工具栏上的 Logging按钮。现在,勾选 Use logging 复选框。从下拉列表中选择用于包含日志文件的 bucket。在我们的例子中,这个 bucket 为 cloudberry.log。实际上,日志是写到 Amazon 云服务上的。日志文件必须写到同一个地理位置的 bucket 中(即 US 应用程序必须写到 US 日志中)。日志文件的费用将添加到每月的账单中,因为它使用了 Amazon S3 存储空间。不过,审计谁访问了您的 Amazon S3 存储服务所需的日志空间不会很大,因此这笔开销是很小的(相对而言)。
回页首
Google Apps
Google 提供一个称为 Google Secure Data Connector (SDC) 的工具,它将客户端 Java 应用程序连接到 Google Apps 云服务。它在本地网络和 Google Apps 之间提供一个加密连接。这主要用于将 Google Apps 应用程序连接到本地网络。构建它的目的是确保 Google Apps 能够通过该连接进行连接。另外,它还提供过滤器,用于限制哪个 Google Apps 部件能够访问哪个内部系统,这很像防火墙规则,不过它仅是应用程序级别的。除了控制哪个应用程序能被访问之外,您还可以添加用户级别的控制。这允许组织控制谁能访问 Google Apps 服务。
Google Apps SDS 的身份框架使用的是 OAuth。例如,宿主的 Google Apps 服务能够使用 OAuth 向本地应用程序表示它们(及其用户)的身份。目前还没有广泛部署 OAuth。不过,Amazon 对 OAuth 的支持可能会改变这个局面。
Leveraging Amazon Web Services for enterprise application integration: XML messaging with Amazon SQS(Brian Stewart,developerWorks,2009 年 6 月):结合使用 Amazon Web Services 和 XML 以集成企业应用程序。构建一个灵活的、可伸缩的样例应用程序,它是跨平台的并且与所使用的技术无关。包含大量用 C# 和 Java 语言编写的代码样例。
Storage made easy with Amazon S3: Enter the cloud with Amazon's Simple Storage Service(Andrew Glover,developerWorks,2009 年 4 月):了解如何使用开源 JetS3t 库,以利用 Amazon S3 云服务存储和获取数据。
Amazon Web Services:查阅 Amazon Web Services 和云计算内容。
用 Amazon Web Services 进行云计算,第 1 部分:简介(Prabhakar Chaganti,developerWorks,2008 年 7 月):阅读这个有关使用 Amazon Web Services 的逐步指南。
Private Clouds Take Shape:从 Information Week 了解本系列中的混合云。
Vordel XML Gateway,云版本:了解这个网关,它具有连接到 JMS 队列的连接器,以及连接到云服务的预构建连接器。
developerWorks Cloud Computing Resource Center:查找可用于 Amazon EC2 平台的 IBM 产品。
Open source Java obfuscators:使用 Java 类文件压缩器和模糊处理器,它们能生成更小的、更难进行反向工程的 jar 文件。
The Google App Engine Blog:访问这个有利于帮助开发的好地方。
Navigate the cloud computing labyrinth(Brett McLaughlin,developerWorks,2009 年 3 月):根据您的应用程序需求选择一个最好的云计算平台。
将 Google 的云计算功能连接到 Apple 的 iPhone 中(Noah Gift 和 Jonathan Saggau,developerWorks,2009 年 1 月):了解如何在移动设备中访问云。
使用 IBM InfoSphere Information Server 与 Salesforce CRM 进行数据集成(Jon Deng 和 Jeff J. Li,developerWorks,2008 年 7 月):探究如何从您的应用程序访问 Salesforce 中的数据。
IBM XML 认证:了解如何才能成为一名 IBM 认证的 XML 和相关技术的开发人员。
XML 技术库:访问 developerWorks XML 专区,获得广泛的技术文章和技巧、教程、标准和 IBM 红皮书。