详解 IBM Bluemix 端到端开发体验,ibmbluemix


概述

20136月底,IBM 发布了公有PaaS 云平台——BluemixIBM Bluemix是一个供开发人员在云中快速开发、创建、部署和管理应用程序,而不用关心底层基础架构的地方。在实际的使用中,只需要简单的几条命令或者控制台界面的几次点击操作就能轻松的完成整个应用程序生命周期的管理。IBM Bluemix为开发人员和企业用户提供了一整套的应用程序服务,通过与合作伙伴以及开源社区的合作,Bluemix提供了一系列高质量的云计算服务。Bluemix现在几乎可以提供应用程序整个生名周期所需要的一切服务,这些服务都是所见即所得,只需要简单的几个操作和很少的工作量就可以快速的加入到应用程序中,帮助并加快应用程序开发和上线,简化运维。


本文将从一个开发人员的角度,重点介绍Bluemix端到端的开发体验,全文会通过一个实际的例子,将Bluemix平台从前端到后台以及各种开发工具串联起来,力争给读者一个完整的全面的端到端体验。


建议初次接触Bluemix的读者首先阅读笔者的另一篇文章《初探 IBM Bluemix 带您领略平台云》,该篇文章详细介绍了有关Bluemix的基本概念和理论,读完更有利于理解本文以下的内容。

环境准备及相关账号申请

1. 申请GitHub账号

本文用到的应用程序的源码是托管的GitHub上的,请自行申请GitHub账号,申请地址:https://github.com/

2. 注册Bluemix公有云账号

申请地址:http://www.bluemix.net 在页面右上角点击SIGN UP,填写相关信息提交申请,Bluemix会发一封确认邮件到注册邮箱,需要手工进入注册邮箱点击确认,才能成功注册。

3. 安装Eclipse

建议安装4.3.1及以后版本

4. 安装CloudFoundry 命令行工具

通过此工具,可以使用命令行与Bluemix云环境进行交互,参考 http://docs.cloudfoundry.org/devguide/installcf/install-go-cli.html

5. 安装 IBM Eclipse Tools for Bluemix

这是一个Eclipse插件,使用这个插件可以在Eclipse里开发应用程序,并将应用程序通过此插件部署到远程的云环境Bluemix上,安装方法是:打开Eclipse,点击Help > Eclipse Marketplace, 在搜索框里搜索“Bluemix”就可以检索到此插件,然后根据提示安装,安装完成后需要重启Eclipse。如下图:

图 1. 安装IBM Eclipse Tools for Bluemix



6.  安装EGit for Eclipse插件

通过EGit插件,可以从Eclipse中连接Git仓库,进行代码的托管和团队开发管理。安装方法如下:打开Eclipse,击Help > Eclipse Marketplace, 在搜索框里搜索“EGit”就可以检索到此插件,根据提示完成安装即可。

7.  克隆应用程序源码

本文会用到一个名叫“BlueTrader”的J2EE应用,它是一个模拟股票交易的软件,主要使用JSPServlet实现,后台需要DB2数据库(读者不需要安装,一切都由Bluemix提供),在本文演示过程中,会设计到多个Bluemix提供的运行时和服务,包括Websphere Liberty运行时、数据库服务SQLDBDB2)、弹性伸缩服务Auto-Scaling、日志监控和分析服务Monitoring and Analytics以及用来修改Trace和生成Dump文件的Runtime Management Utility功能等等。除此之外,本文还将演示如何通过Bluemix 控制台、Eclipse Tools for BluemixIBM DevOps ServicesCloudFoundry 命令行工具与Bluemix进行交互,这些工具或者服务相互补充,共同为开发者提供了完整并且友好的开发、部署和管理云应用的功能。在实际的开发过程中,读者也许不会同时全部使用这些功能,本文将它们集合在一个实例中,力争向读者介绍一个完整的端到端的Bluemix开发体验。下图是本文实例框架图:

图 2. 演示实例架构图


请读者使用第一步申请的GitHub账号访问并登陆BlueTrader 所在的仓库,地址是 https://github.com/acostry/BlueTrader-E2E-Bluemix,点击右上角的“Fork”将BlueTrader克隆到自己工作空间里。如下图:


图 3克隆BlueTrader源码



初探Bluemix

在正式开始实例之前,先带大家从总体上了解一下Bluemix,这里主要通过Bluemix 控制台来介绍,Bluemix是一个公有PaaS云平台,用户只需要注册一个账号以及一个可以联网的浏览器就能使用到Bluemix提供的各种云服务,用户只需要关心和应用相关的内容,而不需要去关心整个IT设施的底层架构,编写少量代码,并使用Bluemix提供的运行时和云服务就可以来组装并运行属于自己的云应用。


登录Bluemix

在浏览器中访问Bluemix全球站点http://www.bluemix.net, 点击右上角的“LOG IN”,输入已经注册成功的Bluemix账号和密码就能登录到Bluemix的控制台,第一次登录成功后的页面时这样的:

图 4首次登录Bluemix控制台



对于免费用户,Bluemix提供了30天的试用,有2 GB内存可以用来运行应用程序,通常一个J2EE应用默认需要512M内容,Ruby/Go/PHP等需要的会比较少,读者可以根据自己应用的实际情况来分配内存,这些都是可以动态调整的。

Bluemix控制台介绍

Bluemix控制台的主页主要包含了以下内容:

ORGSpace:在Bluemix里以ORGSpace来隔离不同的用户使用空间以及进行权限控制。

DASHBOARD:用户对应用程序和服务的操作都在这个页面完成

CATALOG:详细列出了Bluemix提供的运行时和服务

PRICING:定义收费相关的信息

DOCS: Bluemix使用文档

COMMUNITYBluemix社区,可以提问并且可以Bluemix开发人员交流

REGION:支持在多区域以及多个数据中心使用Bluemix

除了以上内容,剩下的是对应用和服务的管理以及具体展示。


快速创建模板应用

Bluemix的一个特点就是可以快速的创建应用并将应用运行在云的环境里,用户不需要自己搭建任何运行时环境,应用所需的运行时以及类似数据库的各种服务都由Bluemix来提供,用户只需要操作几次鼠标就能将一个模板应用运行在Bluemix上,剩下的就是对模板应用进行修改,添加业务逻辑,然后借助Bluemix提供的各种工具,快速的将包含业务逻辑的应用部署到云上,大大加快了应用程序的上线时间。在Bluemix上创建一个应用步骤是:


1. 登录Bluemix控制台

2. 在DASHBOARD页面点击CREATE AN APP,页面会跳转至CATALOG页面,我们在这里创建一个运行在Liberty上的J2EE应用,单击选择Liberty运行时,如下图:

图 5选择Liberty运行时


3. 在详细配置页面,需要为应用设置一个名字以及访问地址(Host),如下图红框所示,需要主要的是,需要保证应用程序的访问地址是唯一的,以防和其他应用的用户产生冲突。点击CREATE


图 6配置应用信息



4. 当点击完CREATE后,Bluemix就开始自动创建应用并将应用自动部署在Liberty运行时上,应用运行所需的一切资源(运行时、JDK、服务)都会被自动的创建和配置,等待数秒,创建的应用就运行在Bluemix上了,点击下图的红框处就能访问刚刚创建成功的应用了。


图 7应用详细信息



通过以上几步的操作,用户需要关心任何底层架构以及服务器,运行时等的搭建和配置,只需要关注在应用程序的配置上,就能很快的将一个J2EE的应用创建并部署在Bluemix上,当然,此时的应用仅仅是一个没有任何业务逻辑的模板,只是为了让读者很快的了解到Bluemix带来的一些变化和便利,我们需要对应用程序进行进一步的开发,添加逻辑,然后再将应用部署在云上,才能完成应用程序的开发过程。具体的方法是在上图中点击“VIEW QUICK START”会弹出一个帮助窗口,如下图:


图 8QUICK START


点击“Download the starter application package”下载模板引用的压缩包到本地,然后再倒入到Eclipse里进行本地业务逻辑开发,工程结构是:

图 9. 模板应用工程结构


Eclipse开发/部署应用到Bluemix

除了上面介绍的在模板应用的基础上开发应用外,大部分的开发人员都是从Eclipse里创建或者导入已有工程开始进行编程的。在本节中将读者介绍如何在本地Eclipse中开发和部署应用,并从Eclipse部署应用到云端,这其中需要用到本文之前提到的IBM Eclipse Tools for Bluemix 以及存放在GitHub上的BlueTrader.zip文件。BlueTrader是一个已经开发完成的应用,读者可以直接部署该应用到Bluemix上。


导入工程到Eclipse

打开安装完成的Eclipse,选择 File > Import >General>Existing Projects into Workspace>Select archive file, 选择下载到本地的BlueTrader.zip文件。如果出现编译错误,请将Eclipse的编译级别改成1.6或以上(建议1.7)。

图 10. BlueTrader工程结构


创建Bluemix服务器定义

要想从Eclipse部署BlueTraderBluemix,需要利用之前安装的Bluemix插件来创建一个Bluemix服务器定义

选择 Window> Show View > Servers 打开Servers 视图

图 11. 打开Servers视图


 

Servers空白部分,点击右键,选择 New > Server,并在Servers列表里选中IBM Bluemix

图 12. 选择IBM Bluemix类型


点击Next进入IBM Bluemix Account配置页面,输入之前申请的Bluemix账号信息,如下图:

图 13. 配置IBM Bluemix账户


点击Next,接下来的配置保持默认,完成Bluemix Server的定义。在Servers 视图里会新增一条Bluemix的定义。

图 14. IBM Bluemix定义


关于BlueTrader使用数据库服务的一些说明


在文章开头介绍BlueTrader的时候提到过,BlueTrader运行是需要后台数据库支持的,该数据库类型是DB2,由Bluemix来提供,要使用这个数据库服务,我们需要在编写代码的时候做一点点工作,其中之一就是确定应用使用数据库服务的方式。在Bluemix里支持两种数据库的使用方式:

创建数据源的方式

这种方式,是用户在代码里定义好使用的数据源,比如BlueTrader定义了一个名为“TradeDataSource”的数据源,当在Bluemix中为BlueTrader绑定数据库服务的时候,需要创建一个同样名字的数据库实例,Bluemix会根据名字将BlueTrader和后台的数据库实例建立关联,这一步很重要,如果名字不同,那么BlueTrader就会找不到合适的数据库来使用。

JDBC连接串的方式

当在Bluemix中为应用程序绑定数据库服务的时候,会同时将数据库的连接信息(hostname, dbname, usernamd, password 等)写在一个名为“VCAP_SERVICES”的环境变量里,这就要求用户在程序里使用System.getenv("VCAP_SREVICES") 去读取这些连接信息,然后将这些信息解析出来,拼一个数据库JDBC连接串连接数据库。下面是一个环境变量的例子:

{

   "sqldb": [

      {

         "name": "TradeDataSource",

         "label": "sqldb",

         "plan": "sqldb_free",

         "credentials": {

            "port": 50000,

            "db": "SQLDB",

            "username": "user00969",

            "host": "75.126.155.153",

            "hostname": "75.126.155.153",

            "jdbcurl": "jdbc:db2://75.126.155.153:50000/SQLDB",

            "uri": "db2://user00969:PLsxUPGyIgAR@75.126.155.153:50000/SQLDB",

            "password": "PLsxUPGyIgAR"

         }

      }

   ]

}


BlueTrader使用的是数据源的方式,对于第二种方式,如果读者有兴趣可以参考Bluemix的文档了解更详细的信息。


部署BlueTraderBluemix

部署应用到Bluemix一共有两种方式,第一种是直接拖拽应用名称到Servers 视图里的IBM Bluemix图标;第二种是在Servers视图里右击IBM Bluemix,选择“Add and Remove”,在弹出窗口的左侧选中需要部署的应用,点击“Add”添加到右侧的配置框里。

图 15. 部署应用到Bluemix


单击“Finish”,会弹出应用的详细配置窗口,首先设置应用的名字,建议用户自行修改,并保证该名字在云上的唯一性,可以避免和其他用户的程序产生冲突。

图 16. 设置应用名称


点击“Next”,配置应用部署的信息,基本保持默认就可以

图 17. 配置应用部署信息


点击“Next”进入服务配置页面,点击下图红框处可以实时的将服务和应用绑定在一起,比如BlueTrader所需的数据库服务,由于后面我们会演示如何通过Bluemix控制台绑定服务,所以此处留空。

图 18. 绑定云服务


点击“Finish”就会触发部署过程,在EclipseConsole 视图可以看到实时的日志输出,由于目前Bluemix的数据中心在国外,因为网络原因,所以部署过程会慢一点,大概需要1分钟左右(依赖于网速本身)。部署成功以后,会在Servers视图里看到应用的状态:

图 19. 成功部署BlueTrader


通过Bluemix控制台创建服务并绑定到应用

登录Bluemix控制台,在“DASHBORAD”页面,会看到我们刚刚部署成功的BlueTrader

图 20. Bluemix应用列表


点击上图红框的位置,进入应用的详细信息页面,点击左侧的“Overview”,在右侧的页面中可以看到“ADD A SERVICE”和“BIND A SERVICE”,如果之前创建过服务实例,则选择“BIND A SERVICE”去绑定一个已经存在服务,如果没有,则选择“ADD A SERVICE”创建并绑定一个新的服务实例。

图 21. 应用总览


点击“ADD A SERVICE”进入服务选择列表,选择DB2数据库服务 Data Management > SQL Database

图 22. 选择SQL Database服务


在数据库服务的配置页面,设置服务名称为“TradeDataSource

图 23. 设置服务名称


点击“CREATE”,Bluemix会自动创建一个数据库实例,并绑定到应用程序上,如果出现“Restage Application”的提示,点击OK,激活数据库服务。

图 24. Restage应用程序


访问并浏览BlueTrader

等待“Restage”过程结束,点击页面左侧的“Liberty for Java”可以看到数据库服务的连接信息,点击Overview  > ROUTES来访问BlueTrader应用。(或者直接在浏览器输入:http://bluetrader20141218.mybluemix.net/

图 24. BlueTrader主页



要使用BlueTrader模拟股票交易,首先需要初始化数据库,创建数据库表并向表里插入一些用来模拟的用户以及股票信息,在BlueTrader主页点击Trading&Portfolio > Populate DB first!


图 25. 初始化数据库

等待初始化数据库完成以后,回到“Trading&Portfolio”页面,点击“Log In”登录BlueTrader,用户名是:“uid:0, uid:1, uid:2.....” 密码统一是:“xxx”,登录后进入用户主页面:

图 26. 用户主页面


接下来用户就可以模拟股票交易的操作了,在这里就不详细介绍了,有兴趣的读者可以自行操作。

到此,BlueTrader就已经完全运行在Bluemix上了。


修改Trace以及生产Dump文件

在进行问题诊断的时候,TraceDump文件会对问题的解决有很大帮助,Bluemix提供了图形化的支持来帮助用户修改应用程序的Trace和生成多种Dump文件,具体的使用方法是:

回到Bluemix控制台,进入到BlueTrader应用的Overview页面:

图 27. BlueTrader运行时信息展示


Instance Details列表里选中要操作的instance,并点击“ACTIONS”按钮,选择相应的操作,比如DUMP:

图 28. 选择生成DUMP


选择要生成的DUMP的类型,点击“GENERATE DUMP”按钮生成相应的DUMP文件,该DUMP文件可以下载到本地,借助专门的工具进行分析和问题诊断。

图 29. 生成DUMP文件


修改Trace的方法和生成DUMP的操作是一致的,读者可以自行尝试修改。

使用弹性伸缩服务


弹性伸缩服务(Auto-Scaling)可以根据用户自定义的策略(内存/Heap/CPU)来自动的增加和减少运行时实例的数量。当用户访问量增加,现有运行时资源处理不了的时候,自动的增加实例的数量来增加处理能力,当用户访问量减少,自动的减去不必要的实例数量,节省资源的利用。

要使用Auto-Scaling服务,首先需要将这个服务绑定到应用上,绑定方法请参照上文介绍的绑定数据库服务的例子,在应用程序Overview页面,点击“Add a Service”,在服务列表中选择“Auto-Scaling”服务:

图 30. 绑定Auto-Scaling服务


绑定成功后,Auto-Scaling服务的图标会出现在应用程序的Overview页面:

图 31. Auto-Scaling服务


点击上图Auto-Scaling图标进入服务的详细配置页面,在这里用户需要自定义弹性伸缩的策略,当策略的某一个条件被符合的时候,Auto-Scaling服务就会自动的增加或者减少一个或多个运行时实例来满足不同的访问需求。

图 32. 设置Auto-Scaling策略


关于Auto-Scaling的配置又是一个比较复杂的命题,本文的关注点在端到端的开发体验,这部分的内容就不再详细介绍,在后续的文章里会覆盖这方面的内容,在Bluemix的文档里可以找到详细的描述。

使用监控和日志分析服务

Bluemix控制台上可以简单查看关于应用的一些日志,如下图所示:

图 33. 查看日志


但是这些日志显示的内容有限,而且这些日志并不是持久化的,当重启应用的时候,这些日志会被删除,如果我们想更好的去查看分析日志,并且将日志持久化下来,那么就需要绑定Bluemix提供的监控和日志分析服务(Monitoring and Analytics)。参照上文,在应用程序Overview页面点击“Add a Service”绑定Monitoring and Analytics服务到BlueTrader.

图 34. 绑定监控和日志分析服务


同样,在BlueTraderOverview页面,点击Monitoring and Analytics图标,进入到监控和日子分析服务的详细页面,在这里页面里可以查看应用程序的一些状态信息,并且可以对应用进行性能监控和日志分析。

图 35. 使用监控和日志分析服务


使用CloudFoundry命令行工具管理云应用

假设用户已经提前安装好了最新的CloudFoundry的命令行工具,本节来演示如何通过命令行工具与Bluemix 进行交互,在Bluemix控制台上做的所有事情,都可以通过命令行来代替。


连接到Bluemix

打开windows命令行窗口cmd,运行如下命令连接到Bluemix上:

 

C:\Users\IBM_ADMIN>cf api https://api.ng.bluemix.net

Setting api endpoint to https://api.ng.bluemix.net...

OK

登录Bluemix

运行cf login命令,输入之前注册的Bluemix账号登录:

 

C:\Users\IBM_ADMIN>cf login

API endpoint: https://api.ng.bluemix.net

 

Email> bluemix_dev@163.com

 

Password>

Authenticating...

OK

 

Targeted org bluemix_dev@163.com

 

Targeted space dev

 

API endpoint:   https://api.ng.bluemix.net (API version: 2.14.0)

User:           bluemix_dev@163.com

Org:            bluemix_dev@163.com

Space:          dev

 

登录成功后,读者可以运行 cf -h来获取帮助信息,下文简单介绍几个和应用相关的命令。


列出Bluemix上运行的应用

使用 cf apps 列出Bluemix上已经部署的应用:

 

C:\Users\IBM_ADMIN>cf apps

Getting apps in org bluemix_dev@163.com / space dev as bluemix_dev@163.com...

OK

 

name                 requested state   instances   memory   disk   urls

BlueTrader20141218   started           1/1         512M     1G     BlueTrader201

41218.mybluemix.net

j2ee-csdn            started           1/1         512M     1G     j2ee-csdn.myb

luemix.net

 

前文已经在Bluemix上部署了两个应用,如上所示。


部署应用到Bluemix


使用 cf push命令,可以从命令行部署应用到Bluemix,这里还以BlueTrader为例,由于上文中已经部署过BlueTrader,所以如果我们相同的应用名称再次部署的话,Bluemix会用新的war去更新已经存在的部署。所以,更新应用和部署应用其实是一条相同的命令。为了看出这种差别,我们对BlueTrader进行一些修改:

打开Eclipse,编辑BlueTrader > WebContent > topBanner.html 对该文件做如下修改:

修改“BlueTrader”为“BlueTraderCMD

图 36. 修改BlueTrader


保存修改,并将修改好的BlueTrader应用导出成BlueTraderCMD.war到本地。

 

使用如下命令去部署并更新我们之前已经部署好的BlueTrader应用。(注意应用的名字要上文用到的保持一致)

 

C:\Users\IBM_ADMIN>cf push BlueTrader20141218 -p C:\A_Workspace\BlueTraderCMD.war

 

Updating app BlueTrader20141218 in org bluemix_dev@163.com / space dev as bluemi

x_dev@163.com...

OK

 

Uploading BlueTrader20141218...

Uploading app files from: C:\A_Workspace\BlueTraderCMD.war

Uploading 1.2M, 203 files

Done uploading

OK

 

Stopping app BlueTrader20141218 in org bluemix_dev@163.com / space dev as bluemi

x_dev@163.com...

OK

 

Starting app BlueTrader20141218 in org bluemix_dev@163.com / space dev as bluemi

x_dev@163.com...

 

 

-----> Liberty Buildpack Version: v1.9-20141202-0947

-----> Retrieving IBM 1.7.1 JRE (ibm-java-jre-7.1-1.0-pxa6470_27sr2ifx-20141115_

01-sfj.tgz) ... (0.0s)

-----> Retrieving App Management Agent 1.0.0_master (com.ibm.ws.cloudoe.app-mgmt

-liberty.zip) ... (0.0s)

-----> Retrieving com.ibm.ws.liberty-2014.11.0.0-201412020947.tar.gz ... (0.0s)

-----> Retrieving and installing client jar(s) from com.ibm.ws.icap.clientJars.d

b2.zip (0.0s)

-----> Auto-configuration is creating config for service instance 'TradeDataSour

ce' of type 'SQLDB'

-----> Liberty buildpack is done creating the droplet

-----> Uploading droplet (122M)

 

0 of 1 instances running, 1 starting

1 of 1 instances running

 

App started

 

 

OK

 

App BlueTrader20141218 was started using this command `.liberty/initial_startup.

rb`

 

Showing health and status for app BlueTrader20141218 in org bluemix_dev@163.com

/ space dev as bluemix_dev@163.com...

OK

 

requested state: started

instances: 1/1

usage: 512M x 1 instances

urls: BlueTrader20141218.mybluemix.net

last uploaded: Fri Dec 19 05:15:19 +0000 2014

 

     state     since                    cpu    memory           disk

#0   running   2014-12-19 01:16:17 PM   0.5%   102.9M of 512M   166.8M of 1G

 

在浏览器中访问BlueTrader,或者刷新之前打开的BlueTrader主页,可以再主页的最上方看到对BlueTrader的修改已经生效。

图 37. 更新后的BlueTrader


如果用户想了解更多的cf 命令的使用,可以参考cf命令行的相关文档进行学习。

使用DevOps服务来简化运维和加速应用程序的开发

DevOps服务是Bluemix平台提供的服务之一,主要用来简化应用程序的运维,代码托管,以及通过一些工具来加速应用程序的上线和更新。使用方法是:第一,可以通过在Bluemix控制台绑定服务的方式来使用;第二,访问DevOps站点,创建应用程序的仓库并上传应用代码到应用仓库,并且做一些配置和Bluemix进行关联。第二种方法更符合开发人员的使用习惯,所以在这里重点介绍第二种方法。


登录DevOps服务

使用前文Bluemix的账户可以直接登录DevOps服务,网址是:https://hub.jazz.net/

点击SIGN IN > Sign in with your IBM id 使用Bluemix账号和密码登录,第一次登录会提示创建一个新的Jazz ID, 任意输入唯一用户名,点击“Create

图 38. 创建Jazz ID


创建新工程

DevOps服务主页点击“Start coding”创建一个新的工程(仓库):

图 39. 创建新工程


在新工程配置页面,做如下配置:

工程名称:BlueTrader

Code site: Create a Git repository

选中“Private”“Add features for Scrum development”以及“Deploy to Bluemix”,点击“CERATE”,如下图所示:

图 40. 配置DevOps工程一


图 41. 配置DevOps工程二


创建成功以后,Bluemix账号的注册邮箱里会收到一封信,内容是关于新创建工程的,因为我们创建的是一个Git仓库,请读者自行根据信里关于Git的描述,利用EGit插件或者Git命令行工具,将我们在Eclipse里开发的BlueTrader的代码上传到创建的DevOps工程里。如果不了解Git的使用方法,可以参考学习:https://hub.jazz.net/docs/reference/gitclient/

当成功上传代码到DevOps服务以后,打开新创建的BlueTrader工程的主页面,可以看到上传成功的代码:

图 42. 提交BlueTrader源码到DevOps服务


配置BUILD & DEPLOY

要想从DevOps部署BlueTraderBluemix,需要做一些配置,点击上图中的BUILD&DEPLOY,在弹出的页面上点击ADVANCED进入配置页面

图 43. 配置BUILD & DEPLOY


点击“add a builder”为BlueTrader应用设置一个构建程序,在这里我们选用Ant做为构建工具,根据我们的工程名称,参照下图配置,DevOps会自动生成用户构建应用使用的build.xml文件。

图 44. 添加Builder


接下来,需要添加一个stage,用来配置一些应用程序在部署时的属性,点击“add a stage”进入配置页面,在这个页面里,除了要配置Bluemix的信息外,还要指定和部署应用相关的信息,我们不准备部署一个新的BlueTrader,因为在上文已经部署过一个,所以在这里我们把“Application Name”设置为上文部署的应用的名称,并对“Script”做了一点修改。如果读者还想对部署应用有更多的设置,比如还想为应用程序分配内存,或者部署的时候部署多个实例,可以修改“Script”或者在应用程序根目录添加一个manifest.yml文件来指定,具体的细节请参照相关链接学习。

图 45. 添加Stage


点击“SAVE”完成配置工作,回到“BUILD&DEPLOY”主页面,如下图,可以看到我们刚刚做的配置, 并且DevOps服务自动检测到我们之前部署的同名的BlueTrader应用,并将其状态展示在stage列表里。这时可以点击“REQUEST BUILD”对应用程序进行自动构建,当构建好应用安装包后,DevOps服务会根据stage配置,自动将新的安装包更新部署到Bluemix上。

图 46. REQUEST BUILD and DEPLOY


打包加部署过程大概需要1-2分钟,部署成功后,可以访问BlueTrader进行验证。


在浏览器中调试代码并将更改实时更新到Bluemix


DevOps服务还提供了一个基于浏览器的IDE,支持用户在浏览器里调试代码,加上我们上文配置的自动部署功能,用户对代码的修改可以实时的更新到Bluemix,这一切工作都可以通过浏览器来完成,也就是说,用户不必随身携带笨重的电脑,是需要一个可以支持浏览器的移动设备(手机或者平板电脑灯)就可以完成代码的修改和应用程序的部署了。

点击BlueTrader代码仓库页面右上角的“DEIT CODE”进去基于浏览器的IDE,在这里演示如何修改一个HTML页面,并且展示这个修改如何实时的自动的更新到Bluemix上。还记得我们上文修改过的topBanner.html文件吧,在这里我们同样修改这个文件,修改如下:

图 47. 在浏览器中修改BlueTrader


当修改完成后,DevOps会自动保存修改,此时的修改并没有完成提交,点击左侧的“Git”按钮,进入代码修改提交页面,在这个页面,可以看到代码修改的详细信息。

图 48. 提交修改页面


要想完成代码提交,需要完成两步操作:第一,在工作目录更改窗口,输入落实信息,并选择要落实的文件,点击右上角的“落实”;第二,点击“落实”后,新的提交会显示在左侧“传出”窗口,点击“推送”完成提交。

图 49. 完成代码提交一


图 50. 完成代码提交二


推送完成后,立即点击右上角的“BUILD&DEPLOY”按钮,可以看到DevOps服务检查到了我们的提交,并立刻执行构建程序,生成新的安装包,然后自动触发部署程序将新的安装包部署更新的Bluemix上(这个自动的过程是可以取消的,在配置BuilderStage页面设置),如下图红框所示:

图 51. DevOps服务自动构建并部署应用


等待部署完成后,点击应用程序BlueTrader的访问链接,得到最新的修改版本,如下图:

图 52. 再次更新后的BlueTrader


从上图可以验证,通过浏览器IDE的修改已经生效并运行在Bluemix云平台上了。

总结

通过上文的介绍,相信读者对Bluemix端到端的开发和使用有了一个比较详细的了解,由于篇幅有限,很多的细节都没能一一介绍,读者可以通过留言或者邮件的方式寻求帮助,也可以自行查看Bluemix相关的文档学习。


通过这篇文章的介绍,可以看出Bluemix确实对传统的软件开发、部署以及运维进行了一些创新性的改变,特别是给程序员开发应用带来了很多便利,程序员可以把更多的精力放在应用逻辑代码的开发上,而不用分心诸如运行时环境搭建,后台服务配置等等这些琐碎的事情上,但是同时也要看到,Bluemix在平台云这条道路上才刚刚起步,有很多不够完善的地方,还有很多的工作需要完成。希望本文可以做为一个引子,帮助大家去了解平台云给软件开发带来的变化,共同去推进云计算,特别是公有平台云健康发展。


目前,公有云平台的厂商越来越多,竞争也越来越激烈,国内有阿里云,国外有亚马逊、微软、谷歌等,这些厂商提供的公有云平台各有利弊,笔者做为IBM Bluemix从业人员,不要探讨这些产品利弊,在这里只想谈谈Bluemix的优势,一家之言,仅供参考,欢迎大家讨论赐教,指出不足。Bluemix的优点可以总结为:

  • 依赖与IBM广泛的软件产品,Bluemix将这些产品(例如:Watson)以服务的形式整合在云平台上,用户可以很方便的使用,这些服务所见即所得,可以很好的支撑用户的业务发展。
  • Bluemix底层是Softlayer,提供企业级的安全保障
  • Bluemix近期推出了除了公有云版本之外的“企业专有版”(Dedicated Bluemix),适用于那些对安全问题要求比较高的用户
  • 支持多种开发工具(桌面IDE以及浏览器开发等)

作者介绍

朱修磊,IBM 软件工程师,目前从事IBM 共有平台云Bluemix相关的工作,您可以通过 xiuleizh@cn.ibm.com 与其联系。

GitHub: https://github.com/acostry

技术博客:https://www.ibm.com/developerworks/community/blogs/acostry/?lang=en

Weibo: @acostry

Twitter: @acostry

相关内容