如果说虚拟机是一项革命性的技术,那么它在过去的十年深刻地影响了IT世界。
所以现在以Docker为代表的容器技术正以其轻量、速度的优势推动着互联网行业的创新和发展。
七牛云工程效率团队致力于打造高效稳定的CI/CD生态,在完成基于容器的CI/CD平台的开发和实施的同时,不断探索测试环境容器化方向。
在此基础上,我们也观察到产品架构、服务特性、服务间依赖的复杂性给平台带来的诸多挑战。
7月6日,ArchSummit深圳|全球架构师峰会,七牛云工程效率部技术专家龚静分享主题为《基于容器和大数据平台的持续交付平台》的演讲。
本次演讲的主要内容是基于容器和大数据平台构建的持续交付系统。
是七牛云工程效率部在持续交付、容器化方面的技术实践。
从以下两个方向入手:一是容器化方向,二是持续交付平台。
主要结合七牛云的实践来介绍持续集成和持续部署在容器化方向的探索和思考,以及未来的方向。
七牛云工程效率部技术专家龚静以场景驱动,解决实际痛点。
七牛云成立已经七年了。
作为国内领先的以视觉智能和数据智能为核心的企业级云计算服务商,七牛云也是国内最具特色的智能视频云服务商。
年收入增长超过%,已为超过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打造统一的日志收集和分析服务,也就是说我这个容器集群上的所有测试环境都是基于大数据平台的数据源采集组件来进行数据采集的,我们放到数据平台上进行日志管理,有。
通过这个日志管理进行一些新的创新,当日志统一收集后,可以进行更高效的分析、定制化搜索、业务报警等。
“七牛云的愿景是缩短从产品到创意的距离。
对于未来会考虑的方向,龚静表示,“我们希望将测试作为服务开放给研发团队。
我们现在做的是测试环境,作为一键部署服务提供并开放。
后期我们希望将这些持续交付流程环节全部模块化、服务化,作为测试服务提供。
这样,所有开发者都可以通过服务化的方式使用七牛云的测试体系和质量体系。