DaoCloud联合创始人喻勇接受InfoQ专访

frank-interview-infoq

喻勇,DaoCloud联合创始人。曾在VMware中国研发中心负责Cloud Foundry、大数据、软件定义存储等前沿产品在开发者、技术社区及战略合作伙伴的生态系统建设工作。在加入 VMware之前担任微软技术布道师和 IT 架构顾问,曾负责微软战略 ISV 的 Windows Azure PaaS 云计算平台搭建工作,对企业软件架构在云平台的设计、迁移、安全及云计算商业模式有较深入的研究。2015年从VMware离职创立DaoCloud,专注于企业级Docker容器云平台。

在4月24号的北京QCon大会上,作为DaoCloud联合创始人的他接受了InfoQ记者魏星的采访,以下为采访内容摘录。

点击可观看采访视频

Q:选择创业之路的原因?为什么选择从开源领域切入?为什么Docker会成为首选?

回顾我13年的职业经历,在微软经历了Windows服务器、Azure新业务新技术的工作,目睹了企业的私有云场景到PaaS平台的转变;3年前加入VMware,负责开源的Cloud Foundry社区。在这些年里,我的工作更像是是布道师,帮助开发者和企业拥抱新技术。现在,我愿意做一些创新,并且将前沿的技术与客户分享。

国内移动互联网蒸蒸日上,面向移动互联网的各种服务也方兴未艾。国内互联网对于集成部署、快速迭代的需求,使得使用Docker的容器技术成为一个迫切需求,这为我们的产品提供了机遇。技术的成熟和成规模的市场,给了我们信心。

Q:所以您不满足于做一名布道师,更愿意来亲身实践?

在VMware的三年里,我在中国建立起了Cloud Foundry 的生态系统,帮助了很多基于PaaS的创业者,就像教练的角色。现在我走上创业之路,一方面是大环境,另一方面就是基于这些年的经验。看的越多,对市场的判断就越准,也就能发现一些机会。

Q:作为一名PaaS专家,您认为在云计算领域,应用迁移的难题是什么?

在做PaaS平台的这些年,我见到了各种应用场景。过去的5年,我们谈云计算其实更多是谈虚拟化。在云计算的概念里,虚拟化承担两大功能:

– 资源的承载工具,把需要人为获取的物理资源变的自动化
– 应用的承载单元,隔离应用

作为资源承载工具,虚拟机已经做得非常好;那作为应用承载单元,虚拟机是个好选择吗?企业用户使用私有云会有P2V的过程,将原来的物理机搬到虚拟机,但是我们发现其中有问题。应用的底层资源从物理机到了虚拟机到了云化的平台,但是应用本身并没有发生变化。这成为很多企业决策者思考的问题:做基础架构的变迁不仅仅只是把一个东西原封不动地搬过来。

现在很多企业为了应对移动互联网的趋势和挑战,为了让自己的应用在互联网用户中做弹性伸缩,基础架构要为此优化,应用也要为此优化。我们接触的企业用户在思考:“我的应用如何从传统的、分层的应用转变为互联网形式的应用?”

现在有个词cloud native application,这个cloud native application要求应用的架构、运维方式发生新颖的变化,以适应新的云化的底层基础架构。这也是Docker一出现就炙手可热的原因。在我看来,虚拟机仍然可以做一个非常好的资源承载者,容器(Docker)是资源之上的应用的承载者。虚拟机原有的两个角色,其中一个现在由容器承担。换言之,在cloud native application的场景下,由容器来承载应用,会变的更理想。

应用转型为cloud native application,同时基础设施也随之而上,这样的变革和变化,才能帮助企业更好地应对移动互联网的挑战。

Q:DaoCloud采用Golang开发,那在这个过程中,踩过什么坑?分享一下。

我们还是一个小团队,春节后开始做产品,迭代速度也很快。我们非常喜欢Golang,主要原因有:

– 首先我们用的核心技术Docker就是Golang开发的,是Golang社区的明星项目。
– Golang语法简单,处理大规模并发的时候不需要考虑太多细节,很大程度上提高了我们的开发效率
– 我们的产品是运行在云平台上的。同样的产品用java写和用Golang写,在云端占用的资源是不一样的,对性能也会有影响。
– Golang的轻量性能降低成本

我们踩过的坑呢,主要是Golang在国内的编译,在下载包的时候会出现延迟等等。这些问题怎么解决呢?我们把Golang的代码打包成Docker镜像,然后通过优化镜像的构建方式来提高打包、编译速度。

Q:根据DaoCloud的官方博客,你们在21号发布了云平台,你们做这个产品的初衷是什么?以及过程怎么样?

持续集成,或者说快速迭代是这两年非常火的概念。放在云环境上,情况会更复杂。我从两个方面来讲:

– 首先是软件交付的生命周期,比如原来微软做一款新的Windows产品,从立项到发布可能需要三年;从程序员写第一行代码到这个软件跑在客户的企业环境里,需要五年。但是移动互联网时代的竞争非常激烈,你的手机App、你的后台程序,如果不每周、每天更新,可能就会被用户的反馈淹没、被竞争对手赶超。

– 其次,现在软件的环境更加复杂了。我们原来写程序可能只需要三层架构;而现在的移动互联网时代软件开发特点是碎片化、云平台、微服务,再加上一个持续交付的需求。如果只对其中做一点小修改,是否会牵一发而动全身?在这种环境下,对软件的测试覆盖、团队的测试能力,要求非常高。

在DaoCloud的整个生命周期里,我们把持续集成放在非常重要的地位。在帮用户构建Docker image之前,我们就会跑这个CI(持续集成),把所有的用例覆盖一遍。只有全部通过,我们才会生成这个镜像。等用户拿到镜像的时候,就已经是一个通过测试的交付件。这样往下走就非常流畅,也避免了风险,尽早完成集成。产品由多个镜像组成,每个镜像我们都做这样的测试,这样组合起来的时候就不会有问题。

我们自己开发了DaoCI的工具,但是我们也会接第三方服务,比如shippable、TravisCI,这是PaaS的持续集成服务。

Q:你们的测试主要测试哪些方面?bug、性能、还是异常?

这个自动化测试对代码有要求。很多代码里要写好测试用例,通过程序调用这些测试用例,来覆盖代码测试。代码越来越多,模块也越来越分散。有一个很强的测试代码覆盖比例,才能保证交付过程中不会出现问题,牵一发而动全身。

我们也提供针对不同语言进行测试,比如Golang、比如Ruby,也可以针对版本,比如是runtime的代码,还是代码中的unit test,都可以。

Q:Docker开发目前还是一个比较新的技术,你对Docker开发者有什么建议吗?

我们接触到的用户有两大类,一类想法比较超前,会使用Goang、Ruby、Python这些前卫的编程语言,以及SaaS服务的用户;他们使用Docker是为了写一些新应用、新App,能够以微服务化或者cloud native application化的方式来使用Docker。

另一类则是传统用户,他们已经有着一些不错的企业应用,在考虑如何搬进Docker。比如企业用户有很好的Java应用,他们希望利用Docker在效率提升、云平台管理等方面的优点。对于这类用户,我会建议他们明确哪些应用搬进Docker后是效果提升的、而哪些是适得其反,我会协助他们进行分析。通常情况下,Docker是在软件开发中协助你设置完全一致化的环境,使得开发环境、测试环境和运行环境具有一致性。对于这些旧应用,如果需要频繁开发、更新,那么放入Docker中就会带来实际的好处。有些几年都不更新的,放在Docker和放在虚拟机里区别不大。这时候我们要做清楚的区分。

Q:除了Docker镜像服务,DaoCloud目前还有别的特色服务,以及将来会推出哪些服务?

我们在元旦前后推出了DaoMirror,针对Docker镜像中国网络加速的服务,社区反响很好,能够把大家从Docker Hub下拉镜像的速度提升了10倍左右。这个只是我们对社区的回馈,并不能算是产品。

我们目前在做的是code到cloud的整个流程链,通过Docker的方式打通。对于开发者来说,只要把代码托管到github、bitbucket,或者国内类似GitCafe、coding.net、OSChina、CSDN CODE的代码托管平台,代码提交后我们来完成后续的很多事。我们认识的开发者,用一半时间写代码,用另一半时间来构建、来交付、来部署。前半部分是用来创造创新的,而后半部分时间则是机械性的,并不会对你的应用创新、商业模式等产生实质影响。以前代码更新周期长,这种机械性劳动尚可忍受。而现在每天都要发布、更新,对开发者的时间是极大的消耗,迫切需要自动化。

我们从code开始,将你的dockerfile生成为Docker镜像,也即交付件。通过持续集成和持续部署,将应用放到用户选定的公有云平台。在将来,我们还会将应用直接推送到用户的私有云上。

Q:国内目前有做code-to-cloud的公司吗?

我们从3月份开始内测以来,到现在完成整个交付链条,我们是国内第一家。甚至放到全球来看,我们也是第一家。美国的Docker公司和社区的兴起,没有比中国早太多,也就半年一年左右。在美国,Docker生态链的每个阶段都有创业公司在做,但是把整个链条串起来的,我们在业界还是领先的。对于用户来说,也是比较简单、一致化的服务。

在我们的服务里,开发者只需要写dockerfile、写CI配置文件,对代码没有侵入性。在我们的链条里,我们还给用户提供选择。比如持续集成,除了DaoCI,我们还提供了shippable、travis,避免了lock-in。

Q:请您从资深从业者的角度谈一下您对Docker、CoreOS以及其他容器技术的看法。

最近的新闻有点多。3月份以来,CoreOS发布了与Google Kubernates的战略合作、1200万美元的融资,紧接着Docker宣布了自己在不差钱情况下的9500万美元的D轮融资,然后VMware也推出了两款新的承载Docker镜像的虚拟化平台,而且微软也推出了Nano。这四件事基本上在一个月内发生。

对于使用容器技术的程序员来说,这是一个好事情,因为有这么多大厂在持续地投入。技术一定会成熟,大家对Docker安全、网络、底层隔离等方面的担忧,会被不断解决,技术会不断夯实。第二,用户的选择会更广,不论Docker是否能成为唯一标准,container已经成为应用载体这一大方向是尘埃落定。这种百花齐放、百家争鸣,对开发者来说,是好事。

Leave a Reply

Your email address will not be published. Required fields are marked *