返回 登录
0

Seek和Everydayhero如何在实际生产中应用Docker

Docker在澳大利亚推广容器应用技术异军突起,它的努力没有白费,随着公司包括Seek和Everydayhero也加入了本地化采用。

在最近由iTnews举办的澳洲云和数据中心峰会上的消息传出,Seek和Everydayhero联合了Craig McLuckie,他是Google Kubernetes协同工具的联合创始人,描述了他们在Docker早期应用上的经验。

“我从来没有见过一个技术发展达到Docker的加速度”,McLuckie说。

“我已经在这个行业17年了,这是迄今为止我见过的最快,最积极被采纳的应用周期。”

Docker提供了一个轻量级的方式来包装和发布Linux应用程序或服务。

这些包 - 称为容器 - 可以很容易地在不同环境,如云或虚拟机之间移动,并且可在数秒内启动。

Docker的第一个版本发布于2013年3月,在15个月内它已被下载了275万次。而这一数字仅仅四个月后就跃升至2100万下载量(刚好是它的1.0版本发布时),到目前为止超过两十亿。

这就是Docker是如此火爆的重要原因之一:作为Insight Venture Partners的董事总经理Jeff Horing告诉福布斯 ,它是一个 “看起来有巨大的商业采用率”的商业工具。
当然,McLuckie也指出在感兴趣和实际采用之间还是存在巨大的鸿沟的。

“在发现某个技术到实际决定去应用它,并且取得现实生产的成功,两者中间还是有很大的差别的“,他说道。

“这项技术本身还处于发展初期,还有很多细节尚待完善”

对于像Everydayhero的平台层软件首席工程师Marty Zalega这样的先行者来说,那些不完善的细节是非常清晰的,虽然他认为他们对于Docker采用的障碍正在逐步减少。

总部在布里斯班的Everydayhero是一种托管筹款平台,可以由个人和慈善机构使用。
“我们经历的主要陷阱都是在早期进入时”Zalega说。

“由于Docker的发展非常迅速,这确实对我们有很大影响。这当然是一件好事,它是发展的如此迅速,并帮助解决了很多曾经的问题,但这一点也造成我们也必须不断学习,我们必须不断追赶并重新理解Docker是如何工作的。

“现在,如果你刚刚跳进Docker,它绝对不是你所将要面临的东西”

“它变得很稳定,工具集非常丰富,围绕它的过程也更加精细。”

McLuckie认为,Docker社区正在走向成熟。 Docker已经建立起自己庞大的用户群体,提供众包的支持,现在Docker的meetup发生在许多省会城市。

“我想说的东西是独特的,相对唯一的,关于Docker以及大量的这些新技术你将从社区本身得到一定层次的质量和支持,”McLuckie说。

“当你融入Docker的社区和其他新的开源社区时,它对于理解工作中进度和问题是开放并且非常有效率的。有一个非常强大的内部支持结构”。

Seek澳洲的首席开发Martin Booth谈到迁移到Docker所带来的好处远远超过任何已知的担忧。

“我认为,一致性的Docker带来的软件部署优势抵消了使用它的学习曲线”Martin Booth说。

Seek是如何启动Docker的

Seek是最早在澳洲业务开展Docker试验的,最初是支持一个微服务架构,需要这些应用程序被设计为一系列独立部署的进程和服务。

“我们发现人们开始一个全新的服务所花费的时间太长了,”Booth说道。

“在一个服务能够正式应用之前,这里有很多的重复建设,所以我的任务是探索如何能够自动创建一个新的服务。”

“这导致了我们开始研究什么是最好的工具来实现这一点。”

Seek尝试过多种不同方法来部署新的服务。

“其中方法之一是非常典型的把一切打包压缩,然后移动到目标服务器再解压缩,”Booth说道。

“但我们有代码需要不依赖于特定的版本库的问题,所以如果我们部署了一个版本,它需要新库的代码,那么我们也必须有一个额外的动作来更新服务器中的这些库”。

Booth说,该公司试图通过虚拟机封装一切来解决,但虚拟机的“创建和部署效率低下”
“Docker似乎是我们所需要的答案 - 它正好是两个需要解决的问题的平衡点。”Booth说。

使用Docker模板,现在可以在20分钟内让新的服务投入生产,他说。

虽然Seek只是在澳大利亚开始使用Docker,但是公司业务的国际性质意味着该工具的使用正在扩大。

“我们目前正在考虑使用容器作为一种手段在国际企业之间分享组件,”Booth说。

“不是所有的人都使用和澳大利亚相同的云服务提供商,所以对我们来说它提供了应用程序的可移植性。”

“我们有可以放到一个内部Docker仓库组件,并在各种不同的业务部门之间共享”。

选择的准则

Seek的软件开发团队当前准则允许自行选择开发语言。

在引入Docker之前,组件及服务都是以不同的语言编码并且部署也不尽相同,但有了Docker之后,代码部署方法现在是一致且标准化的。

当然,复杂性仍然存在 - 当前Seek的开发者们已经开始一些艰难的讨论是否完全放弃一些语言来平滑过渡至Docker。

“我们使用了一些C#,并且我们的环境中有一些F#代码。这两者是最难在Docker使用的,“Booth表示。

“这不是与Docker本身的问题。”

作为一种变通方法,Seek使用一种叫做Mono的.NET框架,使开发人员可以以C#和F#编写Mac和Linux的开源实现。

Seek使用Mono继续使用微软的编程语言编码,同时部署使用基于Linux的容器的代码。
但Booth指出,Mono可能不是一个长期的解决方案。

“在Seek内部有很多关于我们是否真的要与F#持续下去的激烈讨论,因为我们发现Docker的情况如此引人注目,大多数团队都居然舍得放弃自己选择的语言而使用Docker,”他说。

“我们已经取得了一些成功,我们的一些应用程序在Docker内完美运行。”

“我们已经侦测出一些问题,最终追查结果都是Mono的问题而不是Docker自身的。 Docker已能在任何情况下完美地工作。”

“C#主要的测试来自于Mono开发团队。F#曾经出现过很多的问题,因此大多数Seek曾经工作于此的团队都已经迁移替换到了别的开发语言。”

当然,可能我们不必完全抛弃原有实现。

Mono的创造者Xamarin最近被微软收购了,现在Mono是.NET的基础框架的一部分共同开发。Mono和.NET的开发工程师们现在非常有望能协同工作并改进前者。

微软也有望在未来推出基于Windows的类似Docker的容器功能,这也可以简化将来容器化在微软编程语言上的技术路径。

急速发展

Everydayhero在2015年年初开始它的Docker旅程,当时它从悉尼的数据中心转移到AWS云基础架构上运行自己的裸机服务器。

“我们希望我们的应用运行在分布式基础设施上”Marty Zalega说。

Marty Zalega表示,基础设施的迁移是一个契机,用于研究可能提升内部能力的其他工具 - 并且“Docker是当时的热门”。

“Docker是我们能够非常快速部署应用程序的机会。 我们通常从构建到部署到生产和上线只需要大约五分钟,”Zalega说。

“但我们得到了很多其他的好处。一旦我们开始使用它,我们开始意识到,我们可以在几乎一切领域应用它”

“今天我们的整个工作流程都是基于Docker。我们实际上在Docker内部建立我们的应用程序,我们通过Docker来分发,而且我们在Docker中测试这些应用”。

“这给了我们一个很好的,一致的应用,我们可以非常快速的从创建到生产,并且可以对结果和质量有信心。”

Zalega说Everydayhero内部非常强调软件应用的快速部署和可操作性。

“对于我们来说这是一个非常重要的因素,因为我们希望得到快速反馈,”他说。 “我们希望快速看到错误,然后我们可以迅速作出反应,以解决这些问题。”

使用Docker的公司同样可以从中获取价值,即加强了开发者对于发布功能应用程序的所有权,同时这也是一个类似于实现微服务架构工作方法之一。

“在如此多且松散的代码环境下应用微服务架构是非常困难且繁琐的”他说。

“至少Docker可以以一个连贯一致的方式把它们放在一起,这样一来,从开发的角度看,你可以看见不同的代码片段和齿轮的移动,并基于它们的可见性做出决定。”

译者:王旭敏,Nokia开发工程师,关注云计算、高性能及可用架构、容器等。

原文链接: How Seek and Everydayhero put Docker into production

2016年4月22日-23日,由CSDN重磅打造的SDCC 2016数据库&架构技术峰会将在深圳举行,目前18位讲师和议题已全部确认。两场峰会大牛讲师来自百度、腾讯、阿里、京东、小米、唯品会、滴滴出行、携程等知名互联网公司,共同探讨高可用/高并发/高稳定/高流量的系统架构设计、秒杀系统架构、搜索架构、中小企业架构之道、数据平台系统演进历程和技术剖析、传统数据库与分布式数据库选型/备份/恢复原理及优化实践、大数据应用实战等领域的热点话题与技术。【目前限时6折,点击这里抢票

评论