u011839206的专栏

从一个传说讲起

这是一个耳熟能详的传说:传说中,凤凰是人世间幸福的使者,每五百年,它就要背负着积累于人世间的所有不快和仇恨恩怨,投身于熊熊烈火中自焚,以生命和美丽的终结换取人世的祥和和幸福。在肉体经受了巨大的痛苦和轮回后它们才能获得更美好的躯体得以重生。佛教徒把这个故事称为“涅槃”。

的确,一切苦难和磨砺的尽头也是新的希望开始的地方。作为 IT 从业人员,特别是程序员的你,是否也想过或者期望经历这样的涅槃呢?如果你曾经或者现在正在经历如下的痛苦,那么 Bluemix 就是为你而准备的。

Bluemix 带来了什么

Bluemix 致力于解决上述在软件开发过程中遇到的问题,旨在帮助程序员更快速的开发,测试,部署和运维云平台应用。

什么是 Bluemix?

简单的讲,Bluemix 就是一个开放的公有云平台,允许程序员在上面运行几乎所有类型的应用,而不用为硬件,软件,网络等其他因素分心。如上文提到,Bluemix 处于云世界的中间层,也就是 PaaS 层。如下图所示:

图 1. Bluemix 扮演的角色

通常来讲,所谓 PaaS 指的是运行在 Iaas 层上的一系列软件服务,并把服务器平台或开发环境作为一种服务提供给用户,也就是“平台即服务”。Bluemix 运行在 IBM 的 IaaS 层产品 Softlayer 之上。Softlayer 在 2013 年被 IBM 收购,其主要为用户提供企业级的 IT 基础设施的建设和解决方案,无论是在性能还是在安全性上都有很高的质量保证,有兴趣的读者可以参考文章最后的资源链接进一步学习。用户的应用程序通过很简单的操作(大部分场景只需要一条简单的命令即可)就能部署应用到 Bluemix 环境里,程序员不需要去关心底层的操作系统,运行时,网络等等一切和 code 本身无关的东西,而可以把全部的精力放到程序的设计和优化上。

选择 Bluemix 的理由

Bluemix 作为 PaaS 层产品给程序员带来了很多的优势:第一,节省时间和精力,程序员可以把所有的心思都放在应用程序的编写和调优上,而不用去担心繁杂的平台基础架构和设施,更有利于发掘程序员的创造力,开发出更高质量,高性能的应用;第二,加速应用程序上线,在实际的操作中,只需要简单的几条命令或者 UI 界面的几次点击操作就能轻松的完成各种应用程序的部署,而完全不用去担心硬件采购,,软件安装等等这些先期准备工作;第三,很容易的满足应用程序对各种新功能和新服务的需求,IBM 及其合作伙伴负责提供优质的服务,程序员只需要简单的“绑定”操作就能将服务加入到应用程序中;第四,Bluemix 支持的语言,运行时,框架等都是程序员已经熟知的,采用 Bluemix 平台几乎不需要增加新的学习成本;最后一点是,Bluemix 底层采用 IaaS 是可以提供企业级需求的 Softlayer,可以有效的保证平台的高性能和高安全性。

目前,Bluemix 正处于公开测试阶段,程序员只需要简单的注册就能轻松的使用 Bluemix 提供的平台云服务。在测试阶段,每个注册账号可以获得 8G 的内存空间用来部署和运行足够多的应用,其中还包括多达 20 个云服务的使用权,注册网址是:

Bluemix 运行时和 Buildpacks

在 Bluemix 中程序运行时是以 Buildpacks 的形式提供给用户的,通过下面这张图,可以了解运行时和 Buildpack 的关系。

图 2. 图解 Buildpack

在 Bluemix 中自带四种 Bludpacks,分别是 Liberty for Java,Node.js,Ruby on Rails,Ruby Sinatra。如果部署的应用是上面四种语言之一,那么在部署应用的时候就不需要指定相应的 Buildpack,平台自身会根据部署的应用类型选择对应的 Buildpack。在本文开始的部分,我们提到 Bluemix 支持几乎所有类型的应用,那么除了上面四种应用,其他类型的应用又是通过什么方法进行部署呢?答案就是在部署应用的时候,明确的指定应用所需的 Buildpack 类型,这些 Buildpack 有的来自社区,有的来自程序员自己的开发,因为 Bluemix 是一个开放的云平台架构,允许第三方根据其标准去做一些客制化的拓展。下图所列的就是目前 Bluemi 支持的运行时类型。

图 3. 运行时(Runtimes)

Bluemix 提供的服务(Services)和功能插件(Add-Ons)

应用程序往往不是单独存在的,它需要额外的附加一些新的价值才能使其丰富起来,在 Bluemix 中这些应用程序的附加值是通过服务(Services)和功能插件(Add-Ons)来实现的。在 Bluemix 中,为程序员提供了分门别类的多种服务,这些服务主要包括:Web 和应用服务,移动开发服务,数据管理服务,大数据,DevOps 服务等等。Bluemix 可以做到以最小的代价将相应的服务添加到应用程序中,以此来丰富应用程序,这些操作既可以通过命令行,也可以通过基于浏览器的 UI 来完成。在使用过程中,用户可以创建多个服务的实例,同样多个应用也可以同时使用同一个服务实例。

功能插件(Add-Ons)可以理解成一种特殊的服务,这些功能插件是为运行时来提供更高层次的附加功能。用户可以根据自己的需求,选择应用是否连接到一个或者多个功能插件上,以此来丰富运行的应用程序。功能插件与服务的不同之处在于,同一个 Space 里,只能有一个功能插件实例,多个应用去连同一种功能插件的时候,实际上连的是同一个插件实例,共享同一份服务资源。

对于服务和功能插件来说,当某一个服务绑定到应用中,或者当应用连接到某一个功能插件上时,关于这个服务和功能插件的相关服务信息就会被写进一个成为“VCAP_SERVICES”的系统环境变量中,用户可以在代码里通过调用 System.getenv(“VCAP_SERVICES”) 来获取具体的信息,这些信息是遵循一定的格式的 JSON 字符串,例如对于某一个数据库的服务,读到的环境变量里主要就是数据库的连接信息,用户可以在应用程序里获取并建立与数据库的连接。

如何使用 Bluemix Java 运行时一定要记得挺身而出,即便帮不了忙,安慰也是最大的支持.

u011839206的专栏

相关文章:

你感兴趣的文章:

标签云: