菜单

Logo
新闻中心

DevOps 与发布

发布不能是一场赌博。

如果发布依赖个别人员和手动操作,每一次变更都会面临不必要的风险。我们构建可追溯的构建与交付流程,将其与检查相结合,并明确如何安全地停止或回退存在缺陷的版本。

在共享办公环境中进行软件开发,示意图
从任务提出,到有据可查的移交。

这项服务的适用场景

DevOps 与发布:您委托我们的任务。

  • 替代手动部署
  • 让构建和发布可追溯
  • 让开发与运维更紧密地衔接

可靠的发布来自代码、基础设施、配置和审批的相互配合。我们分析您当前的交付路径,消除人为错误根源,并为正常变更和紧急情况建立可追溯的流程。您的团队应当能够识别当前运行的版本、其经过的检查,以及出现问题时可用的回退路径。

委托任务可能包含的内容

  • 分析当前的构建、审批与交付流程
  • 构建、检查和版本化制品的自动化
  • 访问权限、机密信息与环境配置的分离
  • 规划兼容的数据库变更和受控发布
  • 验证有缺陷发布的中止、重启和回退

具体范围、验收环节和您的参与方式,我们会在报价中明确约定。

整体关联,一目了然

每一次变更都需要受控的路径。

  1. 01

    代码

    追溯变更与评审记录

  2. 02

    构建

    创建并检验版本化构建产物

  3. 03

    上线

    管控发布与交付

  4. 04

    监测

    衡量效果并应对故障

规划、实施与决策

DevOps 与发布 的关键所在。

01

流水线不仅仅是一个部署脚本

我们梳理从变更到上线生产环境的整个路径:源代码、依赖项、构建、测试、制品和发布审批。每个环节都需要明确的输入和可追溯的结果。目标是让同一个经过检查的软件版本以受控方式在各环境之间流转,而不是为每个环境重新组装。

流水线的权限和访问凭证被限制在必要的任务范围内。执行环境和依赖项需要更新,并具有可追溯的来源。哪些检查可以阻断发布,需要明确约定,并结合真实变更加以验证。

02

让环境和配置保持可控

测试环境与生产环境之间的差异会导致启动时才暴露出来的问题。我们对配置、机密信息和基础设施定义进行结构化处理,使偏差变得可见。容器可以为此提供帮助,但无法替代清晰的职责划分或合适的运维平台。

与您现有工具的集成是首要考量。团队应当理解自己的流水线,并在出现故障时仍能采取行动。因此,我们不仅记录成功路径,也记录失败的构建、被阻断的发布以及中断后的重启过程。

03

统筹考虑发布上线、观测与回退路径

新版本可以逐步发布,也可以在约定的维护窗口内发布。哪种方式合适,取决于应用、数据库和基础设施。在发布之前,我们会确定哪些信号会触发中止,例如错误率上升或核心流程发生故障。

应用的回滚并不会自动带来数据的回滚。因此,数据库变更、后台任务和外部消息也必须纳入回退路径的考虑范围。我们会验证约定的策略,并记录在什么情况下需要用修正性的前向变更来代替回退。

工具服务于任务

契合您环境的技术。

  • Git
  • CI/CD
  • 容器
  • 基础设施即代码

选择依据现有系统、您的团队以及后续运维需求而定。并非每个项目都需要用到上述所有技术。

面向业务负责人与技术团队

实施背后的决策考量。

04

构建来源、依赖项与访问边界

流水线要处理第三方软件包、构建工具,并且往往拥有影响范围很广的访问权限。我们梳理这条信任链,将对不可信变更的检查与拥有生产权限的步骤区分开来。执行环境需要有限的权限和可追溯的初始状态。访问凭证以受控方式提供,且不得出现在制品或构建日志中。

对于已发布的制品,其源代码版本、依赖项和已完成的检查应当可以追溯。组件清单有助于日后评估已知漏洞,但并不能自动证实这些漏洞是否可被利用。签名和来源证明只有在接收环境同样进行验证时才有意义。因此,我们会共同确定生成、存储和验证的方式,并约定如何处理被禁用的组件或已遭入侵的访问凭证。

05

数据库架构与应用版本协同交付

在逐步发布的过程中,新旧应用版本可能同时处于运行状态。立即删除的数据库列或更改的消息格式,都可能破坏旧版本。因此,我们会规划兼容的过渡状态:先补充新结构,以受控方式迁移数据,切换调用方,然后才移除不再需要的部分。后台任务和外部消费方也需要一并纳入考虑。

功能开关可以将功能的部署与其启用区分开来。但它们需要明确的责任归属、测试变体和预定的失效日期,否则会持续增加可能状态的数量。每次发布都会记录哪些版本可以协同工作,以及应用是否仍可以被回退。不可逆的数据变更所需要的策略,不同于简单替换可执行制品。

06

发布信号与开发流程改进

技术上交付成功,并不等于发布成功。上线后,我们会观测选定的核心业务操作、错误率和响应时间。分阶段发布可以限制受影响的用户范围,但这需要合适的架构和有意义的测量点。中止阈值和责任人会在变更之前确定,这样在时间压力下就不必再讨论衡量标准。

为了改进流程,我们会关注评审的等待时间、流水线耗时、频繁的中止情况,以及变更失败后恢复所需的工作量。这些信息用于改进整体流程,而不是对个别开发人员进行排名。如果构建速度很快,但之后的审批还要拖上好几天悬而不决,那么速度的意义就不大。因此,相关措施会与开发、安全和运维团队共同商定优先级,并结合实际瓶颈进行核查。

清晰可循的工作成果

您最终获得的成果。

成果 01

版本化的构建与部署流水线

成果 02

权限与配置方案

成果 03

带有经过验证的回退路径的发布检查清单

示例项目流程

项目可以这样开展。

某产品团队此前一直在夜间手动交付。新的流水线会生成版本化制品,检查核心流程,并在正式上线前请求审批。交付后,团队会持续观测既定的运维指标。

示例场景,非客户案例或成果保证。

这些信息有助于启动

  • 源代码管理和现有的发布流程
  • 可用的测试环境和生产环境
  • 运维负责人以及审批和访问权限规则

缺少相关材料并不妨碍启动。我们会与您共同确定首先需要获取哪些信息。

您的项目详情

以可重复的方式,将变更交付到生产运行环境。

我们设计的发布流程,将构建、测试、审批和部署环节连接起来。目标是形成一条从源代码到实际运行版本、全程可追溯的路径。

让同一个制品贯穿各个环境

如果每个环境都各自独立重新构建,即使版本标签相同,也可能悄然出现差异。我们会规划版本化的制品和相互独立的配置,确保上线部署的正是经过测试的那个版本,并且有据可查。依赖项以及对软件包源的访问,也会纳入构建流程当中。

机密信息不应出现在源代码或可公开查看的构建产物中。我们会接入约定的访问凭证管理机制,并限制流水线的权限范围。每一次发布都应当只拥有其具体步骤所需的权限。

统一规划数据库变更和回退路径

应用的回滚,并不会自动撤销已经执行的数据迁移。因此,我们会检查新旧应用版本之间以及它们与数据版本之间的兼容性。合适的分阶段变更,可以做到先引入新字段,再移除旧字段。

部署完成之后,我们不仅检查流程状态,还会检查关键功能和运行指标。小范围发布、功能开关或预先规划的回退路径,会依据风险高低来选择。移交文档会说明在什么情况下必须停止发布,以及由谁来决定继续推进还是回退。

示例项目场景

该服务在日常工作中如何发挥作用。

示例:某次发布新增了一个日后将成为必填项的字段。我们首先以兼容的方式扩展存储结构,接着补全存量数据,最后才启用新的业务规则。每个阶段都配有各自的测试,以及相应的回退路径。

该示例说明的是一种可能的流程,并非客户案例。

委托之前

您关于 DevOps 与发布 的问题。

为此必须使用 Kubernetes 吗?

不需要。可靠的流水线同样适用于虚拟机、传统服务器或托管平台服务。我们会根据您的需求和团队能力选择运维平台。额外的复杂性必须要有可论证的价值。

自动化部署是否必须省去审批环节?

不需要。自动化可以承担技术性步骤,而生产环境的审批则有意保留给负责人来完成。我们会约定哪些变更可以自动继续执行,哪些需要额外的检查。紧急变更同样需要一套记录在案的流程。

现有的流水线可以改进吗?

可以。我们会分析等待时间、容易出错的环节、权限和质量信号,并据此形成一份按优先级排列的改进清单。通常,清晰的制品版本、更好的测试数据和经过验证的回退路径,比彻底更换工具更有价值。

下一步

告诉我们,您目前遇到了什么问题。

只需简要描述您的应用、遇到的问题和目标,即可开始沟通。您所选择的服务会自动带入您的联系咨询中。

咨询此项服务

我们的合作伙伴

  • Microsoft
  • Microsoft Azure
  • Amazon AWS
  • Google Cloud
  • Thales Group
  • Arrow ECS
  • Vodafone
  • IBM
  • Veeam
  • Atlassian
  • JetBrains
  • NinjaOne
  • OPSWAT
  • Utimaco
  • Eviden

无障碍

根据您的需要调整页面显示。

本页面暂无简明语言版本。

当前设置仅对本次访问有效。您可以在 Cookie 设置中允许永久保存。