生产准备清单

文章的翻译是专门为课程的学生准备的 “DevOps 实践和工具”,从今天开始!

生产准备清单

您是否曾将新服务发布到生产环境中? 或者您可能参与支持此类服务? 如果是,是什么激励了你? 什么对生产有利,什么不利? 如何培训新团队成员发布或维护现有服务。

大多数公司在工业运营实践方面最终都采用了“狂野西部”的方法。 每个团队通过反复试验来决定自己的工具和最佳实践。 但这往往不仅影响项目的成功,也影响工程师。

反复试验创造了一种相互指责和推卸责任的环境。 有了这种行为,从错误中吸取教训并不再重蹈覆辙变得越来越困难。

成功的组织:

  • 认识到生产指南的必要性,
  • 研究最佳实践,
  • 在开发新系统或组件时开始讨论生产准备问题,
  • 确保遵守生产准备规则。

生产准备包括“审查”过程。 审查可以采用清单或一组问题的形式。 审核可以手动、自动或同时进行。 您可以制作可适应特定需求的清单模板,而不是静态的需求列表。 这样,工程师就可以在需要时获得继承知识和足够的灵活性的方法。

何时检查服务是否已准备好投入生产?

不仅在发布之前进行生产准备情况检查,而且在将其转移给另一个运营团队或新员工时也很有用。

检查时间:

  • 您正在将一项新服务发布到生产环境中。
  • 您将生产服务的操作转移给另一个团队,例如SRE。
  • 您将生产服务的操作转移给新员工。
  • 组织技术支持。

生产准备清单

前一段时间,举个例子,我 опубликовала 测试生产准备情况的清单。 尽管此列表源自 Google Cloud 客户,但它在 Google Cloud 之外也很有用且适用。

设计与开发

  • 开发一个可重复的构建过程,不需要访问外部服务,也不依赖于外部系统的故障。
  • 在设计和开发期间,为您的服务定义和设置 SLO。
  • 记录对您所依赖的外部服务的可用性的期望。
  • 通过消除对单个全局资源的依赖来避免单点故障。 复制资源或在资源不可用时使用后备(例如,硬编码值)。

配置管理

  • 静态、小型和非秘密配置可以通过命令行参数传递。 对于其他一切,请使用配置存储服务。
  • 动态配置必须具有回退设置,以防配置服务不可用。
  • 开发环境配置不应与生产配置相关。 否则,这可能会导致从开发环境访问到生产服务,从而可能导致隐私问题和数据泄露。
  • 记录可以动态配置的内容,并描述配置交付系统不可用时的后备行为。

发布管理

  • 详细记录发布过程。 描述版本如何影响 SLO(例如,由于缓存未命中而导致延迟暂时增加)。
  • 记录金丝雀版本。
  • 制定金丝雀发布审查计划,如果可能的话,制定自动回滚机制。
  • 确保回滚可以使用与部署相同的流程。

可观察性

  • 确保收集 SLO 所需的指标集。
  • 确保您可以区分客户端数据和服务器数据。 这对于查找故障原因很重要。
  • 设置警报以减少劳动力成本。 例如,删除日常操作引起的警报。
  • 如果您使用 Stackdriver,请在仪表板中包含 GCP 平台指标。 设置 GCP 依赖项警报。
  • 始终传播传入的痕迹。 即使您不参与跟踪,这也将允许较低级别的服务调试生产中的问题。

保护和安全

  • 确保所有外部连接均已加密。
  • 确保您的生产项目具有正确的 IAM 设置。
  • 使用网络隔离虚拟机实例组。
  • 使用 VPN 安全地连接到远程网络。
  • 记录并监控用户对数据的访问。 确保所有用户对数据的访问都经过审核和记录。
  • 确保调试端点受到 ACL 的限制。
  • 清理用户输入。 配置用户输入的有效负载大小限制。
  • 确保您的服务可以有选择地阻止单个用户的传入流量。 这将阻止违规行为而不影响其他用户。
  • 避免启动大量内部操作的外部端点。

容量规划

  • 记录您的服务如何扩展。 例如:用户数量、传入有效负载的大小、传入消息的数量。
  • 记录您的服务的资源需求。 例如:专用虚拟机实例的数量、Spanner 实例的数量、GPU 或 TPU 等专用硬件。
  • 文档资源限制:资源类型、区域等。
  • 记录创建新资源的配额限制。 例如,如果您使用 API 创建新实例,则限制 GCE API 请求的数量。
  • 考虑运行负载测试来分析性能下降情况。

就这样。 我们在课室见!

来源: habr.com

添加评论