`
骑猪逛街666
  • 浏览: 142039 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

基于容器服务的持续集成与云端交付(五)- 探究持续交付系统的本质

 
阅读更多

阅读原文请点击

摘要: 换个角度看持续交付 在《基于容器服务的持续集成与云端交付》系列中,我们已经讨论了持续集成与持续交付给软件开发带来的变革,介绍了如何从零搭建一个持续交付系统以及在阿里云上面如何实现持续交付。 不过,在这篇文章中,我们会用一个不一样的角度来思考持续交付,到底持续交付给我们带来了什么,在容器的持续交付的场景中还缺少什么。

换个角度看持续交付

在《基于容器服务的持续集成与云端交付》系列中,我们已经讨论了持续集成与持续交付给软件开发带来的变革,介绍了如何从零搭建一个持续交付系统以及在阿里云上面如何实现持续交付。

不过,在这篇文章中,我们会用一个不一样的角度来思考持续交付,到底持续交付给我们带来了什么,在容器的持续交付的场景中还缺少什么。回到本系列第一篇文章中的容器持续交付的流程图:

f694553ec98973d343ca89d2af7006ab222f8bc7

这张图中描述了一个基于容器的持续交付的流程,它定义了几个阶段,本地开发阶段、持续集成阶段、持续交付阶段等等,规定了在每个阶段中该做什么事情,开发人员、运维人员应该应该承担什么样的任务与责任。

从某种意义上来讲,持续交付不只只是一个技术问题,更多的是探究自动化软件标准化的交付流程的问题,通过技术的手段将软件开发、测试、集成、交付过程中的每个步骤进行标准化,然后再用一个灵活的流水线将不同的步骤串起来。

软件交付和汽车制造的原理是相似的,最早的汽车是纯手工打造的,产量低可靠性差。随着科技的发展,一辆汽车的零件可以由全球各地的公司制造,然后在一个可编程的流水线上快速的组装出来,现在组装一辆汽车只需要几分钟的时间,而这都得益于模块的标准化和可扩展的流水线。同样持续集成效果的好坏取决于标准化的程度与流水线的扩展能力:标准化程度越高、流水线扩展性越好持续交付的能力就越强。下面我们来讨论如何实现或者选择持续交付中的“标准化”与“流水线”

标准化与流水线

对于大多数的企业而言,通常情况下不会投入大量的精力来开发属于自己的持续交付系统,一般会选择开源的持续交付方案或者使用提供持续交付能力的SaaS服务,例如基于Jenkins的持续交付方案或者阿里云的CRP持续交付平台系统等等。

在Docker还没有兴起的时代,持续集成的方式通常是通过自动化配管工具来实现标准化的,比如Ansible的playbook、Chef的Cookbook等等,但是这些自动化配管工具更倾向于配置的管理与环境的初始化,换言之,自动化配管工具并不是面向交付的标准化而是更倾向于配置管理流程的标准化。

而Docker的兴起,给我们带来了交付流程标准化的可能性。当所有交付流程都变得标准化后,流水线(pipeline)则可以将不同的交付流程穿起来,实现持续交付的流程。

如何演进持续交付系统

1.制定合适自己业务形态的标准与流程

持续交付要符合自己的业务场景与形态,我们经常可以在社区中看到不同的持续集成的方案,但是,最开始要做是根据自己的业务形态来执行流程与标准。有了业务场景再去选择合适自己的持续集成方案。比如阿里云容器服务提供基于Hub的简单的持续集成方案,提供基于Jenkins的开源的持续集成方案也提供基于CRP的持续集成的方案。他们分别面向不同的场景、解决了不同的问题。先明确自己持续交付的场景与所需要的能力然后再选择不同的持续集成的方案。

2.选择一条合适的流水线或者流水线的默认实现

Docker已经帮我们解决了大部分交付流程中的标准化问题,那么选择一条适合的流水线则尤为重要,SaaS类的云服务通常情况会提供标准的流水线(pipeline)实现,但是相比而言,基于DSL的Jenkins的流水线(pipeline)是更为强大的选择。针对于不同的业务,开源的Jenkins流水线灵活的程度大于SaaS类的持续交付系统的流水线大于固定流程的流水线。

3.根据业务的需求不断的丰富流水线上的流程

在使用持续集成的过程中,我们会根据业务的形态的变化,不断的在流水线上添加或者删减持续交付的流程。当持续交付的流程被大家认可并遵守的时候,持续交付的能力就会真正的展现出来。通过类似模块化的插拔将不同的组件不同的流程融合在一起,不断的演进,满足不同维度的业务场景与方向。

尾声

还有什么是我们没有讨论的?其实Docker给我们带来的不只只是标准化的部分,还有更多的是职责划分的思考,从前从软件的开发到测试之前的部分是开发负责的,而从测试、上线、后期的线上运维都是运维的人员负责的。

不过,软件架构的变革例如微服务的兴起等等会导致运维变得越来困难,从前一个企业只有少量的“巨石”软件系统,运维人员只需要运维少量单一的技术框架的系统即可。但是,现在一个微服务系统可能有几十个模块,每个模块的运行时环境、运维方式都不尽相同,这给运维带来的难度是指数级增长的。

现在越来越多的人在讨论DevOps或者SRE,其实这并不是一个新的职业,更多的是对于开发与运维边界的重新定义。

个人觉得开发人员未来会更倾向于DevOps的方向发展,即开发人员中会有更细分的倾向,部分开发人员倾向于线上维护与组件调优而另一部分则侧重软件开发。

而运维人员会更倾向于平台化或者SRE化,运维人员会花费跟多的精力在自动化持续交付平台流程的建设与优化、基础设施的建设(监控、日志、扩容)等等。

持续集成与持续交付不仅是提速了交付的流程,更多的是优化了开发人员的职责划分与交付的方式。

个人简介

莫源,阿里云高级研发工程师。在加入阿里巴巴之前,先后在北京天方地圆科技有限公司、微软亚洲研究院任职。现主要负责阿里云容器服务产品的底层服务发现系统、集群管理系统的研发,从事容器的持续交付、持续集成的方案的设计与实现。在云计算、分布式系统、图像识别与虚拟现实方向有多年的开发经验。

阅读原文请点击

分享到:
评论

相关推荐

    企业持续集成及云端交付架构实践.pdf

    同时,还提到了资源管理和ROI复盘,以及持续交付流水线(CI/CD)在实际操作中的应用,例如提交与编译、研发编译构建、单元测试、测试与验证环境部署、系统测试、集成测试、发布与运维、生产交付、发布回滚以及生产...

    魅族持续集成及云端交付之路.rar

    《魅族持续集成及云端交付之路》是一份深入探讨手机制造商魅族在软件开发过程中的实践与探索的文档。这份资料主要围绕两个核心概念:持续集成(Continuous Integration, CI)和云端交付(Cloud Delivery),旨在阐述...

    企业持续集成及云端交付之路.pdf

    魅族科技的持续集成和云端交付之路是中国互联网企业从传统IT向现代云计算服务转型的一个缩影。文章中提到的“魅族互联网发展-时间线”描述了互联网行业的几个阶段,从互联网1.0到3.0,并且指出了互联网3.0+的发展...

    基于容器服务的持续集成与云端交付(二)-多维度打磨交付能力

    在上一篇中,和大家一起讨论了传统软件交付的问题、持续交付的难点、以及为什么云端的容器交付可以协助大家快速的持续交付。但是当真正的将一个系统通过云端容器交付的时候会发现不能单纯的将Docker作为一种交付工具...

    持续集成与交付实践指南.pptx

    ### 持续集成与交付实践指南 #### 第1章 简介 **持续集成与持续交付**是现代软件开发领域中极为重要的概念。它们不仅有助于提高开发效率,还能显著提升软件产品的质量。 ##### 持续集成的定义与作用 **持续集成*...

    软件工程中的持续集成与交付技术.pptx

    ### 软件工程中的持续集成与交付技术 #### 第1章:软件工程概述 - **定义**:软件工程作为一门学科,涵盖了软件从概念到完成的整个生命周期,包括需求分析、设计、编码、测试、部署及后续维护等多个环节。 - **...

    基于STM32F746ZG和RT-Thread的小型家用气象站源码(云端采用EMQ-X和APP).zip

    基于STM32F746ZG和RT-Thread的小型家用气象站源码(云端采用EMQ-X和APP).zip 【优质项目推荐】 1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答...

    完结13章云时代必修课-云原生CI/CD(持续集成与交付)全流程实战

    随着应用向云端迁移,持续集成与交付成为一项核心技能。然而,云原生 CI/CD 技术与工具繁多,跨项目迁移难度大,对于缺乏经验技术人员来说,学习曲线陡峭。本文从零带大家掌握CI/CD工具与平台,模拟企业项目流程,...

    华为官方HCIP-Cloud Service DevOps Engineer LVC公开课培训视频教程【共57集】.rar

    35. 02-5持续部署与发布-1持续交付与持续部署 36. 02-5持续部署与发布-2微服务架构与微服务化应用 37-39. 02-5持续部署与发布-3容器技术概述 40. 02-5持续部署与发布-4自动化的实现“一切即代码” 41. 02-5持续...

    论文研究-基于Docker的容器云平台设计与实现 .pdf

    根据提供的文件信息,本文将深入探讨基于Docker的容器云平台设计与实现相关的知识点。 首先,云计算技术的发展与云平台的商业化促使企业将复杂IT应用迁移到云端。云计算模型通常分为三个层次:基础设施即服务(IaaS...

    基于云端的生命检测系统.zip

    【基于云端的生命检测系统】是一种将生命体征监测技术与云计算技术相结合的创新应用,它旨在提供实时、高效且可靠的健康监护服务。该系统通过采集人体的各种生命体征数据,如心率、血压、血氧饱和度等,然后将这些...

    案例-基于大数据的智能云端安全防护系统-冯景辉

    案例-基于大数据的智能云端安全防护系统-冯景辉

    行业分类-设备装置-基于云端服务器的智能平板显示终端车载多媒体匹配系统.zip

    标题中的“行业分类-设备装置-基于云端服务器的智能平板显示终端车载多媒体匹配系统”表明了这个主题聚焦在IT行业中,特别是与智能设备、车载多媒体系统以及云端服务器的集成应用有关。这一系统的设计目的是提高车载...

    云端系统源码第二版

    5. **持续集成/持续部署(CI/CD)**:云端系统可能集成了CI/CD流程,如Jenkins、GitLab CI/CD等,以自动化代码构建、测试和部署,确保快速响应变化和高质量交付。 6. **安全性与隐私保护**:云端系统需要考虑数据加密...

    网络游戏-基于云端服务网络的智能家居控制系统.zip

    在本资料中,我们将深入探讨网络游戏如何与基于云端服务网络的智能家居控制系统相结合,实现更加智能化、便捷化的家庭生活。 一、云端服务网络概述 云端服务网络是互联网与云计算技术的结晶,它通过将计算资源、...

    无服务器应用的持续交付实现.pdf

    在无服务器架构中,创建管道可能涉及到设置CI/CD工具,如AWS CodeCommit、CodeBuild、CodePipeline等服务,以实现代码的持续集成和持续交付。 4. DEMO:演示无服务器应用的持续交付流程可以更直观地展示整个过程的...

Global site tag (gtag.js) - Google Analytics