DevOps实践-设计-部署流水线设计

简介: 在一个软件产品公司中,一般的基础设施会包括在每个产品线上的各种环境、以及针对这些环境构建起来的部署流水线。

DevOps实践系列文章,请参见连接。

描述

在一个软件产品公司中,一般的基础设施会包括在每个产品线上的各种环境、以及针对这些环境构建起来的部署流水线。

  • local:本地开发环境
  • dev:内部开发环境
  • mock:团队间协作时使用的模拟环境
  • test:供测试人员测试环境
  • performance:非功能需求测试环境
  • stage:试运行环境(新功能部分目标用户使用)
  • production:对外开放的产品环境

一个已经上线的正式产品,第一要务就是保证线上系统是稳定可靠运行的。所以需要通过各种手段保证新功能上线,线上系统问题的快速反馈与立即解决。根据不同公司产品形态的不同,每个公司都需要有一套功能上线流程以保证线上系统的正常运行。

开发到上线的流程(使用mermaid编写)

上图中比较详尽的描述了一个功能从开发到上线的整体过程。且在过程中每一个过程都由不同的角色参与。最终保证系统在线上环境的正常运行。故根据上图的流程下面对持续交付过程中操作进行分析。

分析与拆分

软件开发是一个团队合作的工作。在图中由相关的人员做相关的推动之后功能才能进入到下一个步骤。每一个步骤都可以将动作分为:构建、部署、测试和发布。而每个步骤所做的内容也有所不同,下面以步骤和环境例举要做哪些操作:

步骤 构建 部署 测试 发布
开发集成 编译
代码扫描
单元测试
简单部署
部分环境部署
开发测试 推送到测试环境
团队间协作 编译
自动接口测试
无部署
mock服务器
接口测试 将接口模拟发布
交付测试 编译
自动验收测试
全环境部署 自动回归测试 推送到用户验证环境
交付运维 编译 容器部署
负载节点
升级脚本验证
release notes验收
推送到正式环境
正式上线 编译
构建容器
容器部署
负载节点
无测试 允许回滚

对上面的操作进行拆分后,可以分为对资源的管理工作:

  • 二进制包
    下载代码、依赖管理、编译、打包、代码扫描、单元测试
  • 容器
    构建、发布、拉取、运行
  • 部署
    架构即代码、蓝绿发布、回滚

设计原则

前一段时间写了一篇分层架构模式,这里以分层的方式去说明部署流水线的分层关系。这里的分层其实是理解或概念的层面。这里将分部署流水线设计分为几个层次:服务层,流程层,原子操作层。

  • 服务层
    提供自定义能力,可以将流程和原子操作组合成一个适用于当前业务系统的。这个是最顶层,最实用的实用层。
  • 流程层
    提供一整套流程提供各种各样的流程。大到可以将整体持续交付写到一个Pipeline内,也可以只对容器构建,发布过程形成一个Pipeline。只要之后可以用流程去组织各种各样的大的服务。
  • 原子操作层
    提供最基础的原子操作。这里可以将上面提到的对资源的操作作为一个原子操作。不需要划分的更小。

总结

最好的实践,是在有大量项目的情况下去实现原子操作和流程层,然后在这两层上去实现具体项目的服务。如果产品型公司,比较好的方式是直接实现流程层和服务层。这样既可以满足业务要求,也可以降低流水线构建的成本。

参考

持续交付

目录
相关文章
|
3天前
|
运维 Devops 持续交付
构建高效稳定的云基础设施:DevOps与容器技术融合实践
【5月更文挑战第31天】 随着云计算的普及和企业数字化转型的加速,传统的IT运维模式已无法满足快速迭代和持续交付的需求。本文探讨了将DevOps理念与容器技术相结合,构建一套高效、稳定且易于管理的云基础设施的实践方法。通过案例分析和技术选型,展示了如何实现自动化部署、监控和扩展,以及如何提高系统的可靠性和安全性,最终实现运维效率的显著提升。
|
4天前
|
运维 JavaScript Devops
DevOps实践:通过云效实现hexo自动构建部署发布
DevOps是一种融合开发、技术运营和质量保证的流程,旨在增强跨部门沟通与协作。通过自动化软件交付和架构变更,DevOps加速了构建、测试和发布软件的过程。本文作者分享了如何使用阿里云效平台实现个人Hexo博客的自动化部署,从而实现持续集成和持续部署(CI/CD)。在应用DevOps之前,作者需手动上传和部署文件;应用后,只需提交Markdown文件,其余步骤由DevOps平台自动完成。通过云效平台的代码管理和流水线功能,实现了从代码提交到自动发布的无缝衔接。
29 2
DevOps实践:通过云效实现hexo自动构建部署发布
|
4天前
|
运维 Kubernetes Devops
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第30天】 在当今快速迭代和持续交付的软件开发环境中,传统的IT运维模式已难以满足业务需求。本文深入探讨了如何通过DevOps理念和容器化技术的有机结合,构建一个既高效又稳定的云基础设施。文章首先概述了DevOps的核心概念和实施要点,然后详细介绍了容器化技术的优势及应用实践,最后通过案例分析展示了两者结合带来的显著效益。
23 3
|
4天前
|
运维 监控 Devops
构建高效自动化运维系统:DevOps在企业级应用的实践
【5月更文挑战第30天】 随着信息技术的飞速发展,企业对软件交付速度和稳定性的要求越来越高。传统的运维模式已无法满足快速迭代和高效稳定的需求,因此,本文将探讨如何通过实施DevOps文化、流程和工具,构建一个高效的自动化运维系统。文章将详细描述DevOps的核心理念、关键技术组件以及如何在组织中落地实施策略,旨在帮助企业提升运维效率,加速产品的上市时间,同时保证系统的高可用性和稳定性。
|
5天前
|
运维 Devops 持续交付
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第29天】 在当今快速迭代和持续交付的软件开发环境中,传统的IT运维模式已无法满足业务发展的需求。本文探讨了如何通过整合DevOps理念和容器化技术,构建一套既高效又稳定的云基础设施。文章首先概述了DevOps的核心概念及其对运维领域的影响,随后详细介绍了容器化技术的关键组件和优势,并通过实际案例分析展示了两者结合的最佳实践。通过阅读本文,读者将获得如何在现代云计算环境中实现自动化、可伸缩性和高可用性的深入见解。
|
5天前
|
运维 Kubernetes 监控
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第29天】在当今数字化转型的浪潮中,企业对IT基础设施的要求越来越高。本文探讨了如何通过结合DevOps和容器化技术来构建一个灵活、可扩展且高效的云基础设施。文章首先概述了DevOps文化的重要性及其对运维自动化的影响,接着深入分析了容器化技术的基本原理及其带来的优势。最后,本文通过实际案例展示了如何将这两种方法结合起来,以实现持续集成、持续部署(CI/CD)及微服务架构的最佳实践,从而提升系统稳定性和运维效率。
|
5天前
|
运维 Devops 持续交付
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第29天】在当今快速迭代的软件开发环境中,传统的运维模式已难以满足敏捷和持续交付的需求。本文将探讨如何通过整合DevOps理念和容器化技术,构建一个既高效又稳定的云基础设施,以支持现代应用的部署和管理。文章将详细阐述容器化的核心概念,以及它如何与微服务架构相结合,进而优化资源的使用、提高系统的弹性和可伸缩性。同时,我们还将讨论DevOps实践中的关键自动化工具和流程,它们如何促进团队协作,缩短开发周期,并确保部署的一致性和可靠性。
|
5天前
|
数据可视化 搜索推荐 Devops
从DevOps实践者的角度谈谈云效Flow
这篇文章是一位DevOps实践者对云效流水线Flow的评测。首先介绍了自己参与评测的背景,并对Flow的易用性给予了肯定,认为它适合新手,尤其是可视化的编排功能。然后,作者讨论了Flow在新人上手、产品功能、性能和开放性方面的表现,指出Flow在插件开发能力和YAML编排体验上存在提升空间。他还提到了YAML编排的学习曲线和与可视化的结合问题,以及任务管理和步骤名称的混淆。此外,作者建议Flow增强模块间的逻辑性和交互清晰度,以提供更顺畅的工作流程体验。最后,作者总结了Flow的优点(功能齐全,适合中小企业)和需要改进的地方(业务逻辑、制品库能力和私有化场景的支持),并对其未来发展提出了期待。
198 0
|
5天前
|
数据可视化 搜索推荐 Devops
从DevOps实践者的角度谈谈云效Flow
一名DevOps实践者参与了云效流水线Flow的评测,认为Flow对新手友好,具有可视化编排功能。但在上手过程中,了解相关术语和流畅编排设计可能构成一些挑战。Flow的功能基本满足需求,但开放性有待提高,建议开放插件开发以丰富生态。YAML编排作为趋势,Flow在易用性和功能完善上仍有进步空间,如语法检查、智能提示等功能。此外,产品模块间的逻辑性和交互清晰度也需改进。总结来说,Flow功能齐全,适合中小企业,但在用户体验和生态建设上有改进余地。
124 3
|
5天前
|
监控 Devops API
构建高效微服务架构:API网关的作用与实践构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第28天】 在当今的软件开发领域,微服务架构因其灵活性、可扩展性和容错能力而备受推崇。本文将深入探讨API网关在构建微服务系统中的关键角色,包括它如何促进系统的高可用性、安全性和性能监控。我们将剖析API网关的核心组件,并借助具体实例展示如何实现一个高效的API网关来服务于复杂的微服务环境。 【5月更文挑战第28天】 随着企业数字化转型的深入,传统的IT运维模式已难以满足快速迭代和持续交付的需求。本文聚焦于如何通过融合DevOps理念与容器化技术来构建一个高效、稳定且可扩展的云基础设施。我们将探讨持续集成/持续部署(CI/CD)流程的优化、基于微服务架构的容器化部署以及自动化监

热门文章

最新文章