如果说虚拟机作为一项革命性技术,在过去的十来年深刻地影响了IT界。那么如今以Docker为代表的容器技术,凭借其轻量、快速等优势,推动着互联网产业的革新与发展。而七牛云工程效率团队致力于打造高效稳定的CI/CD生态系统,并在完成了基于容器化CI/CD平台的开发和落地过程中,不断探索测试环境容器化的方向。在此基础上,也观察到了产品架构、服务特性、服务间依赖的复杂度给平台带来的诸多挑战。
7月6日,在ArchSummit2018深圳站|全球架构师峰会上,七牛云工程效率部技术专家宫静分享了主题为《基于容器和大数据平台的持续交付平台》的演讲。本次演讲的主要内容是基于容器和大数据平台去构建的持续交付系统,是七牛云工程效率部在持续交付、容器化方面去做的技术实践。从以下两个方向展开:一个是容器化方向,一个是持续交付的平台。主要结合在七牛云的实践来介绍持续集成、持续部署在容器化方向的探索和思考,以及未来的方向。
七牛云工程效率部技术专家宫静
以场景为驱动,解决实际痛点
七牛云创立至今已有七年时间,作为国内领先的以视觉智能和数据智能为核心的企业级云计算服务商,同时也是国内最有特色的智能视频云服务商,每年营收增速超300%,累计为 70 多万家企业提供服务,覆盖了国内80%网民。随着市场的快速变化,七牛云的业务需求也需拥有快速迭代、快速发布的能力。因此,在多平台交互、多代码版本存在、多服务组件互相依赖的情况下,要保证高质量的交付及产出效率,最关键的环节就是如何保证快速验证满足客户的场景,并且精准的达到可上线的状态,亦或是证明你的功能能够上线,这些都是在测试及生产环节需要着重考虑的问题。
在开发环境下多样化的编译、运行环境使得复杂度导致调试自测难度增加,复杂的测试环境在有限的测试资源下如何提升验证效率、如何追踪并分析代码状态、产品质量,服务拆分后带来的架构复杂度、增加产品整体部署和运维的难度等问题下,对于产品运维人员来说,则需要考虑产品整体部署运维的难度。根据以上场景痛点,七牛云在解决这些问题时有着自己的方向以及思路。
据宫静介绍“第一是要保证完善的工具链,不管是开发人员、测试人员以及运维人员都需要工具链的支持;第二点是容器化方向,我们的资源能够大幅提升它的有效利用率;第三点是可以做到环境的隔离,保证代码在一致的环境下编译运行,可移植性是增强的;第四点是质量效率上保证有持续演进的CICD系统,可以保证工程效率部做快速的迭代以及有效的验证;第五点是全流程去保证从研发到交付的内容是符合我们效率上、质量上的要求以及质量效率体系的建立。”
基于此,七牛云持续交付系统SPOCK平台应运而生。
SPOCK:基于容器与大数据平台的CICD平台
据宫静介绍,SPOCK平台的定位是基于容器和大数据平台的持续交付系统。在容器化的实施方面,SPOCK平台的优势主要包括以下六点:
1、对容器化测试环境进行一键式管理;
2、服务部署模块化,可以自由编排,当面对复杂产品结构时,自由编排则会保证创建产品环境的灵活性;
3、模块化工作流,用户可通过配置来按照需要对工作流路径进行扩展;
4、持续集成持续发布,与研发流程中所涉及到的各个发布系统集成起来,实现代码持续集成持续交付;
5、基于大数据平台Pandora的日志分析服务
6、全流程的质量效率追踪
宫静表示“研发团队的角色不同,都可以去使用SPOCK平台进行代码的持续集成。开发人员可能使用流程是当开发完成一部分功能的开发,可以去手动地触发的工作流,这个工作流是在SPOCK平台中管理的,它可以做到基于容器化的统一构建,SPOCK平台可以把构建镜像自动部署到容器云环境中,提供给开发同学进行调试和自测。”
SPOCK平台拥有两个特性,容器环境的管理以及容器环境之上做到持续交付的实现。SPOCK平台中以产品抽象成产品模版进行管理,基于模版去部署产品实例。这些部署和模版是通过K8SCTL模块去实施,从而在容器集群中去生效,底层则是基于七牛容器云服务平台KirkCluster。而Pandora服务是七牛大数据平台,基于大数据平台对整个持续交付流程和测试环境集群做数据的统一收集和分析,最终可以在Pandora大数据平台上进行数据分析。
SPOCK实施:基于大数据平台Pandora的日志分析服务
对于将服务容器化,当要面临几十个服务、上百个服务时,要面对的不仅是服务量级上的变化,不同环境、不同场景它的配置以及运行环境可能是不一样的,而所需资源也不一样。要怎么将这些差异在平台中去有效地管理和维护,这就是SPOCK在容器化方向做的一些探索。
而对于如多个产品需要部署在同一个基础服务模块上或者部署的服务间有相互依赖,应对不同环境,七牛云是如何去实施的呢?宫静表示“一个实际案例是要去部署一个带数据库服务的架构时,首先要去定义这个产品结构,将产品中的服务做一个抽象、隔离、拆分。抽象出前端的服务、后端服务、数据库服务,把这些前端服务、后端服务、数据库服务都模块化,作为服务模块去管理。编排的时候把服务按照逻辑编排到服务组,服务组内部都是平行的,同一服务组没有先后的启动顺序。但是当我要整体的去部署这个产品的时候,我可能先去部署数据库服务组,然后再去部署我的后端服务组,最后再去部署前端服务组,当所有服务组都部署完成之后,整个产品就可以对外提供一个可访问域名,然后作为一个整体去运行起来。”
在实践中,一些服务判断现有方案下不适合做容器化,怎样去提供可以一键部署的测试环境?SPOCK的解决方案把物理级部署和容器部署做一个打通,在SPOCK去进行一键部署时,物理机部署和容器服务部署同时支持,服务之间可能有物理级部署和服务部署两部分,然后它们之间可以互相依赖。SPOCK平台需要把已有的物理级部署方式在平台上实现、对接。然后需要去梳理服务依赖关系,通过统一的配置管理和统一的规划来进行部署实施。
宫静表示“我们实施中遇到的日志方面的实际问题,如当容器服务重启伸缩时,它的日志到底是如何管理收集,我们现在的实施是基于大数据平台—Pandora做一个统一的日志收集和分析的服务,也就是说我在这个容器集群上面的所有测试环境,都基于大数据平台的数据源收集的组件去进行数据收集,数据收集后我们把它统一放在数据平台上做日志管理,通过这个日志管理有一些新的创新点,当日志统一收集起来之后,它可以做更高效的分析,可以定制化的搜索,业务报警等。”
七牛云的愿景是缩短产品到想法的距离,而对于未来将会考虑的方向,宫静表示,“希望把测试服务化对研发团队进行开放。现在做到的是测试环境,作为一个一键部署的服务去提供开放,之后希望把所有的这些持续交付的流程环节都把它模块化、服务化,作为测试服务提供出去。这样所有开发人员都是可以通过服务化的方式,去使用七牛云的测试体系、质量体系。”
免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。