DoorDash 利用 Open Policy Agent 提升开发效率
DoorDash 最近通过引入 Open Policy Agent (OPA) 显著提升了开发团队的效率。基础设施团队观察到多项优势,包括更快的政策变更审查、更全面的资源标记,以及因政策违规导致的事件数量显著减少。
背景与动机
在 QCon New York 2023 大会上,DoorDash 的高级软件工程师 Lin Du 详细介绍了他们如何通过政策自动化构建自助式基础设施。几年前,DoorDash 曾因意外删除关键的 AWS 资源导致订单量下降。尽管团队在一小时内解决了问题,但这一事件促使他们意识到需要通过政策自动化来防止类似的关键疏忽。
技术实现
DoorDash 使用了 Atlantis 作为 Terraform 计划的开源协调器,管理 Terraform 的生命周期。当用户在 GitHub 上创建基础设施拉取请求时,会触发一个 webhook 事件到 Atlantis 工作器。该工作器从指定的 S3 存储桶中检索 OPA 策略。
DoorDash 使用 Rego 查询编写策略规则,以识别与预期系统状态的偏差。通过 conftest 工具,DoorDash 利用这些 OPA 策略来验证数据是否符合政策断言。
Atlantis 在 Terraform 计划上运行 conftest,确保其符合 OPA 定义的策略。结果与 Terraform 计划详情一起作为评论添加到 GitHub 拉取请求中。
DoorDash 还使用 Pull Approve 来简化流程,这是一个处理代码审查、分配和政策的 GitHub 集成。在获得必要的批准后,Atlantis 根据 Terraform 计划执行对 AWS 资源的更改。
政策分类与示例
Du 进一步展示了通过自动化编写的政策,并将其分为四类:可靠性、速度、效率和安全性。
- 可靠性:例如,保护关键资源不被删除。通过设置政策识别这些资源,并在修改前引入管理审查。
- 速度:通过检查拉取请求中的 Terraform 模块是否在已批准的列表中,鼓励使用已批准的模块。
- 效率:通过自动化审查节省时间,专注于产品改进。
- 安全性:确保资源标记的覆盖率和标准化,从 20% 提升到 97.9%,从而优化成本和团队资源。
成果与收益
通过政策自动化,DoorDash 基础设施团队节省了审查拉取请求的时间,预防了因政策违规导致的事件,并显著提升了资源标记的覆盖率和标准化。这些改进不仅提高了团队的效率,还优化了成本和资源分配。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。