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

原文发布于微信公众号 - CSDN技术头条(CSDN_Tech)

原文发表时间:2016-04-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老九学堂

与程序打交道的九年里,我的爱恨情仇...

一次做规划局的项目,规划局的职员很是钦佩地说:“你们真了不起,在电脑上敲敲键盘就能做出软件来。”

880
来自专栏云计算D1net

Docker与容器化:2015这股趋势势不可挡

像云这样重大的IT趋势已经用了一些年头来普及——尽管其中有过一些消长,但是它们向前的脚步不可阻挡。其他一些则似乎是出人意料地完全征服了企业世界。过去12个月,像...

4066
来自专栏JAVA烂猪皮

如何成为10倍速的程序员

国外有个词叫做10x Programmer,直译是以一当十的程序员。我并不认为一个技术大牛能完成10个普通程序员的工作,技术大牛会花1/10的时间把工作做完,然...

1382
来自专栏大数据挖掘DT机器学习

如何处理 Python 入门难以进步的现象?

问题: 如何处理 Python 入门难以进步的现象? 看视频看呀看呀看, 看完了,基础的都懂了 然后就想写点东西 可是无从下手呀,我以为基础不扎实,又去看视...

3964
来自专栏phodal

那些年,你应该读的7本Beautiful计算机书

O'Reilly Beautiful系列的电子书都是相当不错的文章合集,不仅可以扩大我们的市场,还可以装逼~~。 很多年前,有一本叫《代码之美》的书预售的时候,...

2216
来自专栏平凡文摘

假笨说-离开是为了更好的开始(寒泉子)

2343
来自专栏大数据挖掘DT机器学习

微软亚洲研究员:回顾我走过的编程之路

作者: 陈梓瀚(vczh) (很荣幸被华南理工大学软件学院邀请撰写此文,关于毕业那会儿找工作的一些事情) 前些日子被华南理工大学软件学院邀请回去参加一些活动,...

3337
来自专栏大数据钻研

很认真的聊一聊程序员的自我修养

程序员提高自我修养是为了什么? 程序写的好有人崇拜,有妹子喜欢?还是到博客、论坛、社区发表文章进行分享获得就?我想这是少数人的追求,也是更高的追求,在这之前 ...

2674
来自专栏Rainbond开源「容器云平台」

为啥说Kubernetes是云服务的未来?

1384
来自专栏Golang语言社区

google舍弃java?android上层应用或采用Go语言

摘要 Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且...

48914

扫码关注云+社区

领取腾讯云代金券