IBM WAS团队:为什么要开发Liberty?

个人简介 张真,IBM WebSphere高级软件工程师,毕业于北京大学,获得计算机软件工程专业硕士学位。他于2009年加入IBM中国开发实验室,现在是WebSphere应用服务器高级软件工程师,负责IBM WebSphere应用服务器包括传统WAS,下一代轻量级JEE应用服务器Liberty等的设计与开发,关注于应用服务器对云计算,移动平台的支持,并为客户提供技术咨询和服务。在此之前他在IBM中国开发中心还负责和参与了一系列WebSphere产品的研发和创新。同时也为多个开源社区贡献力量,比如Cloud Foundry、Apache CXF、Apache Wink、OS30PaaS、eTouchTop WebOS等等。他还拥有多个国际国内专利,也发表过多篇专利技术文章,涵盖多个领域,个人爱好是喜欢风景旅游,体会和感悟自然,曾自驾澳洲大洋路全程600多公里;喜欢打羽毛球,乒乓等等注重实战技巧的运动。

QCon是由InfoQ主办的全球顶级技术盛会,每年在伦敦、北京、东京、纽约、圣保罗、杭州、旧金山召开。自2007年3月份首次举办以来,已经有包括传统制造、金融、电信、互联网、航空航天等领域的近万名架构师、项目经理、团队领导者和高级开发人员参加过QCon大会。

   

1. 各位观众朋友们好,我是InfoQ主持人,现在在QCon北京2014大会现场。今天十分荣幸的邀请到IBM资深工程师Alex Zhang接受我们的采访。那么首先请Alex介绍一下自己。

Alex:好的。我来自于IBM CDL北京,现在是在WebSphere Application Server这个团队里面工作,我现在主要工作内容是在IBM新一代的轻量级应用服务器Liberty Profile上面。

   

2. 能不能先简单介绍一下Liberty是一个怎么样的项目?可不可以理解为它就是一个轻量级的、完全重写的Java容器?

Alex:是这样的,Liberty它确实是一个轻量级的应用服务器,主要是基于一种松散架构。我们大家都知道,其实传统的应用服务器,包括IBM自己的传统WAS在内,原则上来说都不可以理解为是一种松散的架构。但是随着现在——特别是云计算技术的发展,对于这种松散架构的应用服务器的需求就越来越大了。

怎么去理解这种松散式的这种架构呢?Liberty提供了一种能力,就是我们怎么体现我们的轻量。有几个方面,第一个方面,我们在它的物理的存储上要小。大家都知道传统应用服务器其实比较大的,几百兆、一个G;但Liberty可以把它的包做到只有50M。还有就是在内存上面,我们消耗的不是说少,而是说合理的去消耗内存。这一点也是体现它的松散性。还有一点,它有一个动态特性:在传统的应用服务器里面,当你去使用一些功能,比如说我们有三个功能,那在传统应用服务器里面,这三个功能可能在服务器启动的时候都是具备的,但其实可能你只使用了三个功能中的一个,那对于另外两个功能来说,就造成一种无形的消耗。但是Liberty呢,假如说你只需要其中一个功能,那Liberty允许你可以配置成只要一个功能的启动,这样就优化了整个的启动过程,在运行时能达到更高的效果。这就是Liberty的轻量,所以我们称之为一种新型的轻量级的应用服务器。当然它还是按照Java EE那些规范去支持,比如说我们支持Servlet,支持JMX、JMS等等。

   

3. 所以我们在不同的应用需求的时候,可以把不同的配置拿到不同的容器,可以这么理解吗?

Alex:对。

   

4. 简单介绍一下Liberty的历史吧,它是什么时候开始的?最初项目启动的时候,它的目标是什么?包括它技术上的一些目标?

Alex:Liberty大概是在2011年左右开始启动的,它这个启动的过程其实也是比较艰难。我们都知道IBM有一传统的WAS,现在Liberty的Senior Architect Alex M ulholland,他因为看到了未来技术的发展,当然也看到了传统WAS一些相应的局限性,所以他考虑到这样的因素,就觉得我们是不是应该面向一种轻量化的(场景)。特别是我们的一些挑战者,比如说Tomcat这种最经典的挑战者,就是我们是不是能够提供一些像Tomcat一样轻量化的应用服务器,所以在那个时候开始启动了Liberty这样一个项目。

这个项目在启动之初,正如我所说,除了应对Tomcat以外,其实还有一点,因为那个时候云计算已经开始起步了,在云计算上面,IBM做了非常多的尝试。在早期的我们一些云计算平台上面,我们也是用传统WAS去把它作为Java的运行时容器去做,但是发现了很多的问题。比如说它的介质太大,可能每次传输我都要花上半个小时、一个小时才能传过去;然后要把它部署好,而它整个调度、运行的时间上也是相对长一些的。那么在这种局限性下面,也使的我们更需要一个轻量化的,比如说这种松散架构的应用服务器的出现,才能够去解决我们遇到的这些问题。

   

5. 是否方便介绍一下Liberty研发团队现在的规模和分布?

Alex:Liberty现在是这样的,大概我们可以分成四个区域。现在主要是有英国的团队,美国的团队,然后在中国和印度也都有团队。当然大家做的事情可能不太一样,比如说像英国团队他们主要是,因为Senior Architect就是从英国团队出来的,所以他们可能会有一些高层面的设计、思想,然后再交给其他的团队去做一些比较基础的设计和实现。美国团队主要关注应用、提供Service这方面。印度的团队比较关注的是,因为他们印度有JDK的Team,所以他会比较关注于一些跟JDK相关的,就是Liberty跟JDK之间的一些事情。然后像中国这边,主要也是提供Service,不过就是在SOA中比较经典的Web Service,这是中国团队主要在做的一些事情。那包括有JAX-WS、JAX-RS这些,就是Java EE的一些规范。

   

6. 您自己是怎么加入这个项目的?

Alex:这个也体现了,可能在过去的一两年,或者在未来的两三年,IBM文化的变化。起初我加入IBM公司的时候,我感觉是一种自上而下的方式,就是说,基本上美国团队叫你做什么,那你就做什么。但是现在呢,慢慢的IBM的文化会转化成一种非常像社区的文化。社区的文化就是说,你如果能够贡献,那你就来贡献——只要得到别人的认可。作为中国团队来说,也是经过我们很多经理的努力,比如说有Billy Huang,还有我当时的Manager 兆兵等等,他们的努力,然后去证明我们中国团队有这个能力,能够去在Liberty去做这样的贡献,那么我们就争取到了那些我们现在可以做的——我刚刚说的那些——在SOA里面比较重要的Web Service等工作。

   

7. 所以还是一个主动去投入、去争取的过程。

Alex:对,因为他这个模式的转变,就变成不是说安排任务一样大家下来做,因为有可能安排任务下来做也不见得特别高效,反而是去看说谁有兴趣做这个事情、有能力去贡献这个事情,去做,那可能会更加好一些。

   

8. 嗯。那么Liberty它还是属于WAS的一个——算是延伸还是子项目之类的?你们跟传统的WAS团队是一个什么样的关系?

Alex:我们就是WAS团队。其实现在是这样的,传统WAS和Liberty现在是两条腿一起走路。目前IBM对于他们的定位是有所区分的。虽然他们都支持同样的技术规范,但是定位为什么不一样呢?现在很多传统的行业,比如像银行、通讯业,虽然云计算现在走的很快,但是作为他们这种传统行业,不管是从计算数据还是规模来说,都太庞大了,包括它的系统,所以他很难在短期内——一两年或者两三年内——就突然就转变成一个云计算的模式,不是的。所以现在的传统WAS主要还是专注于去服务这种传统性的行业,因为他们更多的系统用这种方式去做起来更合适一些。

Liberty它目前主要的定位是,我们要面向一个轻量级、高效部署,然后能够松散式架构的一种应用服务器的模式,所以他不会说是一定会跟传统WAS之间有谁比谁更好的比较,因为他们的定位不一样。

   

9. 所以是相对独立的两个开发团队?

Alex:应该不能叫相对独立吧。我为什么说我们也是WAS Team,是因为我们也做传统WAS。比如我们做Web Service这块,我们既要做传统WAS的Web Service,也要做Liberty上的Web Service,是这样一个关系。当然我们对于我们的客户是有承诺的,因为也许将来有一天,当然这只是也许,我们期望这样,就是将来有一天,就是随着云计算的发展,像IBM BlueMix的推出,将来能够私有云化之后,因为BlueMix上面可能主推的还是Liberty作为Java的Runtime,那我们的客户可能会存在一个迁移的问题。我们的承诺是说,所有传统WAS上的行为,在Liberty上面,我们都可以给你,你不需要更改什么就能够体现出来,这是我们对客户的承诺。

   

10. 所以这刚好就引入了下一个话题,就是你们和BlueMix团队是一个怎么样的合作关系?

Alex:这个问题我个人觉得比较偏技术。实际上是这样的,BlueMix它是作为IBM全新一代的PaaS平台推出的。我们作为Liberty团队,我们主要贡献的一块是Java的Runtime。因为你可能也知道,BlueMix不仅仅支持Java的Runtime,它也支持NodeJS,支持Ruby。那我们作为Java Runtime的贡献团队,我们跟他们之间就应该是一种合作关系,没有谁囊括谁的这样一个关系。然后我为什么说比较偏技术,因为我们要给他提供一些Java Runtime,必然要帮助他们去实现一些他们提供给我们的接口,所以大概是一个这么样的关系。

   

11. 我感兴趣的是,首先你们好像不光是一个Java Runtime,可能还有一些比如监控,包括其他一些管理上的功能我看都和Liberty相关。所以是他们往你这里Push功能,还是你们给他们Push功能呢?

Alex:这个是一个双向的管道。一种可能是说,BlueMix在发展的过程中,他可能发现客户有这样的需求,他最后研究发现,这件事情可能要发生在应用服务器层面比较好。那么这个时候这个需求会拿到Liberty团队,我们来讨论,说这件事情我们是不是做上去会更好。如果我们觉得这个做起来很好,我们就会把这个功能给做进去。

还有一种方式,因为Liberty本身走的是一个轻量化、松散式架构这种路线,我们也会考虑到说在云环境下面会有一些什么样的问题,所以这个时候我们也会就是去提出一些想法,然后去跟BlueMix的团队去沟通说,你们可以看一下,像这样的这种功能,或者是这样的场景,你们需要怎么去处理,我们能不能帮你处理,我们是怎么处理的。他们可能看他们是不是去认可这样一个想法,那如果双方都认可,我们也可以去提供这样一种能力。

   

12. 那还是比较自由的。最后一个问题,Liberty是否有部分开源,甚至全部开源的计划?

Alex:目前据我所知没有开源的计划。但是Liberty是这样的,Liberty对自己的定位是,他有一个社区叫wasdev.net。我们说不开源的地方是指Liberty本身的Liberty Profile不开源,但实际上Liberty是允许我们的使用者去扩展的。IBM作为一个应用器服务商,提供了比如说一百个功能,但是这一百个功能可能并不能满足每个人的需求,甚至于一些深层次的,比如说涉及到一些运行时里面的变化,那么Liberty提供了相应的接口,就是说,Liberty是一种松散架构,你可以不去用我那一百个功能,然后用我的架构把你的功能都装进来,你也是可以把这个Liberty跑起来的。所以通过这样的方式其实,我们也暴露这些API、SPI给我们的community里面的那些开发者,他们可以去贡献说,OK,我在Liberty上做了一个什么功能。 这个跟原来的方式不同的是,传统WAS没有这样的(模式)。第一个可能从技术层面上有难度,也不说做不到,有难度;另一个就是,他发源的思想可能跟社区之间比较远,因为它毕竟相当于是一个闭源的、私有的软件。但是Liberty在这个方面是比较开放的,你可以到WASDEV上面去看,我们有很多的贡献者,他们不仅仅贡献sample,因为sample也就是使用Liberty的功能,还有人在扩展Liberty的能力。就跟现在很多的开源社区一样,只不过可能Liberty Profile这个内核的代码是不公开的。

InfoQ:好的。十分感谢Alex接受我们今天的采访!

你可能感兴趣的:(IBM WAS团队:为什么要开发Liberty?)