从容器到魂器,云的交付件

近日,# U.E.D Devops Workshop系列技术沙龙#在广州和深圳展开,题为“Docker应用与虚拟化技术”的技术沙龙为开发者带来了Docker技术的分享。现场,来自UCloud 平台开发中心总监邱模炯和DaoCloud CEO Roby分别与技术爱好者分享了他们在Docker领域的看法与经验。

本文分享来自DaoCloud CEO Roby的“从容器到魂器,云的交付件”的精彩内容。

以下为整理内容:

说起对于Docker的印象,Roby用的是“刻骨铭心”。他说,在其同事两分钟时间敲出一个分布式系统时,其中用到的就是Docker技术,就是这里的容器技术颠覆了其作为一个容器技术开发者对容器的理解——这个故事发生在2013年,两年后Roby与几位同事告别了原来的团队,一起成立了一家专注容器技术的公司DaoCloud。

——这就是Roby与Docker的创业故事

行业趋势

Docker的发展,与云计算技术一样是时代催生的变革。1998年,瀑布式应用开发非常流行,开发者严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行软件开发,但显然它的严格分级导致了自由度的降低;2005年,桌面应用盛行,它让电脑更加人性化;随后敏捷开发在开发者中流行起来,因为可以不断适应需求,快速迭代;而云计算技术带来的优势和变化让我们开始追求精益工程,其中对于发布的要求也更高,推进了容器的发展,于是我们看到了开发者对于Docker的狂热。

从容器到魂器,云的交付件

是谁驱动了这一系列的变革?CEO,CTO,工程师,客户?Roby表示客户才是最好的产品经理。只有聚焦、突破、试错和迭代才能做到精益,也就是说需要把业务分为应对变化的部分和积累沉淀部分,以不同迭代粒度推进业务发展。

容器的变迁

容器,我们有时候开玩笑说它很像魂器,如《哈利波特》魂器一样,它把你的灵魂分开,把将一部分藏在身体外的某个物体中,即使你的身体遭袭击或者毁坏,当你自己受到攻击的时候,你也死不了,因为还有一部分灵魂在世间未受损害。

从容器到魂器,云的交付件

一样的,在制作容器的过程中,就是把你的业务分裂开,将一部分藏在变化外的某个部署环境中,这样就算你的局部遭变化或者重构,你的业务死不了,因为还有一部分核心在镜像中不受损害。

这是容器成为迄今发展速度最快的云计算技术的原因。我们来看一下容器技术的变迁:

2008年,我们可以构建轻量级的容器;

2013年,容器标准化,实现兼容性;

2014年,容器生态系统开始繁荣;

2015年,支持多Docker APP模式;

来,构建一个平台实现对容器的管理……

容器技术 VS 虚拟化平台

容器技术与虚拟化平台,不可避免会被技术人员进行对比。关键的不同主要有以下三个区别:

虚拟化是一个模拟指令集,而容器,无论是Docker还是Warden都是直接的硬件指令,运行在宿主操作系统之上;

系统资源消耗上,Docker的优势非常明显,在配置管理上会有一些额外开销,未来我们相信随着优化开销会更低。。

容器的镜像特别的小,因为类似的容器镜像只要一份就行了,最上面一层是一个可读写层,所以每一个容器镜像在发布的时候只会发布一个增量的存储空间,这使得容器镜像本身存储空间非常小。

Docker爆热的背后

事实上,容器技术并不是一个新的东西,而Docker只是把容器使用的门槛降到了更低,使得越来越多的开发者,而不是系统运维开发人员,也可以使用容器技术,那么Docker为什么会这么热呢?

站在云的基石上

在移动互联网项目中,没有人再会自己去做基础架构。像UCloud这样专业的基础云服务提供商的出现使得创业团队及企业高速迭代、创新和运维支撑难度都大大降低了,云计算已经成为所有人做业务的基石。

降低技术门槛

其实,这与现在的时代背景有关系的。因为现在的互联网和移动互联网项目中有很多的痛点,包括微服务架构和容器管理平台等,都需要我们用一个分布式的架构和管理分布式的能力去支撑我们的业务体系,原来因为技术门槛需要一支很强的技术团队去支撑业务体系,但是Docker的出现使得你实现技术跨越,降低技术门槛。

架构变迁的需要

大家都在不断的调整业务架构,从早期互联网的三层架构,到现在的分层架构,到未来的微服务集群架构,或多或少都在组织内会实现这种持续集成、持续开发来保证代码质量和协同工作。

这些的趋势变化,已然成为容器发展的一个契机,因为容器在这个阶段上能够很好的把在这些过程统一起来。

改变开发流程

组织架构在开发业务系统,无论是企业内部还是企业外部其实都无外乎是这样的一个流程,都是从代码、测试、集成、发布、部署到运维这样的一个过程,但原来的方式中其中一些过程是一个割裂的,也就是说这是人为的把原来应该在一条线上的业务迭代分隔成了多个阶段,这样就会导致沟通Gap,从而引发各类问题。

Docker的出现使得软件开发周期发生了变化,整个流程被分成了开发和交付两个阶段,即交付前和交付后。交付前开发人员需要迭代和移交镜像和镜像构建的过程,交付后也有可能是开发人员本身就是运维团队负责镜像容器的编排和运行。这样就让整个开发过程做到了统一,容器成为了应用交互的一个标准交付件。让每个过程都是可追溯的。

开发流程中,除了从代码开始是一个代码迭代的东西,从代码提交到代码仓库之后所有的流程就与代码没有关系了,它主要跟容器镜像有关系。开发人员提交代码的时候是把代码和镜像打包在一起发布成一个应用镜像。革命性在于原来开发人员是很痛苦的,开发人员要学新的东西,新的架构、新的打包方式;但容器的话,开发人员其实不需要学东西。

因此很多用户的第一反应会是,上容器管理平台是不是很痛苦,学习成本是不是会很高?举一个例子,我们在上海有一家客户用了一个非常非常老的中间件技术,我们花了三个小时就帮他把所有组件间全部运行在一个容器基础教育镜像下,他的开发人员、测试人员从此再也不要配发布环境了,每次只要把代码和镜像进行绑定,代码进入镜像,镜像发布就可以了,所以从此他的开发人员和测试人员、运维人员都跑到统一镜像上面。

所以,使用Docker容器平台之后开发流程会是这样的:所有的工具链除了代码开发段,用的都是Docker生态的组件来完成这些工作。从开发形态到持续集成引擎、发布流程、镜像发布、编排、部署环境、运维,除了代码阶段,之后所有流程都由容器完成的,只是在各个阶段用的组件和工具不一样,最终把这些流程串在一起形成一个自动化发布流程。

谁在用Docker?

从容器到魂器,云的交付件

根据用户的回访发现,使用Docker应用比较广泛的两个领域是互联网平台和移动社交,分别占全部用户的20%和25%。另外,垂直电商企业占全部用户的10%,P2P金融企业则是15%,物联网数据企业占比18%,视频处理也占到了12%。

从容器到魂器,云的交付件

从上图可以看出,容器云平台的价值所在,主要体现在资源利用率、灰度发布、运维一体化和弹性伸缩带来的好处上。

实践的坑儿……

每个技术在实践过程中,总是要经历这样或那样的坑儿,实在正常的很,Docker也一样。目前,最大的坑儿就是网络问题。

国内网络环境下,自己装个Docker环境然后运行,最简单的也要花上半天的时间,这是相当痛苦的一件事,于是我们花了一个星期时间解决了这个痛点,也就是我们的DaoMirror镜像服务,在中美之间架了一个镜像服务器,这个镜像服务器其实是完全安全的,因为我们不采取用户数据,我们只是把镜像在中美的节点之间做了缓存,基本上相当于你在美国托Docker镜像,这样能够极大的加速我们的开发过程。

嘉宾介绍:

相关推荐