2016CNUTCon全球容器技术大会 BoCloud博云谈容器实践
分类:博云动态 发布时间:2016/9/9 0:00:00

  为期两天的CNUTCon2016全球容器技术大会今天在北京喜来登长城酒店正式开幕。


  大会吸引了众多对容器感兴趣的资深开发者、运维工程师和相关技术人员参加。现场人头攒动,气氛热烈。


BoCloud<a style=博云展台" src="https://www.bocloud.com.cn/manager/upload/201702/21/201702211819296602.jpg" />

BoCloud博云展台


  本次大会邀请了国内外知名企业45名技术专家,设计了11个专题,51场演讲。为参会者带来一场丰富盛大的容器经验交流盛会。


  本次大会以“案例剖析·实践驱动”为主题,围绕微服务容器云、Docker实践 、Kubernetes实践、Mesos实践、CI/CD等热门技术进行深度讨论,从技术层面进行剖析,为参会者解决在实际实践中遇到的共性技术难题。


  来自Netflix、Docker、CoreOS、Mesosphere、腾讯、阿里巴巴、百度、京东、携程、同程、搜狗、平安科技、宜信、广发证券、知乎、新浪微博、BoCloud博云等知名公司的技术专家从多方面进行了实践经验分享。


  在下午的容器实践经验谈专场中,BoCloud博云 CTO 李亚琼为参会者带来了《基于Docker+CI/CD的DevOps实践经验分享》主题演讲。


  李亚琼博士全面负责公司的技术及产品研发工作。毕业于中国科学院计算技术研究所,获计算机系统结构工学博士学位。加入博云前,他先后在华为和曙光公司进行云计算相关产品研发,曾任曙光公司云计算产品事业部总工程师,兼任电子政务云集成与应用国家工程实验室专家委员。他长期从事计算机体系结构、操作系统、虚拟化和容错计算等方面研究工作。


  Docker技术和CI(持续集成)/CD(持续交付)技术的结合是DevOps理念落地中需要解决的一个技术难题,其挑战主要表现在如何实现由多种语言开发、多种构建工具支撑、多个版本输出的前提下找到一条能够最简化工作、自动化程度最高的技术实践之路。


  DevOps落地困境


  DevOps落地为什么那么难?因为从设计人员、组织架构、流程、人员技能到工具,变化很大,要求很高,建设风险很高。从理念到落地,需要一定的周期才能够成熟,技术决策者一般都比较慎重。


  DevOps落地困境包括:


  设计部门多
  流程改造复杂
  责任边界需要重新划分
  考核等配套机制没有跟上
  技术成熟度低


  自动化是核心问题


  回过头来看,人们把过去打包、配置、部署,甚至运维,都做了很多自动化的尝试。最为典型的是CI和CD,为什么说典型呢?因为它解决了两类人员边界清晰的需求:打包应用,部署应用。


  从整个软件的生命周期看,再往前就是开发阶段了,从目前的技术发展水平来看,还没有一种比较普世的自动化Coder Machine来根据你的需求直接生成代码,这里面涉及到大量的需求分析、归纳、架构设计、技术选型、编码、调试等复杂的工作;往后看,运维工作能不能自动化呢?现在看,至少对于常例性的工作,可以自动化的,不如批量的文件上传、软件安装等等,但是由于系统的运行涉及的因素太多,无论是基础设施、还是操作系统、还是环境配置、以及用户的输入/输出,其组合起来的模式空间还是非常庞大的,所以这一部分完全自动化也比较困难。


  传统的CI/CD怎么实现的?


  Jenkins:任务、代码仓库、构建脚本、配置变量。


  本质上这种自动化也是Case-by-Case的,因为每一个项目选用的开发语言、构建工具、配置方式等都不完全相同,所以,Jenkins构建属于“一次配置,多次受益”,这一次的配置操作本质无法自动化,需要经验丰富的开发人员(项目leader)开发脚本来处理。


  那么Docker这样的容器技术出现了以后,是不是简化了这个工作呢?


  应该说把一部分任务通过docker封装,实现了开箱即可用,这一部分工作主要就是配置工作。具体到系统构建,还是需要依赖Jenkins类的工具。


  那么,为什么大家都欢迎Docker这个技术呢?


  我看,最主要贡献是清晰了发生问题的边界,减少了开发和运维之间的扯皮。开发给出的是一个可运行的环境,而不是一个需要二次人工部署配置的文件集合。


  针对Docker环境的CI/CD自动化部分,也是很多PaaS平台软件的主要功能有:


  Openshift、RancherOS、CloudFoundry、heroku、stackato、tsuru等。


  从开发和运维的角色看问题是不是都解决了?


  从开发的角度看,针对环境稍微复杂的应用,需要开发自己的框架插件;从运维的角度看,应用架构的灵活性也需要不同的插件来支撑,同时,运维还需要解决环境适配问题,比如用生成环境的IP等替换配置文件中的默认值等。


  所以,引入了docker后看,问题还是不少。


  开发/运维的核心需求


  开发人员构建自动化,至少不增加现有开发的工作量;运维人员,交付的系统边界清晰,提供编排/配置自动化能力。


  DevOps关键动作


  构建

  构建动作用来生成应用程序包、配置文件、安装/部署脚本等,维护程序包的版本。

  编排

  根据应用系统的拓扑、应用依赖平台、软件包、配置文件(脚本)等,根据依赖关系进行架构编排、动作设置。

  部署

  根据编排控制文件,进行实例化部署,完成环境设置、平台配置、软件安装、配置更新等动作。

  配置

  定义不同阶段要进行的配置行为,解析配置模板,自动进行依赖解析,完成应用系统配置。


  那么Docker及云环境下的CI/CD系统设计原则


  确定工作流程;

  树立关键动作;

  明确动作交互边界;

  根据角色设计工具;

  内置大量可复用模板;

  同时保持一定的灵活性。


  本次演讲重点聚焦与开发(Dev)和运维(Ops)在CI/CD中的交互界面对象确定、CI/CD平台整合、关键技术分析和业务流转流程等四个方面。从实践的角度分享了BoCLoud博云在落地DevOps项目中遇到的困难、挑战和解决思路。

体验创新云技术带来核心业务效率显著提升
立即预约,加速企业数字化转型进程
Copyright ⓒ 2022 苏州博纳讯动软件有限公司 国徽 苏ICP备13004761号 法律声明及隐私政策