如今云计算已经逐渐渗入到信息产业的各个角落,不仅如此,当我们看如何使用云的时候,我们会发现,从数据中心到应用的提供,不同的云提供商在功能和能力之间的差异已经逐渐模糊。值得一提的是,大部分的企业仍然主要关注向其客户交付某种形式的基础设施即服务(IaaS)。这也许是在选择现有公有云厂商和构建内部 IaaS 私有云之间的一个折中方案。但是,最终说来,所有的云都会用来托管应用或者数据,这也就是说 IaaS 只是通往最终目标——简化应用平台或者平台即服务方案(PaaS)的操作及管理——之路上的一块基石。
PaaS 之前,须有 IaaS
IaaS 受到广泛关注说明了云计算在 IT 界的整体成熟度。如何在一组不同的需求中高效地管理共享资源,IaaS 非常依赖于对这一理解。至少到目前为止,这种想法在业界内还没有得到很好地传播以及实践,这是由于我们缺乏工具和能力使用商业软件硬件来交付这种思想。但是,随着越来越多的商业解决方案可以简化计算、存储和网络能力的分配和共享,以及这么做具有实际的商业理由,,很大比例的 IT 企业已经进入云计算的竞技场。
第一步是迈向资源共享,这就是常见的虚拟化。现在这样的现象非常常见,那就是企业高层在谈论他们的环境有多少百分比已经处于“虚拟化”。但是,如果没有在此基础之上持续改进的话,那么拥有一个高度虚拟化环境的价值所在仍然值得怀疑。也就是说,如果所有的设备都是从物理化迁移至虚拟化,我们能看到也就无非只是物理服务器数量的减少,以及数据中心的能耗使用的减少,例如电力,散热以及空间。
打一个很好的比方,这就像整理一个乱七八糟的储藏间。我们将相似的物品都放置到可以堆起来的盒子里面,这样做的确能非常容易地优化空间的使用,但是查找所需的物品的时候却得大费周章。而且,如果不能很好地随便查看某个特定盒子的话,那么从盒子堆的底部拿出所需物品却是一件非常艰巨的任务。比如说,每年的圣诞节,你也许希望将存有节日装饰物品的盒子移到盒子堆的顶部,这样最方便打开并且拿取其中的物品。
同样地,如果虚拟集群是静态地部署在特定的服务器组中,那么面临资源需求不断变化的程序时,调整它们的计算优先级将会变得十分困难。例如,许多公司会在年底发现在一些特定应用中资源使用量出现峰值,这是因为用户希望能够生成尽可能多的分析报告来评估业绩和做下一年的财政预算。因此,下一步便是业界需要持续不断地在实践中推动和简化资源池的使用和管理,这将使得客户从虚拟化演进的第一步中也受益匪浅,而且能够有效地满足客户的需求。
从第一步到第二步的迁移可能需要改变现有 IT 流程,这个迁移的过程也许非常复杂,而且它可能经常会对业务提出挑战。第一步将会导致一些流程变化,不过这些变化一定是围绕着数据中心资源的供应展开。不过,大多数组织仍然可以将他们的现有资源供应流程应用到虚拟环境中去。但是第一步到第二步的迁移将需要一些在治理、能力以及配置管理方面的改变,同时也需要监控方面的新技术以保证资源池能够满足需求。这类专业人才在市场上的供不应求很明显地限制了第二步的进行。
从 IaaS 到 PaaS
在往云计算的迁移过程中,大量的 IT 组织所遇到的问题终究都会得到解决。随着业界对云计算环境管理和操作能力的成熟,这一系列的努力的真正关注点变得明显——提供一个有效地应用平台,保证数据的安全,有效和满足性能需求。
和从虚拟化迁移到 IaaS 一样,从 IaaS 迁移到 PaaS 也是相当富有挑战性。最困难的挑战之一便是选择方法和架构。在有些时候,平台可以简单到只是一系列的虚拟机的组合。一个常见的例子便是 Web 应用,为支撑应用所需的所有组件都表现为服务器操作系统。(见图 1)
(点击图放大)
图 1:基于虚拟机的 ****PaaS
这类 PaaS 非常接近于它所模拟的物理机器,所以对维护者来说,管理和操作都非常熟悉。但是,由于虚拟机管理器和云管理软件的引入,导致了资源管理的能力的削弱,这使得问题的排查将会更加困难。
另外一个流行的做法便是应用容器。这类容器支持多种编程语言,同时提供一系列的应用服务,例如数据库和消息服务。这样一来,维护伸缩性和高可用性便是提供这些架构的运营团队的职责了。对于应用程序来说,它们可以认为这些属性是由云容器来维护。这类容器有:Microsoft Azure、VMware Cloud Foundry、Cloudbees 和 EngineYard。
由于到伸缩和高可用性的复杂性,建议最好利用这些容器的能力。但是,在配置、部署和运维都可能简化的同时,这些容器却仍然有大量可改进的地方。我们可以看到,多数容器仍然处于早期阶段,安全和治理控制功能十分有限。因此,如果你的应用有如下特殊的需求,例如特定的程序运行的位置,或数据要从指定服务器组上访问 ,那么这些平台还相当不成熟。
不仅如此,在开发时,需要记住,若应用在某个云计算环境中运行的话,则需要它在此类容器中更容易管理。下面是云应用需要特殊考虑的几个方面:
- 应用需要能够伸缩自如,也就是说,应用需要能够运行在多重资源池中,而不仅仅在单个资源池中。
- 考虑到多租户,应用需要对安全问题引起足够重视。例如,应用应加密日志和配置信息,也要将日常管理和配置更改的权限分离开。
- 应用不应该依赖于基础设施进行报告错误。因此,应用程序本身应实现必须的逻辑,以保证数据一致性,而不应依赖于底层服务或者硬件来管理所有的一致性。
- 应用程序不应该假设自己已经被迁移到了最好的资源环境中。这也意味着应用程序不应该对当前的基础设施做任何假设或者定义一些静态的配置。
- 由于云的天性使然,应用程序应该支持一个通用的身份管理平台。这将确保应用程序能够继续在高可用性的环境中继续稳健地运行。
- 应用程序应该能够代理可用的平台服务,而不是直接利用具体的服务进行实现。虽然这样做可能会增加一些额外的开销,但是它却给应用程序带来了更多的伸缩性和保证服务质量。
确保正确地实现并维护合适的安全策略及安全级别是(云平台服务)消费者的职责,这是云计算各方面的最佳实践。这意味着 PaaS 中的应用架构需要考虑移动中和静态数据的安全性,以及确保需要合适的身份验证才能访问应用程序。以前业界并没有对它多加关注,因为应用是部署在他们自己的企业数据中心。考虑到自有数据中心的低风险,这样做无可厚非,但是一旦迁移到共享资源,业界需要花精力考虑自由数据和应用在整个云环境中的安全性。
结语
云计算不仅仅只是一个信息技术的流行字眼,它是代表着架构的最终前进方向,而且要求必须在流程和操作方面做出改变。很多组织的经验证明,以自顶向下的方式来是非常成功有效的,这种方式将使得它们有足够的能力构建和管理共享资源计算环境。这是一个非常关键的基础步骤,它使得 IT 组织能够培养配置及容量管理、治理和监控方面的实践能力,最终有能力创建和维护一个 PaaS 环境。
平台即服务将会很快成为 IT 组织关注的重点内容之一,尤其是那些已经成功迁移到云计算平台的成熟组织。平台的选择与团队在 PaaS 环境下的管理和运维能力息息相关。每一种平台架构都有自身的优势和不足,例如某些平台着重于安全性和高可用性,而有些则认为安全性和高可用性完全是用户的责任。不仅如此,PaaS 容器的大量出现,也会让您的技术部门重新考虑如何开发应用以及如何重构某些应用使之更加适用于云环境。
关于作者
JP Morgenthal 是 IT 战略和云计算方面的世界顶级专家。,它有超过 25 年为复杂业务问题提供技术方案的经验。JP 对业务有商业敏锐,同时辅以技术广度和深度。在是集成、软件开发、云计算领域受人尊敬的作者。他投稿的 “云计算:评估风险(Cloud Computing:Assessing the Risks)”一书也即将出版。同时他还是 InfoQ 的云计算社区的首席编辑。
查看英文原文: PaaS Is The Word
评论