IBM Bluemix开启云开发时代:基于Cloud Foundry开源项目的PaaS服务

去年夏天我测评了Cloud Foundry PaaS(平台即服务),当时着眼于Pivotal和ActiveState这两种解决开源方案。这回测试时,我将关注IBM Bluemix,这是在SoftLayer上托管运行的多租户PaaS,它结合了Cloud Foundry和经过改进的在线用户界面以及来自IBM和第三方的服务。

Bluemix上最具特色的那些服务基于Watson,这个认知系统提供了自然语言处理、假设生成及评估以及动态学习等功能。Bluemix中的另外几种服务和整合填补了开源版Cloud Foundry的缺口,比如自动扩展、移动、大数据和企业整合服务。

请注意:不用分叉Cloud Foundry代码,缺口也已经填补。实际上,Bluemix首席技术官Bala Rajaraman很坦率地告诉我:“我们不会分叉代码。”我当初为开源Cloud Foundry和Pivotal CF安装的cf应用配置命令行程序与Bluemix的配置命令行程序一样。我为开源Cloud Foundry安装的bosh PaaS配置命令行程序与Bluemix工程师内部使用的一样,但是Bluemix的用户们根本不需要学用bosh,因为IBM在Bluemix方面的打算是,让用户无需操心PaaS管理,专注于服务,好让用户只要一心构建应用程序。

我赞同这种做法。身为开发人员,我发觉bosh学用起来有点费劲;我认为,配置PaaS方面的繁重任务应该交给操作团队完成。对我来说,PaaS和开发运营(devops)有望让基础设施的“低摩擦”配置和管理有助于构建和部署软件。让开发人员把相当多一部分时间用于建立PaaS所需的繁琐操作事务,这违背了使用PaaS的根本目的。与此同时,我喜欢能够在笔记本电脑上单独运行单个虚拟机的“微云”PaaS,用于试验,这就是为什么我还认识到ActiveState Stackato和可下载的PaaS虚拟机映像具有的价值。

由于Bluemix建立在未经改动的Cloud Foundry上,它同样有着Cloud Foundry架构的一切:Droplet、DEA(Droplet执行代理)和构建包等等,在虚拟机里面运行。下面架构图左下方的淡蓝色虚拟机方框中显示的就是Cloud Foundry部分。

IBM Bluemix开启云开发时代:基于Cloud Foundry开源项目的PaaS服务

图1:Bluemix架构图。

请注意:Bluemix基本上一个预装的Cloud Foundry虚拟机,外加经过改进的用户界面和额外服务。

Bluemix同样使用Cloud Foundry架构:它同样有其他Cloud Foundry解决方案上可用的Cloud Foundry构建包和服务,又添加了自己的一些东西。我们会将这一切细分为样板(boilerplate),其他地方又叫快速启动包或应用程序商店;运行时环境,其他地方又叫构建包;以及服务。Bluemix包括众多服务,面向Watson、移动、开发运营、Web及应用程序、整合、数据管理、大数据、安全、业务分析和物联网。我在下面会介绍所有这些服务。

IBM、社区或第三方公司,各方都能支持Bluemix服务。试验服务是免费的,不太稳定,很容易出现变化,可能会导致无法向后兼容。因而,不建议它们用于生产环境。测试版服务是免费的,但还没有在实际环境中得到广泛测试。所有Watson服务目前都被归为测试版。

Bluemix样板

正如你能从图2中看到的那样,Bluemix目前提供13种不同的“样板”或快速启动包。虽然其中大多数都有IBM版本,但这未必是件坏事。

提供的一些样板可能需要一番解释。比如说,Internet of Things Foundation Starter样板提供了Cloudant(与CouchDB兼容)NoSQL JSON数据层,以及在面向Node.js运行时环境的软件开发工具包(SDK)上托管运行的Node-RED应用程序。Node-RED这个工具可用来把硬件设备、API和在线服务连接起来。Node-RED Starter样板很相似,不过得到社区的支持。

Java Cache Web Starter样板结合了Liberty for Java(一种轻型WebSphere配置文件)、DataCache服务和Monitoring and Analytics服务。就免费版而言,DataCache只有50MB大小,Monitoring and Analytics服务缺少更深入的性能监控和诊断功能。

Mobile Cloud样板结合了Node.js、Mobile Application Security、IBM Push消息和Mobile Data(带多租户Cloudant后端)。它包括面向安卓、iOS和JavaScript的SDK。就免费版而言,它仅限于2GB存储空间、每月100万则推送通知和每月375GB-小时。MobileFirst Services Starter样板很相似,但含有推送通知和专门针对iOS 8采取的安全。

三种User Modeling Web starters样板将Watson User Modeling服务与运行时环境和一些示例代码结合起来。Watson User Modeling利用语言分析技术,从个人的交流方式提取一系列个性和社会特征,旨在实现个性化交流。

Vaadin是一种开源Web应用框架,面向丰富的互联网应用程序。Vaadin starter样板在Liberty for Java中运行框架,使用DB2数据库。

IBM Bluemix开启云开发时代:基于Cloud Foundry开源项目的PaaS服务

图2:现有的一系列Bluemix样板,其他地方又叫快速启动包或应用程序商店。

Bluemix运行时环境,又叫构建包

Bluemix上提供的一系列运行时环境包括图3中显示的七种命名构建包,外加已批准用于Cloud Foundry的其他任何构建包。图中所示的六种运行时环境对你来说应该很熟悉;第七种Sinatra是一种DSL(特定领域语言),它用于快速、轻松地用Ruby来构建Web应用程序。

PHP构建包支持PHP 5.4/5.5/5.6、Nginx 1.5/1.6/1.7以及Apache HTTPD 2.4。PHP构建包中支持的Python版本是2.6.6,目前它不是最新版。另一方面,Python构建包支持Pypy的十几种版本,另外还支持Python 2和Python 3各自的几十种版本。

Cloud Foundry的社区构建包包括Clojure、Haskell、Mono和Erlang运行时环境。实际上,我发现Perl是在Cloud Foundry上唯一不支持的很流行的与Linux兼容的应用服务器语言。

IBM Bluemix开启云开发时代:基于Cloud Foundry开源项目的PaaS服务

图3:Bluemix上提供的一系列运行时环境包括上述七种命名构建包,外加已批准用于Cloud Foundry的其他任何构建包。图中所示的六种运行时环境对你来说应该很熟悉,七种Sinatra是一种DSL(特定领域语言,它用于轻松地用Ruby来构建Web应用程序。

Watson服务

Bluemix中目前提供的七种Watson服务(图4)是Concept Expansion、Language Identification、Machine Translation、Message Resonance、Question and Answer、Relationship Extraction以及User Modeling。它们都仍在测试阶段。我前面描述了User Modeling,这里介绍另外六种服务。

Concept Expansion服务分析文本,并根据在其他类似上下文中的使用来解读其含意。比如说,它可能把“大苹果”解读为“纽约市”这层含意。它可以用来编撰相关单词和概念组成的字典,那样就能更清楚地理解和分析委婉语、俗语及原本含糊不清的短语。这种免费的Bluemix测试版服务有预定义的数据集和领域,所以对生产环境而言它毫无用处。

Language Identification服务可检测文本是用哪种语言所写的。这有助于为下一步提供信息依据,比如翻译、语音转换成文本或直接分析。该服务可以结合Machine Translation服务使用。如今,该服务可识别25种语言。

Machine Translation服务将使用一种语言输入的文本转换成用户所需的目标语言。可以在英语、巴西葡萄牙语、西班牙语、法语和阿拉伯语之间转换。

IBM Bluemix开启云开发时代:基于Cloud Foundry开源项目的PaaS服务

图4:Bluemix提供七种Watson服务和八种移动服务。许多Watson服务目前局限于一个领域。

Message Resonance服务分析草案内容,并评估被特定的目标受众接受的可能性有多大。这种分析基于目标受众本身撰写的内容,比如某些球队的粉丝或刚添宝宝的家长。虽然未来版本让用户可以提供自己的社区数据,如今只能针对积极使用云计算或参与云计算讨论的人进行分析;就云计算之外的领域而言,该测试版服务在生产环境下毫无用处。

Question and Answer服务直接根据之前被选择并被收集到数据资料库(corpus)中的主要数据源(册子、网页、说明手册和记录),解读和回答用户问题。该服务返回可能合适的答案,附有相关的置信水平和支持证据的链接。Bluemix上的现有数据侧重于旅游和医疗保健行业,因而对其他领域而言毫无用处。

Relationship Extraction服务将句子分成多个部分来加以分析,辨别诸部分之间的关系。它能借助上下文分析功能,处理之前从未分析过的新词语(比如新闻内容中的人名)。句子部分包括词性(名词、动词、形容词、副词及连词)和功能(主语、宾语及谓语)。该服务将各句子部分的关系对应起来,那样用户或分析引擎就更容易理解每个句子和文档的含意了。

该测试版服务针对采用英语或西班牙语的新闻文章或其他新闻相关文本进行了优化,通过单独的API来优化。你无法把它用于随意性领域,指望获得正确的答案。正如你从图5看到的那样,即便针对新闻文章,它也并不总是返回正确的答案;一旦你能提供自己的训练集(training set,一组数据),应该能够根据自己感兴趣的领域来调优服务。

总的来说,Bluemix上的测试版Watson服务看起来引人入胜,但是它们还没有完全作好准备。

IBM Bluemix开启云开发时代:基于Cloud Foundry开源项目的PaaS服务

图5:我对随机挑选的一篇新闻文章测试了Relationship Extraction服务。正如你所见,并非所有提取的关系都是正确的。

移动和应用程序服务

我们前面已经讨论了Bluemix上可用的八种移动服务中的六种。另一种是Mobile Quality Assurance,该服务支持多种功能:移动应用程序测试、用户验证及借助情绪分析简化质量反馈;空中下载的版本分发;崩溃自动报告;应用程序内软件错误报告和用户反馈。另外就是Twilio,这是一种第三方语音、消息和VoIP服务。

Bluemix中有19种Web和应用服务。太多了,这里就不一一讨论了,不过有几种服务值得一提。RapidApps是一种功能有限的测试版服务,声称让你可以“使用可视化工具,迅速开发出以数据为中心的Web和移动应用程序,不需要编写代码。”RapidApps应该面向业务分析人员这个群体;现阶段,它似乎远未成熟,不过将来可能值得关注。

Business Rules服务拿来你用Rule Designer(规则设计器)创建的自然语言规则后,在被你的应用程序调用时,执行规则。该服务似乎同样针对业务分析人员,不过现阶段它比RapidApps来得成熟。

开发运营服务

BlueMix上的八种开发运营服务包括来自IBM的五种服务和来自第三方的三种服务。Track and Plan服务让你可以创建故事、任务和缺陷,以描述和跟踪项目工作,另外使用用于产品待办事项、版本发布和开发周期的敏捷规划工具。该服务实际上为你提供了面向Git或Jazz软件库的Rational Team Concert(团队协作工具)。

Delivery Pipeline服务让你可以实现构建和部署自动化、测试代码执行、配置构建脚本以及实现单元测试的执行自动化。我喜欢这两种服务将Jazz界面与Bluemix整合起来的方式。

我们已探讨了Java Cache Web starter下的Monitoring and Analytics服务。Auto-Scaling for Bluemix Add-on让你能够为自己的应用程序自动增加或减少计算能力/容量。App User Registry让你可以保护你申请的资源,或者开发基于OAuth 2.0的客户应用程序。三种第三方开发运营服务是BlazeMeter、Load Impact和New Relic。

其他服务

Bluemix中只有两种整合服务,但它们都值得关注。Cloud Integration服务让用户能够将云服务与企业记录系统整合起来;它将后端系统作为REST API来展现,供应用程序使用。试验阶段的Containers Service服务让你可以在Bluemix上运行Docker容器,这可能会让Bluemix向几乎一切敞开大门。

在Bluemix上的10种数据管理服务中,两种面向MySQL(一种开源,一种容错),两种面向Postgres(同上),三种面向NoSQL数据库,一种面向DB2。另外两种数据管理服务是Object Storage(测试版,基于OpenStack Swift)和DataWorks,后者包括可装入数据、清洁美国邮政地址以及分类数据的API。

正如你预料,五种Bluemix大数据服务中两种基于IBM Big Insights for Hadoop,一种是单节点方案,另一种是集群方案。另外三种是基于Informix而建的时间序列数据库、Geospatial Analytics,以及dashDB数据仓库和商业智能/分析解决方案。

Bluemix中的一种业分析服务是Embeddable Reporting,它让你可以在自己的Bluemix环境里面运行IBM Cognos商业智能报表。业务分析服务在得到支持的JDBC数据源连接上运行。

在安全时代,Bluemix提供了AppScan for Web、AppScan for Android和SSO(单次登录)。SSO服务结合了BYO社交ID、IBM ID和多因子验证。

供你差遣的Bluemix

Bluemix服务有好多。遗憾的是,正如我们所见,其中许多仍处于试验阶段和测试阶段,或者受到的限制让它们并不适合大多数生产环境的应用程序。Watson也许是Bluemix相比其他Cloud Foundry解决方案最大的差异化因素,但都处于测试版阶段,基于上局限于很有限的领域。

幸好,其余服务往往非常可靠。我会毫不犹豫地在Bluemix上构建一个Web或移动项目,无论是为初创企业开发一个全新的应用程序,还是为需要整合遗留服务器和记录系统的企业开发一款老式应用程序。

不过,我会认真考虑应用程序在安全和监管方面的要求。Bluemix能满足欧盟的地理数据要求,因为它在伦敦设有一个数据中心。它最终可能会申请相关认证,以便在数据中心层面符合《联邦信息处理标准》(FIPS)、《健康可携性及责任性法案》(HIPAA)和《支付卡行业数据安全标准》(PCI-DSS)等标准;眼下,它在这些方面还处于起步阶段。

我给Bluemix打的分高于Cloud Foundry,因为它填补了开源Cloud Foundry解决方案的缺口。管理、安装和设置都更胜一筹,因为Bluemix在内部处理所有的繁重任务。我在说明文档方面给这两款产品打的分一样高;Bluemix编制的说明文档要详细一点,但仅仅是略微做得更好一点。

相关推荐