技术开发 频道

jclouds项目:在云环境中简化开发流程

  【IT168 技术】作为Rackspace公司的开发倡导者之一,Everett Toews的日常工作内容大于努力拓展OpenStack项目规模,同时利用Rackspace Cloud为开发人员及运维人员带来更为便捷的任务处理机制。

  Everett还在Apache jclouds项目当中扮演着核心贡献者之角色,这款开源工具的设计目的在于帮助开发人员更轻松地利用云计算所带来的技术优势、并在无需了解项目所涉及的实际云基础设施情况的前提下借此简化应用程序开发流程。

  在本次访谈中,我们希望在与Everett的对话当中了解更多关于Apache jclouds项目的细节信息,并谈谈他即将于下周召开的OpenStack峰会上做出的相关讲解。

  Apache jclouds到底是什么?

  让我们先从jclouds项目的既定发展目标说起。Apache jclouds是一套面向Java平台的开源多云工具包,旨在为用户提供更为广阔的自由发挥空间、从而在对各类特定云功能拥有充分控制权的前提下创建出能够在不同云环境之间随意迁移的应用程序方案。

  其实在这一描述当中,我们精心挑选了能够准确表达含义的词汇、希望能够更完整地表达项目的各项特征。首先,“开源”代表着该项目主要由社区体系负责构建。而“多云”意味着jclouds能够与大量公有及私有云体系顺利协作,其中包括目前在市场上占据优势地位的各主流解决方案。“工具包”说明我们并非单纯为其指定一种编程语言,同时也将Chef集成及命令行机制引入其中。“Java平台”是指我们以JVM作为运行基础,此外还囊括了与Scala、Groovy以及Clojure的协作能力。“迁移”代表着项目本身对于所处云环境并未做出明确限定。“特定云功能”则强调jclouds不仅能够在不同云环境之间顺利迁移,同时也能够涵盖某些云方案所提供的特定功能,从而帮助开发人员根据需要随意加以使用。“充分控制权”指的是以最具实际价值的方式利用jclouds对自己的用例加以支持,且拥有随意迁移或者发挥特定云功能的充分自由。

  您为何会加入jclouds项目的开发团队?您在这个项目当中负责哪些工作?

  当初Rackspace公司需要一套面向OpenStack与Rackspace Cloud的Java SDK,我们于是决定着注意力转向开源社区、打算看看能在这里得到哪些帮助。我们当时不希望被所谓“未发明”综合症所压倒(即出于成本等因素的考虑而拒绝采用任何现有成果)。我们发现jclouds已经在技术业界确立了自己的领导者地位,并且拥有一整套健康的社区支持体系。我们全心全意支持开源机制,并在此前提下加入了这个项目。

  我当初刚刚加入jclouds项目时进行了大量的相关开发工作,主要是编写出能够切实与OpenStack及Rackspace API相对接的代码成果。在此之后,我转向了说明文档编写层面,并参与重新设计我们的网站及文档资料。接下来,我将注意力集中在jclouds项目宣传方面,并在伦敦、纽约以及最近于旧金山举办的JavaOne大会上就此做出相关讲解。

  作为Apache软件基金会中的一员,我目前头顶诸多“光环”,包括项目管理委员会成员兼委员。

  为什么会选择Java?其它语言是否也拥有与之相似的同类资源库?

  简单来讲,Java的普及程度更高。很多从业者都认为Java是目前世界上人气最高的编程语言。为了提供更理想的开发者体验,我们需要选择开发人员聚焦程度最高的领域,而很明显大多数开发者都利用Java进行软件开发。他们就是我们的潜在合作伙伴,我们则希望通过项目为其提供支持。

  其它语言当中也存在类似的开源项目。其中最引人注目的包括Ruby中的Fog、Node.js中的pkgcloud以及Python中的libcloud。

  人们利用jclouds开发哪些类型的应用程序?

  我们的用户群体非常庞大,而且其中Web应用只能算是用户当中的一个小小子集。有时候我们很难弄清楚到底是谁在使用自己的开源项目。大多数开发人员会将其整合到自己的项目当中,启动并付诸运行,但我们却对此一无所知。考虑到这一点,我们在了解到有新用户加入进来或者听说新型用例的出现时会感到兴奋莫名。我们最近就发现了不少实例,包括谷歌计算引擎以及Mesosphere开源项目利用jclouds在云环境下创建集群。开发人员依赖于jclouds,并且利用它创建出各种已经准备好进入生产环境的应用程序。

  您能具体说说jclouds在摆脱云环境限定方面所带来的实际优势吗?

  这类优势其实多种多样,但在我看来它们可以归结于两大主要原因:避免供应商锁定以及别把鸡蛋都放在同一个篮子当中。

  那些工程技术团队规模较小的小型企业(例如初创企业)非常乐于使用云方案。随着业务的不断拓展,他们可能逐渐发现自己当初所选择的云服务供应商已经无法继续满足其业务层面的实际要求。此类情况可能体现在各个方面,其中包括使用成本、性能表现以及技术支持能力等等。与此同时,他们可能还会发现自己被牢牢锁定在了当初所选择的云服务供应商身上。如果他们能够从一开始就充分享受到像jclouds这样不限定云环境类型的工具所带来的优势,那么能够轻松切换云平台来实现成本削减将完全可行。

  那些规模较大的企业往往拥有实力更加雄厚的工程技术团队,但他们同样有理由使用云来支撑自身业务体系。有些时候,问题的重点并不仅仅体现在避免供应商锁定方面。其核心实质是,我们不能把所有鸡蛋放在同一个篮子当中,而从起步阶段就使用jclouds这类不限定云环境类型的工具能够很好地实现这类目标。无论是与多家云服务供应商协作构建起一套灾难恢复场景,还是希望通过云服务供应商之间的正面竞争来促进其服务质量,最终的受益者都将是用户。

  请您谈谈关于社区的具体情况吧。谁负责jclouds项目的代码编写工作?Apache软件基金会的领导对于这些工作有着怎样的现实意义?

  jclouds项目是由Adrian Cole在五年多之前所创立的,目前他仍然活跃在项目当中。

  我们拥有一个坚实的项目管理委员会成员团队以及众多委员,其中一些属于个人贡献者、另一些则隶属于包括各类云服务供应商在内的不同机构。除了管理核心之外,我们还从来自全世界的项目参与者手中获取代码贡献。纵观项目的整个发展历史,我们已经收到了来自超过100位贡献者提供的8500多项提交成果。感兴趣的朋友可以点击此处访问并了解如何加入我们的技术社区。

  加入Apache软件基金会对于我们来说是一次意义重大的转折性事件。技术方面的变动当然也是存在的,但我们仍然通过GitHub pull请求来获取贡献并利用持续集成机制保障项目完整性。事实上,主要的变化发生在项目执行流程层面。在加入Apache软件基金会之前,我们虽然也拥有自己的处理流程,但转制所带来的过渡阶段迫使我们利用Apache软件基金会所固有的流程结构帮助自身将上述机制进行规范化处理。成长的过程中当然伴随着痛苦,不过这一切努力最终打造出了更为理想的项目成果,而且目前负责jclouds管理工作的成员都真正对其拥有强烈的热情与期待。

  如果我想利用jclouds与自己的私有OpenStack云相对接,应该如何着手实现这一目标呢?

  jclouds属于面向OpenStack的官方Java SDK。大家可以遵循developer.openstack.org网站中所提供的面向OpenStack的jclouds上手指南资料。其中的内容会就jclouds安装、技术术语差异以及一部分示例代码帮助开发人员构建起更加明确的实施认知。在进行过初步尝试之后,建议大家最好能后退一步、认真阅读项目中的各类核心概念,否则各位很可能会只见树木而不见森林、难窥整个项目的全貌。如果大家的用例要求使用具备可移植特性且不受云环境限制的代码,各位还需要深入阅读ComputeService与BlobStore中的相关内容。

  关于jclouds,您还有什么希望与大家分享的内容吗?

  如果我最后不强调“pull请求火热征集中”,肯定就没法凸显jclouds作为开源项目的本质特征了。我们始终欢迎任何感兴趣的朋友在任何时间加入到贡献者这个大家庭中来。解答疑问的非常好的方式是点击此处访问我们的“如何进行贡献”维基页面来获取更多具体信息。我们也热切期待能有更多朋友为我们提供说明文档。大家可能已经注意到,我们网站上每个页面的页脚处都设有一条链接,标明“修复此页面”。只要点击这条链接,大家就能直接进入GitHub编辑器并对当前页面的markdown源代码进行查看,并且可以对其内容进行修改。没错,做出贡献就是这么简单,开源世界就是这样一个轻松而美好的领域。

0
相关文章