65.9K
CodeProject 正在变化。 阅读更多。
Home

交付驱动开发(DDD)

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2018年8月22日

CPOL

4分钟阅读

viewsIcon

12165

通过交付驱动开发

引言

本文旨在介绍一种新的开发方法论,称为“交付驱动开发”(Delivery Driven Development)或 DDD。该方法论目前已在广泛的组织中取得巨大成功。

交付驱动开发(DDD)并不取代现有的方法论,例如测试驱动开发(TDD)或敏捷开发,而是对其有效性进行补充和增强。

该方法论的目的是提高交付的重要性,使其超越开发的附属地位。相反,在软件开发生命周期(SDLC)的初始分析和设计阶段之后,交付通道应成为首要考虑因素。

通过发布本文,我希望能与社区互动,并欢迎建设性的同行评审。

背景

在 20 世纪 90 年代乃至 21 世纪初,交付通道的类型通常很有限。当时还没有Github、Azure 或 AWS,云托管的例子也很少。软件通常在本地托管,只有少数共享基础设施的例子。此外,随着公司越来越重视安全性,安全等障碍也日益增加。

尽管一家公司可能有许多客户,但与现在相比,交付通道的差异化和交付过程的复杂性要小得多。

过去,许多公司都采用了 TDD,并根据项目选择瀑布开发或敏捷开发方法论。这些实践通常以不同的成功程度得到应用。

无论是否准确的评估方法,用于确定这些实践成功与否的标尺通常是交付结果。

这在流程中造成了模糊性,因为交付通道不受 TDD、瀑布、敏捷或任何其他知名方法论的直接控制。

目标读者

与大多数方法论一样,这种方法论并非适用于所有公司或项目。事实上,除非您要部署给许多客户,每个客户都有不同的部署通道和逻辑,否则这种方法论的好处可能并不显而易见。

例如,一家成功实施该方法论的软件供应商至少有 100 个客户。每个客户在每个环境中至少有 5 个环境,每个环境中有 3 个部署目标。有些客户在本地托管解决方案,有些则使用共享基础设施或云进行托管。此外,每个客户在硬件、策略和规则方面都有不同级别的安全性。

交付驱动开发(DDD)的步骤是什么?

DDD 由五个步骤组成,用于驱动解决方案的分析、设计、实现、测试和交付。

通道分析

通道分析是“何处”的步骤。它涉及识别部署资产的目的地。

“目的地”这个词是一个非常宽泛的术语,旨在包含所有可能的场景。对于许多公司来说,这一步将包括对以下方面的考虑:

  1. Nuget
  2. MyGet
  3. npm
  4. Windows 文件系统
  5. Windows Web 应用
  6. Windows 服务
  7. Azure SQL
  8. Azure Web 应用
  9. Azure App Service
  10. SQL Server
  11. Octopus Deploy(部署包的目的地)

通道设计

通道设计是“如何”的步骤。它涉及确定部署资产的交付方式。

将大型复杂解决方案部署到一组目标服务器、服务和存储库的 MSI(Microsoft Installer)时代即将结束。

在大多数情况下,构建和发布过程在所有项目中将保持基本不变。但是,部署过程可能会因客户的基础设施、平台和安全模型而有所不同。对于许多公司来说,这一步将包括对以下方面的考虑:

  • 目标环境,即开发、UAT、培训、暂存、生产
  • 目标机器
  • 目标机器角色,例如 Windows Server、应用程序服务器、数据库服务器
  • 负载均衡器
  • 灾难恢复(DR)计划
  • Windows、SQL Server 和 SharePoint 的版本
  • Windows 或令牌身份验证
  • 防火墙规则和 Windows 组策略
  • 对于Octopus Deploy,需要考虑使用哪种类型的Tentacle。这可能因环境而异。

通道实现

通道实现是“执行”的步骤。它可能涉及一个或多个通道的配置。此步骤很大程度上取决于通道设计步骤和可用工具。

用于建立部署通道的常用工具包括 Team Foundation Server (TFS) 和 Octopus Deploy。对于许多公司来说,这一步将包括对以下方面的考虑:

  • 与客户密切合作,确保目标机器能够与部署服务器通信,例如 Octopus Deploy 和Chocolatey
  • 设置存储库,例如 MyGet 和 npm
  • 通过中央配置管理门户(例如 Octopus Deploy)进行环境配置

通道测试

通道测试是“修复”的步骤。它涉及部署通道的端到端冒烟测试。预计此步骤将识别可能影响成功发布的任何问题。对于许多公司来说,这一步将包括对以下方面的考虑:

  • 服务帐户,例如 Octopus Tentacle 服务帐户、Web 服务帐户和 Windows 服务帐户
  • 环境配置
  • 访问和下载Chocolatey的权限
  • 修改注册表的权限
  • 创建和配置 IIS Web 应用程序的权限
  • 安装 Windows 服务的权限
  • 配置 MSDTC 的权限
  • 创建 SQL Server 数据库的权限
  • 运行未签名 PowerShell 脚本的权限
  • 为 SharePoint 站点安装和激活 SharePoint 解决方案的权限

通道交付

通道交付是最后但至关重要的步骤。它涉及实际部署一个版本或候选版本(RC)。

此步骤还应包括在目标环境中对已发布版本进行全面冒烟测试,然后才能正式移交给客户进行用户验收测试(UAT)。

TDD、敏捷开发和交付驱动开发(DDD)之间的关系是什么?

历史

  • 2018 年 8 月 22 日:初始版本
© . All rights reserved.