了解部署策略

本文中介绍的体系结构说明了如何使用蓝绿色和加那里部署策略构建和部署现代应用。部署策略是允许修改或升级应用程序的模型和做法。部署策略允许 DevOps 团队定义如何将应用程序部署到生产环境。

通过在不同的部署策略之间进行选择,管理员可以在部署新发行版的风险、新发行版对其用户的影响以及实施策略所需的基础结构开销之间做出正确的权衡。我们希望为客户提供更多的选择,以便在他们的应用需求下做出正确的权衡。

关于蓝绿色部署

借助蓝绿色部署策略,DevOps 团队希望使用两个相同的环境(其中一个在给定时间处于活动状态)发布新版本的应用。当前版本的应用程序是在活动环境中预配的,而新版本则部署到备用环境。

部署到备用环境不会影响活动环境或用户流量。DevOps 发行版管道可以针对新版本运行验证测试,一旦获得批准,它便会通过将用户流量轻松切换到备用环境来提升到生产环境。此过程将在应用程序的每个新发行版中重复执行。

该战略的主要优势在于它提供近乎零的停机时间和即时回滚功能。如果新版本有任何问题,流量可以立即恢复到先前的稳定版本。备用环境可用于调试应用程序发行版中出现的问题。

下图说明了蓝绿色部署体系结构:

后面是 blue-green-deployment.png 的说明
插图 blue-green-deployment.png 的说明

了解蓝绿色部署组件

上述体系结构具有以下组件。

  • 区域

    OCI 区域是一个本地化的地理区域,包含一个或多个数据中心,称为可用性域。区域独立于其他区域,而广阔的距离可以分离它们(跨国家甚至大陆)。该体系结构使用单个区域。

  • DevOps 项目

    实施 CI/CD 工作流所需的 DevOps 资源的逻辑分组。DevOps 资源可以是构件、构建管道、部署管道、外部连接、触发器和环境。通过 DevOps 项目,可以轻松地对所有 DevOps 资源启用日志记录、监视和通知。

  • 构建管道

    构建管道从源代码资料档案库获取提交 ID,并使用该源代码运行构建指令。构建管道定义构建过程的一组阶段 - 构建、测试和编译软件构件,将构件传送到 OCI 系统信息库,以及(可选)触发部署。您可以在构建规范文件中定义构建运行的流和说明。

  • 构建阶段

    阶段是运行管道期间发生的单个操作。此处提到的各种构建阶段包括:托管构建阶段:用于构建和测试源代码的托管构建阶段。传送构件阶段:将构建阶段的输出推送到各种资料档案库的阶段。例如,将容器映像推送到容器存储库,将部署清单推送到构件注册表。调用部署 :在构建阶段完成后调用部署管道的一个阶段,以及解析从托管构建阶段到部署管道阶段的导出变量。

  • 代码存储库

    由 DevOps 服务托管的专用 Git 系统信息库。您可以使用我们的 DevOps 代码资料档案库存储、管理、开发源代码。部署管道 一系列步骤,用于将一组对象传送和部署到目标环境。可以通过定义可以串行或并行运行的阶段来控制软件发行版的流和逻辑。

  • 部署阶段

    阶段是在运行管道期间发生的单个操作。此处提到的各种构建阶段包括:
    • 蓝色 / 绿色 OKE 部署蓝色 / 绿色实例组部署:用于将更新的代码部署到目标环境的阶段。
    • 部署验证:用于验证部署的可选阶段(Via 函数)
    • 控制:审批:用于批准部署到目标生产环境的控制阶段。
    • Blue/Green OKE Traffic ShiftBlue/Green Instance Group Traffic Shift:生产通信将切换到最新部署环境的最终阶段。
  • DevOps 对象

    DevOps Artifact 是对组成应用程序的任何文件、二进制文件、程序包、清单或映像的引用或指针。创建构件时,将实际构件的源位置通知 Oracle DevOps。DevOps 支持 OCI 容器映像注册表和 OCI Artifact 注册表资料档案库。

  • 构件资料档案库

    构件资料档案库创建用于对相似构件进行分组的资料档案库。创建资料档案库时,可以将对象上载到其中。这些构件是传送到目标部署环境的文本文件、二进制文件和部署清单的集合。每个构件都有一个名称,该名称由其路径组成:版本。路径是用于组织对象的字符串。

  • OCI 日志记录和通知服务

    OCI 日志记录服务存储与部署相关的日志。部署运行时输出和部署的最终结果显示为日志条目。OCI 通知服务提供对部署项目及其资源的最新状态的可见性,并执行任何必要的操作。例如,当重要事件(例如部署管道中的阶段等待审批)时,您将收到通知。收到通知消息后,您可以转至 DevOps 部署管道并批准该阶段。

  • 部署环境

    环境是部署构件的客户计算资源的集合。环境可以是函数、计算虚拟机 (VM) 或裸金属实例,也可以是 OKE 集群。蓝绿色部署仅适用于 OKE 集群和计算虚拟机。

了解蓝绿部署的利弊

部署现代应用时,使用蓝绿策略有利弊。

蓝绿部署的优点是:
  • Blue Green 部署支持快速、无风险的部署。
  • 它们支持有效的简单回退机制。
  • 它们是编排 A/B 软件测试的有效方法。
  • 由于生产环境始终通过一个活动环境(在负载平衡器后面)提供,停机时间为零或几乎为零。
Blue-Green 部署的缺点是:
  • 要维护蓝绿部署的环境,需要相同的环境和资源来承担巨额成本。
  • 您需要密切监视两个环境,以管理两个相同环境之间的发行版。
  • 管理部署之间的数据库相关性非常复杂。

关于 Canary 部署

使用 Canary 部署策略,应用程序发行版会逐步更新到一部分用户。最初,新版本将部署到没有用户流量的 Canary 环境。DevOps 发行版管道可以针对新版本运行验证测试,在准备就绪后,仅将一部分用户路由到 Canary 环境。

此技术允许 DevOps 团队根据真实用户流量评估新的应用程序版本。他们可以在将新版本推出到更大的用户群之前并排比较这两个应用程序版本。它还提供风险缓解,因为新版本只为一小部分用户启用 - 这些用户可以在出现任何问题时轻松切换回以前的版本。

下图说明了 Canary 部署策略:

后面是 canary-deployment.png 的说明
插图 canary-deployment.png 的说明

了解 Canary 部署组件

上述体系结构具有以下组件。

  • 区域

    OCI 区域是一个局部地理区域,包含一个或多个数据中心,称为可用性域。区域独立于其他区域,而广阔的距离可以分离它们(跨国家甚至大陆)。该体系结构使用单个区域。

  • DevOps 项目

    实施 CI/CD 工作流所需的 DevOps 资源的逻辑分组。DevOps 资源可以是构件、构建管道、部署管道、外部连接、触发器和环境。通过 DevOps 项目,可以轻松地对所有 DevOps 资源启用日志记录、监视和通知。

  • 构建管道

    构建管道从源代码资料档案库获取提交 ID,并使用该源代码运行构建指令。构建管道为构建流程定义了一组阶段 - 构建、测试和编译软件构件,将构件传送到 OCI 系统信息库,以及(可选)触发部署。您可以在构建规范文件中定义构建运行的流和说明。

  • 构建阶段

    阶段是运行管道期间发生的单个操作。此处提到的各种构建阶段包括:
    • 托管构建阶段:用于构建和测试源代码的托管构建阶段。
    • 传送对象阶段:将构建阶段的输出推送到各种资料档案库的阶段。与容器存储库的容器映像以及到构件注册表的部署清单类似。
    • 调用部署:用于在构建阶段完成后调用部署管道的阶段,以及分析从托管构建阶段到部署管道阶段的导出变量。
  • 代码存储库

    由 DevOps 服务托管的专用 Git 系统信息库。您可以使用我们的 DevOps 代码资料档案库存储、管理、开发源代码。

  • 部署管道

    用于将一组对象传送和部署到目标环境的步骤序列。可以通过定义可以串行或并行运行的阶段来控制软件发行版的流和逻辑。

  • 部署阶段

    阶段是在运行管道期间发生的单个操作。此处提到的各种构建阶段包括:
    • Canary OKE 部署Canary Instance Group Deployment:用于将更新的代码部署到目标 Canary 环境的阶段。
    • 部署验证:用于验证部署的可选阶段(Via 函数)
    • Canary OKE Traffic ShiftCanary Instance Group Traffic Shift:基于坡道限制(要移动的流量百分比)将流量切换到功能环境的阶段。
    • 控制:审批:用于批准部署到目标生产环境的控制阶段。
    • Canary Deploy Instance Group Production(加拿大部署实例组生产)OKE Deploy Production(OKE 部署生产):生产通信将切换到最新部署环境的最后阶段。
  • DevOps 对象

    DevOps Artifact 是对组成应用程序的任何文件、二进制文件、程序包、清单或映像的引用或指针。创建构件时,将实际构件的源位置通知 Oracle DevOps。DevOps 支持 OCI 容器映像注册表和 OCI Artifact 注册表资料档案库。

  • 构件资料档案库

    构件资料档案库创建用于对相似构件进行分组的资料档案库。创建资料档案库时,可以将对象上载到其中。这些构件是传送到目标部署环境的文本文件、二进制文件和部署清单的集合。每个构件都有一个名称,该名称由其路径组成:版本。路径是用于组织对象的字符串。

  • OCI 日志记录和通知服务

    OCI 日志记录服务存储与部署相关的日志。部署运行时输出和部署的最终结果显示为日志条目。OCI 通知服务提供对部署项目及其资源的最新状态的可见性,并执行任何必要的操作。例如,当重要事件(例如部署管道中的阶段等待审批)时,您将收到通知。收到通知消息后,您可以转至 DevOps 部署管道并批准该阶段。

  • 部署环境

    环境是部署构件的客户计算资源的集合。环境可以是函数、计算虚拟机 (VM) 或裸金属实例,也可以是 OKE 集群。蓝绿色部署仅适用于 OKE 集群和计算虚拟机。

了解 Canary 部署的优缺点

部署现代应用时,可以使用 Canary 策略既有利弊。

Canary 部署的优点是:
  • 它使您可以与真实用户并排测试两个应用程序版本。
  • 新版本发布没有停机时间。
  • 回退到以前的版本非常简单,并且风险最低。
Canary 部署的缺点是:
  • 新发行版的测试和验证可能会在规模上很复杂。
  • 根据新版本从用户测试中获取反馈是一项耗时的任务。