CSDN首页>

OSTC 2015:开源成就工匠,Docker不可或缺

发表于2015-04-01 16:03| 次阅读| 来源CSDN| 0 条评论| 作者周建丁

摘要:所谓“工匠精神”,是指对自己的产品精雕细琢,精益求精的精神理念,这已然是当前互联网产品研发的一个基本理念。对于技术人员来说,把工匠精神带到企业中,最佳途径是什么?“开源技术大会 2015”给出了答案。

所谓“工匠精神”,是指对自己的产品精雕细琢,精益求精的精神理念,这已然是当前互联网产品研发的一个基本理念。对于技术人员来说,把工匠精神带到企业中,最佳途径是什么?“开源技术大会 2015”给出了答案。

2015年3月28日,由CSDN、腾讯、腾讯云、腾讯基金会联合主办的“ 开源技术大会 2015”(Open Source Technology Conference,简称OSTC)在北京召开。本次大会以“社区胜于代码”(Community Over Code)为主题。该口号是在Apache社区流传的一句座右铭,有人也将它写为“Community > Code”。它强调围绕代码而生的社区,会让代码变得更加优秀。

在下午的常规会场1,Docker中文社区创始人马全一,Yahoo北京研发中心技术专家孙长明,华为开源技术专家、Spark PMC和Docker Committer宋子诚,DaoCloud联合创始人、前EMC中国研究院总架构师陈齐彦,腾讯云研发中心副总郑立峰,以及RT-Thread创始人熊谱翔等6位讲师发表了演讲,分别介绍他们在开源领域的研发工作和实践应用。此外,微软开放技术(中国)资深项目经理蔡明峰,微软开放技术(中国)资深项目经理刘明,北京络威尔软件有限公司服务器端工程师王伶卓和Seafile创始人潘凌涛也分别发表了每人5分钟的闪电演讲,呼吁更多的人加入到他们正在做的一些有趣的开源项目之中。

Docker,或者说是容器(Container)技术,是这一分会场的绝对主角。Docker身系三千宠爱成为最火爆的开源技术并非毫无道理,在IT产品需要不断快速迭代快速优化的环境下,软件的发布和部署、研发与运维的关系都在重写,Docker以接近物理机运行效率的虚拟化功能和层级镜像的优势,无法不让我们动心,很容易成为了容器的代名词。讲师们认为,Docker技术正在不断成熟,容器生态也在蓬勃发展,针对Docker的网络等棘手的难题,Kubernetes等各种相关工具和开源社区都在逐步完善,不同容器技术之间也正在实现兼容性的突破。同时,我们还看到,当前火爆的另一类产品——智能硬件,其所依赖智能操作系统,也正在走在社区开发的路上。

马全一:使用Docker构建持续集成服务

率先出场的Docker中文社区创始人马全一,介绍了如何使用Docker构建企业的持续集成服务,他提出了ContainerOps的概念。马全一表示,程序的开发,从瀑布式到敏捷到持续集成、持续测试、持续部署等工作,拉进了研发和运维之间的距离。原来的DevOps是以各种脚本把所有的流程串起来,做一个项目,所有的工作要写很多脚本,可能有环境依赖。Docker产品所带来的核心理念,就是把研发的环境的依赖解决掉。不过,ContainerOps只是DevOps的升级版,而不是把原来的DevOps的流程改掉,是遵循DevOps的要求逆转。原来DevOps的时候,关心的是SOS怎么在Ops怎么保持它的唯一性和版本的关联。做ContainerOps的时候,关心的是Container的建造、Container版本的变化。


马全一认为,做ContainerOps之前,不要把DevOps拓展,在任何一个服务器上都是以Container方式实现的。没有必要以WebIDE的方式写代码,否则就是把Dev变成服务器,让所有的研发人员去做。其次,他认为,以Container做Ops的时候,第一步也是bulild,每次PUSH就做bulild的服务。大多数公司都是用Jenkins。但应该还会有更新的产品,如Docker自己讲的,在整个DevOps里面流程,你触发一个流程,bulild一个新的Container的境像,然后到一台服务器,依赖关系做好,访问一个邮件地址发给你的研发人员,测试没有问题之后,从一个分支到另外一个分支,最后交给测试组的人,没问题了,再给一个分支,最后进行人工测试,最后再部署到产品上。这是Jenkins讲的流程概念。


马全一最后表示,真正以Container为核心架构的DevOps工具和ContainerOps工具尚未存在,在工具链上还是一个空白。我们做了一个项目叫做Wharf,愿景是做一个Container Wharf的平台,这个平台会同时兼容Docker和JRocket的规则,只需要装一个系统就可以兼容V1和V2的协议。

孙长明:Kubernetes - Google开源的容器集群管理系统

Yahoo北京研发中心技术专家孙长明全面介绍了Google开源的容器集群管理工具Kubernetes,包括Pod、Replication Controller、Service、Node等基本概念以及网络、部署和支持单机的kubelet等。Kubernetes本身是管理容器的东西,但是把进程放在容器上运行。现在不仅支持Docker,也支持Rocket,也有可能支持别的。比如说现在做了一项迁移,就是cAdvisor,把自己跑到Docker上,逐步做迁移。


Pod是Kubernetes的核心观念,我们往一台机器上部署一个程序的时候,它不是一个容器,它是多个容器。比如说文件太大的话,我只能拆。所以就有了Pod。一个Pod由一个或多个Container组成,同一个Pod内的Container共享网络,并可共享storage volumes,每个Pod对应一个唯一的IP,不同Pod之间可以通过IP直接通信(哪怕不在一个Host上)。


网络地址转换(NAT)是部署Kubernetes面临的一大难题,多个容器在传统网络上运行,存在性能差和服务不能自注册的挑战,解决办法是每个Docker主机都必须拥有一个外部可访问的IP池,不管是构建overlay网络还是IPv6。Kubernetes的做法:1、每台机器上开一个透明代理(service proxy);2、cluster内部的流量,通过iptables的outbound规则达到负载均衡的目的。Yahoo做了一个开源的透明代理L3dsr,走的是3层TCP的协议,而不是LVS的2层。针对外部流量,Yahoo写了一个基于ATS的路由器转发,这个路由表两部分信息决定:机器的状态和应用的部署情况。

Kubelet也很值得关注,容易部署,环境要求没有Kubernetes那么复杂。它是一个node agent,被设计成可单独拎出来使用,可以认为是pods(或containers)的systemd,支持pods lifecycle的管理和心跳检测。Kubelet启动时指定一个config目录,把pods的配置(配置文件里要写ID)扔进去,kubelet会自动监听更新。整个Kubernetes都是插件化的东西,很多都可以拓展。目前有几个很有意思的storage plugin ,包括git、nfs和secret等。

宋子诚:Docker在华为云计算测试中的实践

华为开源技术专家、Spark PMC和Docker Committer宋子诚介绍Docker在华为DRTCloud的实践。他表示,用Docker可以把研发、测试、运维这条生产链打通,华为内部计划做一个在整个生态链上的大型的Docker平台,包括了公有云和私有云。其中,公有云方面的设想,将把Ops里面的生态链,比如说CI、CD、Jenkins,都要Open出来,把研发人员体系、工具链推荐给全球。


DRTCloud是一个在线性能测试,是一个私有云里面跑的业务,实验目标是可以给华为所有的产品线,比如说存储产品线进行测试。宋子诚着重谈到了使用Docker的过程中开发者和部署运维遇到的挑战。一般的开发者会用到Ruby、Postgres、Mongo和Cassandra等做一些事情,在相同的开发环境里面,要确定所有的team members拥有相同的环境。比如在开发平台和产品最终的生产系统里面,版本控制一定要严格。这方面Docker也可以作为一个很好的统一化管理。

部署运维方面主要是4个问题:怎么降低部署运维的痛点?怎么scale up and down?怎么跑整个的生产过程?怎么有效利用资源?底层操作系统,华为现在用CentOS,因为CentOS是为Docker而生的,但ETCD和小工具都需要自行安装和配合,因此不建议初学者使用,Ubuntu的部署会更好。用Docker部署环境,华为采用了Mesos+Docker+Swarm。Mesos和Kubernetes是不同的模式,之所以不用Kubernetes,考虑的是业务场景。华为用了Swarm,它让用户可以利用Docker API创建基于Docker的资源池,在Docker的资源池做一些集群的管理,Swarm就相当于Kubernetes了。

宋子诚最后总结,在华为内部,Docker所有的点都可以赋能,或者都可以实现它的功能。第一个就是CI/CD。第二个打包和部署和应用程序,第三个就是应用程序的生命周期管理。第四个做分布式应用管理和分布式集群管理。

陈齐彦:容器到魂器,云的交付件

陈齐彦的演讲主题为《容器到魂器,云的交付件》。魂器的概念源于陈齐彦对软件开发模式变革的思考,当前的精益开发,流程里面的迭代和开发,要让代码尽快进入生产环境,让生产环境中的问题尽快返回到代码。魂器的意思,是把你的灵魂分开,把一部分藏在身体外的某个部件里面,即使身体主体被攻击了,人也不会死,还可以附身。容器的价值,就是把你的业务分割开,把一部分藏在变化之外的运行环境,放在一个部署环境当中,即使你的业务需要变革,需要迭代的时候,这个业务以它的动态形态始终存在。这很符合互联网应用不断迭代、不断优化的趋势。而容器变成魂器,不仅仅是用好容器技术,还要把容器技术用到微服务里面,因为微服务的架构很适合这个时代和这个行业遇到的问题。同时,开源社区的推动作用对这样的变革也很重要。


我们目前遇到的最大的问题,就是没有办法进入世界上最大的社区以及世界最大的Docker的生态。DaoCloud推出的Docker Mirror的服务,通过结合云技术和云资源的利用,让用户能够像美国开发者一样快速访问,并且提供彻底免费的机制,让用户能够很快的开始尝试把自己的应用Docker化。


Docker的单点使用,核心组件都是容器化的,组件核心是容器集群,提供了其他容器的增值服务等。同时把合作伙伴和客户的应用做了一些针对他们的服务工具,这些服务工具主要是Docker Mirror和云主机的监控,数据业务的备份,包括利用Docker做一些数据分析。DaoCloud把微服务架构传递给客户,把他们的应用以容器的形式发布,只需要在开发环境上加了一个Dockerfile,不用改任何一行代码,所有的开发者花20分钟就应该学会。

郑立峰:腾讯云移动解决方案

腾讯云研发中心副总郑立峰讲述了腾讯云移动解决方案,包括CDN、OC、云服务器、云数据库、NoSQL高速缓存、图片服务、维纳斯和信鸽推送等。其中,NoSQL高速缓存采用云的架构,兼容memcache协议,基于分布式key-value缓存,具备自动扩容的能力,流量上来的时候,扩容的速度非常快。NoSQL高速缓存落在SSD上,并支持持久化存储,背后有三层容灾机制,保证数据的安全性。维纳斯相当于说腾讯云把腾讯的骨干网,以及全国400多个加速节点包装成一个SDK开放出来。用这个SDK,在不改变访问模式和连通方式的前提下,通过腾讯骨干网就近接入,解决了连通率低的问题。


图片服务和视频服务,除了借鉴和使用了维纳斯的能力解决存储分发的问题,还有一些处理的能力,主要是打水印以及智能裁剪,后面会有更多的能力,比如说滤镜效果,还有人脸识别这样的能力。短视频除了存储分发,主要还有转码、补光、旋转等能力。COS服务是面向除了图片、视频之外的文件,比如音频文件,还有word文档。


未来,腾讯会推出更多的结合腾讯大数据的能力。比如说可以推送给某些高富帅,或者某些即将流失的用户,会有更多的数据分析的标签出来。因为腾讯的大数据信息来源由所有腾讯业务部门汇总数据到数据部门进行整合数据分析,所以能够知道每一台手机持有人的基本情况,他大概是什么样的人。有电商业务,对用户的交易属性也会有一定的了解。腾讯认为,结合这样的数据推送的能力,可以给用户进行更多精准的推送。

熊谱翔:RT-Thread的智能硬件云开发者社区

RT-Thread创始人熊谱翔介绍了RT-Thread的智能硬件云开发者社区。RT-Thread定位为智能设备操作系统,具有功能完整、超低功耗或硬实时的特点,具备实时内核(自行实现,无近缘关系),现代式的云端集成开发环境Cloud IDE,在云端集成了GNU GCC开发工具链,最新版本的RT-Thread源码环境;在浏览器端集成了编辑器及面向工程的工具;支持浏览器编程,云端编译,无线网络部署。RT-Thread开源项目已经迁移到github,后续都是基于TR的方式进行处理。


RT-Thread今年的开源社区的计划目前已有雏形。通过在线的编辑器可以提交编辑项目。它还会有一些针对不同设备的工程模板,开发者可以使用这些模板迅速入门,或者迅速按照一定方式写代码。现在有2个模板,包括ARM Cortex A8和STM 32F 205。A8并非真实的硬件,它是Cloud ARM,是一个用JavaScrip实现的虚拟机,ARM的指令可以跑在浏览器上,它是运行在浏览器上面的虚拟机,拿这个虚拟机再去运行RT-Thread。


当然还有辅助工具配置器,可以根据不同的需求,不同的配置,用一个配置器对它进行分开的配置,减少资源占用。此外考虑开发者的社交化,包括开发者之间的组件共享,包括引用次和版本信息,还有开发者间的沟通交流,可以连接github,通过这种方式维护你自己的代码,包括整个代码的上传下载都可以实现。

闪电演讲

蔡明峰介绍Azure的VM Depot和Docker的那些事儿。VM Depot是服务中国微软云的社区平台,所有用户可以免费使用并且贡献代码。VM Depot可以看成是一个虚拟镜像库,用户可以用云端的工具扩展或者对它的镜像做修改,实现混合生产的灵活性,最后将自己满意的定制的虚拟机镜像反馈到社区。在微软账户上部署自己的Docker Host:首先安装微软的跨界面命令行,再装一个Docker Client,部署Docker Host只运行这一行命令,后面是自己的参数,比如数据中心在哪里,一下子就有了自己账户下的Docker Host。


刘明的主题是构建支持数百万设备的物联网大数据处理框架。物联网平台是技术链条最长的平台,刘明主要讲物联网接入平台(包括设备接入和管理平台,把数据传到后面的平台)怎么衔接事件到应用的GAP。微软SiteWhere项目的核心特性,包括支持千万级别双向设备接入,内置主流接入协议支持(如AMQP、MQTT、WebSocket……),无缝集成大数据平台,复杂事件路由和处理,支持Docker集群部署。SiteWhere采用全插件式架构与各种平台整合,并且是开源的,基于CPAL license发布。


王伶卓主要针对的是日益严峻的安全问题展开演讲,目标是安装重要补丁包括内核补丁无需重启机器。利用由SUSE公司主导开发的开源工具kGraft,不需要重启内核就可以打补丁。补丁形式是一个模块文件,kGraft取代已经运行的内核里面的函数。根据他的演示,在没有重启内核的前提下,用KGraft加一个新的模块,就可以把内核漏洞修复,之后还可以验证是否已经成功打上补丁。KGraft主要的应用场景,包括kernel_func、reality_check、buggy_func和fixed_func等。

潘凌涛分享了他在开源领域的创业感悟。第一个体会是朴实直接的产品定义更好,第二个感悟是商业模式的选择:卖服务适合OpenStack和Hadoop等多个厂家开发的比较复杂的软件产品,可以提供很大价值;单一厂商提供比较简单的产品,就比较适合卖特性,并且简单产品分分专业版和社区版是更可行的商业模式。潘凌涛还强调,一个软件项目必定生存于一个生态系统之中,这个生态系统决定你能不能很好地发展。

更多精彩内容,请查看大会直播专题: http://special.csdncms.csdn.net/OSTC2015/

0
0