PaaS 渐入佳境

阅读数:1707 2013 年 11 月 13 日

话题:云计算DevOps语言 & 开发架构

随着 laaS 的第一波浪潮过后,云服务市场逐步开始把 PaaS 作为主要的服务模式。与此同时,微软也在近期推出了 Hadoop Azure 大数据服务。

对于 PaaS 的稳步发展,Dr.Dobb‘s 主编 Andrew 表示了认同,他以自己的个人经历与云服务模式的发展做了比较。

当我刚开始学习编程的时候,个人电脑还是即昂贵又不可靠的电子设备。考虑到电脑的成本,我认识到拥有一台个人电脑的最好的办法是自己组装一台。每隔几年,我都会搜寻最新最快的 CPU、新的主板、我能买的起的最大的 RAM、更好的驱动、性能更优的显卡。然后我会在某个周末津津有味地鼓捣我的新 “神秘盒子”。接下来就是漫长的重装系统,最后是安装各种软件和工具。在上述工作完成后,我得到了自己新的、更快的电脑。但相比兴奋喜悦,我感受到更多的是筋疲力尽。

一些年过去后,攒了几次电脑的我终于意识到这种攒机方式非常费时间,并且带来的收益不大。这时个人电脑价位下降了,性能也更可靠了。最终我决定变聪明一点,在意识到这一点后我便一直买电脑了——相比攒机我节约了大量的时间,加快了进度。

Andrew 认为他的经历和许多关注云解决方案的开发者的类似。有着一颗极客的心的我们很容易被 IaaS 模型所吸引——该模型提供只含有一个操作系统(大多情况是 Linux)的虚拟机。之后,痛苦的构建过程就开始了:打个比方,我们需要让它服务于网络应用程序。于是,我们需要添加 Apache,然后进行 Apache 配置,添加 MySQL,配置 MySQL,添加脚本语言(如 Python),配置脚本语言,添加业务逻辑,配置之。然后将这些组件连接起来,再进行漫长的仿佛没有尽头的配置。这个过程, 就是俗称的“牦牛刮胡子”。

开发者需要花费几天来进行检查网络的设置和细节,确保所有配置正确,这并不是什么让人愉快的工作。但是至此一切还没有结束。如果虚拟机需要按比例调整或克隆以符合集群需求,那么我们还需要在软件基础架构中加入附加层。如果虚拟机需要调用缓存和负载平衡器,那么我们就更需要加入附加层。突然之间,你就变成了系统构建者和管理者——你终于可以开始削减一些代码了。如果当时我沿着这种路线走下去,我将需要一直构建我的个人电脑,抛弃我的集成开发环境(IDE)。

不仅是开发者,企业也意识到了这个问题。Andrew 指出,亚马逊云服务在提供可扩展性的同时变得使用、配置复杂——尽管可以使用有效的预配置模板——太复杂以至于现在有针对于服务各部分专门的研究。公司使用云服务是要减轻公司负担,而不是增加公司工作量。因此现在的潮流逐渐从 Iaas 转向了 PaaS——采用 PaaS 作为服务平台——来减少麻烦,获得更多的好处。

对于程序员,Andrew 认为 Paas 的一个经典解决方案是 CloudBees。你可以利用一个装有 Java 的、运行着默认的持续集成服务器 Jenkins 的虚拟机。当然,这个虚拟机也装有 SCMs(GitHub 和 Subversion)。

一旦你完成 CloudBees 上实例的构建与测试后,你就可以将此应用程序部署到其它云服务上。CloudBees 只在你使用实例的时候收费,因此你可以只在每天的最后时刻进行构建——利用机器,在构建完成后停止机器。你设置自己的实例,测试所有的部件,确保它符合规模,这一切会花很长时间么?PaaS 的作用不可小觑。

企业有很多 PaaS 可以选择,Andrew 指出了几个选项:微软的 Windows Azure,谷歌的 App Engine,还有一些小供应商提供的服务。在合适的供应商中,一个叫 Apprenda 的拥有一些独特的优点。他的 PaaS 能提供面向托管程序的多租户管理。

打个比方说,如果你是一个企业级的消费者,你想要创建单个实例化的托管 Oracle DBMS,同时你希望它可以被若干个之间相互独立的应用程序共享。如果你采用的是 IaaS,那你就要面临一个很大的管理难题。Apprenda 的 PaaS 软件对这类问题处理的很好。它对 DBMS 进行设置,因此每个应用程序都认为自己是 DBMS 的唯一用户,但事实上它们共享了 DBMS。如果没有这种支持——就像 IaaS 一样——每个应用程序都将需要自己的数据库实例。

Andrew 指出,现在市场上已经有各种各样的 PaaS 可供选择:每一种应对不同的用户需求,许多还通过公司墙(enterprise walls)提高云体验。我们可以看到 PaaS 产品日益成为解决方案首选——而 IaaS 更多的是为 PaaS 解决方案提供裸系统,而不是与之竞争。

说到 PaaS 市场的发展,微软最近推出了 Hadoop Azure 大数据服务。微软公司通过其无处不在的 Excel 为商业世界带来了电子表格。现在微软希望以一种大致相同的方式,通过他们新的 Windows Azure HDInsight 服务在大数据分析方面做出类似的效果。

微软公司数据平台部总经理 Eron Kelly 说:“我认为作为一家公司我们一直以来做的很好,因为公司能够处理技术难题并且简化它们,因此,我们正在简化 Hadoop,并且将它带给每个人。”

Windows Azure HDInsight 作为一个由 Windows Azure 所提供的 PaaS(平台即服务)产品,它提供了 Apache Hadoop 的数据处理平台和一些相关工具。HDInsight 将使用 Hortonworks 数据平台(HDP),这将是 Hortonworks 提供的 Hadoop 旗舰版产品。

微软并不是第一家提供 Hadoop 云服务的公司。亚马逊 Web 服务也提供了 Hadoop 和 Rackspace 计划,并将很快提供 HDP 服务。IBM 公司最近也发布了 SoftLayer 主机服务,并且它将提供快速运转的跨多个裸机服务器处理 Cloudera 的 Hadoop 分布式服务。但微软公司希望在可增长的空间中开拓出有竞争力的优势,即先简化其部署过程,之后再使用 Hadoop。比如,通过微软的分析工具,服务将运行的更好。Excel 表格的使用者可以使用电子表格的一个功能,例如“Power BI”功能,然后进行采集数据,并通过 Hadoop MapReduce 对数据进行分析和可视化。

微软公司在 2011 年首次宣布了这个服务计划。原本微软打算和 Hortonworks 一起合作,开发他们自己的 Hadoop 版本,并且使自己的版本经设置后可以在 Windows 服务器上运行。

很快我们就发现在 Hortonworks 提供的产品功能和我们将要提供的产品间存在着一定程度的冗余,因此我们决定针对一个核心功能达成协议,即 Windows 上的 HDP。微软为此已经为 Apache Hadoop 和相关软件贡献了超过 1.6 万行的代码。

Windows Azure HDInsight 将运行一个 HDP 的 Stock 版,允许用户在 Azure 和其他非 Azure HDP 环境之间无缝的迁移工作数据。Hortonworks 发布下一个 HDP 版本之后,版本 v2.0 将尽快发布,Azure 的 HDP 版本将会自动更新。

Kelly 说,微软公司实际上已经在为一些特定客户以全生产模式运行了数个月的 Windows Azure HDInsight 服务。

  • 巴塞罗那市用该服务来分析交通模式、垃圾收集和一些有关市政府职责的数据,并希望这些数据能够用于帮助政府做出更加明智的支出决策。
  • 弗吉尼亚理工学院和州立大学的一组研究人员在使用该服务运行 DNA 测序工具。