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

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

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

描述

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

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

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

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

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

分析与拆分

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

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

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

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

设计原则

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

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

总结

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

参考

持续交付

目录
相关文章
|
7月前
|
Kubernetes Devops 应用服务中间件
基于 Azure DevOps 与阿里云 ACK 构建企业级 CI/CD 流水线
本文介绍如何结合阿里云 ACK 与 Azure DevOps 搭建自动化部署流程,涵盖集群创建、流水线配置、应用部署与公网暴露,助力企业高效落地云原生 DevOps 实践。
821 1
|
7月前
|
弹性计算 Devops Shell
用阿里云 DevOps Flow 实现 ECS 部署自动化:从准备到落地的完整指南
阿里云 DevOps Flow 是一款助力开发者实现自动化部署的高效工具,支持代码流水线构建、测试与部署至ECS实例,显著提升交付效率与稳定性。本文详解如何通过 Flow 自动部署 Bash 脚本至 ECS,涵盖环境准备、流水线搭建、源码接入、部署流程设计及结果验证,助你快速上手云上自动化运维。
601 0
|
7月前
|
监控 安全 Devops
DevOps 流水线的网络安全盲区与防御策略
在软件研发中,DevOps流水线加速了开发与交付,但也带来严重安全风险。自动化节点和第三方集成成为攻击入口,凭证泄露、供应链渗透、配置错误和依赖混乱等问题频发。企业需构建全流程安全体系,嵌入自动化安全策略,强化访问控制与监控,提升全员安全意识,实现效率与安全的协同发展。
573 1
|
运维 监控 Devops
自动化运维实践:打造高效的DevOps流水线
在软件开发的快节奏中,自动化运维成为提升效率、确保质量的关键。本文将引导你理解自动化运维的价值,通过实际案例分享如何构建一个高效、可靠的DevOps流水线。我们将从持续集成(CI)开始,逐步深入到持续部署(CD),并展示代码示例来具体说明。准备好让你的运维工作飞跃式进步了吗?让我们开始吧!
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
在DevOps实践中,确保安全审核和合规性至关重要。通过自动化合规审查、持续安全集成、基础设施即代码管理、敏捷合规框架、跨部门合作、教育与培训、实施DevSecOps模型、使用安全编码技术、整合正确工具及采用安全即代码等措施,组织能有效管理并降低合规与安全风险,促进高效可靠的DevOps文化发展。
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率
在DevOps实践中,为平衡开发速度与安全审核效率,可采取自动化安全测试、安全编码实践、持续监控与日志分析、集成安全工具、合规性代码审查、基础设施即代码、权限和访问控制、安全培训、漏洞及补丁管理和持续反馈改进等措施,确保高效安全的开发流程。
|
运维 Devops jenkins
DevOps实践:持续集成与持续部署在现代软件开发中的作用
【10月更文挑战第42天】在快节奏的软件开发世界里,DevOps已经成为一种提升效率、确保质量和加速交付的重要方法。本文将深入探讨DevOps的核心组成部分—持续集成(CI)和持续部署(CD)—并展示它们如何通过自动化流程优化开发周期。我们将从基础概念讲起,逐步过渡到实际操作,最终通过一个简单代码示例来演示这一过程。文章旨在为读者提供清晰的指导,帮助他们理解和实现CI/CD流程,从而在软件开发领域取得竞争优势。
|
Devops jenkins 测试技术
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第41天】在软件开发的世界中,快速迭代和高效交付是企业竞争力的关键。本文将带你走进DevOps的核心实践——自动化部署与持续集成,揭示如何通过它们提升开发流程的效率与质量。我们将从DevOps的基本理念出发,逐步深入到具体的技术实现,最终展示一个实际的代码示例,让理论与实践相结合,为你的开发旅程提供清晰的指引。
281 4
|
敏捷开发 缓存 前端开发
阿里云云效产品使用合集之前端打包时npm安装卡住一般是什么导致的
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
敏捷开发 弹性计算 持续交付
阿里云云效产品使用合集之同一个主机部署是否支持下载多个制品
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。