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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

换个角度看持续交付

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

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


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化,运维人员会花费跟多的精力在自动化持续交付平台流程的建设与优化、基础设施的建设(监控、日志、扩容)等等。

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

个人简介

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

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
9月前
|
人工智能 Kubernetes jenkins
容器化AI模型的持续集成与持续交付(CI/CD):自动化模型更新与部署
在前几篇文章中,我们探讨了容器化AI模型的部署、监控、弹性伸缩及安全防护。为加速模型迭代以适应新数据和业务需求,需实现容器化AI模型的持续集成与持续交付(CI/CD)。CI/CD通过自动化构建、测试和部署流程,提高模型更新速度和质量,降低部署风险,增强团队协作。使用Jenkins和Kubernetes可构建高效CI/CD流水线,自动化模型开发和部署,确保环境一致性并提升整体效率。
|
4月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
166 1
云原生信息提取系统:容器化流程与CI/CD集成实践
|
消息中间件 弹性计算 Kubernetes
RabbitMQ与容器化技术的集成实践
【8月更文第28天】RabbitMQ 是一个开源消息代理和队列服务器,用于在分布式系统中存储、转发消息。随着微服务架构的普及,容器化技术(如 Docker 和 Kubernetes)成为了部署和管理应用程序的标准方式。本文将探讨如何使用 Docker 和 Kubernetes 在生产环境中部署和管理 RabbitMQ 服务,同时保证高可用性和弹性伸缩能力。
342 3
|
JSON API 数据处理
Winform管理系统新飞跃:无缝集成SqlSugar与Web API,实现数据云端同步的革新之路!
【8月更文挑战第3天】在企业应用开发中,常需将Winform桌面应用扩展至支持Web API调用,实现数据云端同步。本文通过实例展示如何在已有SqlSugar为基础的Winform系统中集成HTTP客户端调用Web API。采用.NET的`HttpClient`处理请求,支持异步操作。示例包括创建HTTP辅助类封装请求逻辑及在Winform界面调用API更新UI。此外,还讨论了跨域与安全性的处理策略。这种方法提高了系统的灵活性与扩展性,便于未来的技术演进。
584 2
|
8月前
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
302 0
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
前端开发 安全 数据库
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
Web架构&前后端分离站&Docker容器站&集成软件站&建站分配
322 1
|
存储 运维 Kubernetes
云端迁移:备份中心助力企业跨云迁移K8s容器服务平台
本文将简要介绍阿里云容器服务ACK的备份中心,并以某科技公司在其实际的迁移过程中遇到具体挑战为例,阐述如何有效地利用备份中心来助力企业的容器服务平台迁移项目。
|
缓存 监控 测试技术
掌握容器化持续集成/持续部署(CI/CD)的最佳实践
【10月更文挑战第8天】本文介绍了容器化持续集成/持续部署(CI/CD)的最佳实践,涵盖容器化CI/CD的概念、优势和实施步骤。通过使用容器技术,可以实现环境一致性、快速迭代和易于扩展,提高软件开发的效率和可靠性。文章还详细讨论了编写高效的Dockerfile、自动化测试、安全性、监控和日志管理等方面的最佳实践。
|
存储 Kubernetes 负载均衡
云端应用容器化管理:全面深入评测与分析
阿里云ACK测评:提供一键式容器应用部署,集成ALB实现高效交付,但一键部署有时故障且高级配置需专业知识。操作界面直观,文档全面但对Helm等进阶主题指导不足。适合已有Kubernetes基础的用户,对于新手可能挑战较大。推荐给寻求云上容器管理解决方案的企业。
云端应用容器化管理:全面深入评测与分析
|
运维 安全 Cloud Native
"揭秘!Trivy——云原生时代的隐形安全侠,一键扫描,让容器镜像漏洞无所遁形,守护你的云端帝国坚不可摧!"
【8月更文挑战第14天】在云原生时代,容器技术如Docker与Kubernetes大放异彩,加速了应用部署。但容器化的普及也带来了安全挑战,尤其是镜像的安全性至关重要。Trivy,一款高效且轻量级的镜像安全扫描工具应运而生,成为开发者与运维人员的得力助手。它由Aqua Security开发,支持一键式全面扫描,能快速检测镜像中的漏洞与配置风险,并提供修复建议。Trivy采用Go语言编写,轻巧高效,支持多平台,并可轻松集成到CI/CD流程中,确保只有安全的镜像才能部署到生产环境。无论新手还是专家,Trivy都是构建安全可靠云环境的理想选择。
303 2

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版