C. Google SRE 实践 - 产品发布

C. Google SRE 实践 - 产品发布

组织结构:发布协调工程师

  • 工作内容
    • 审核新产品和内容服务,确保它们和Google的可靠性标准以及最佳实践一致,同时提供一些具体的建议来提升可靠性
    • 在发布过城中为多个团队之间的联系人
    • 跟进发布所需任务的进度,负责发布过程中所有技术相关的问题
    • 作为整个发布过程中的一个守门员,决定某项发布是不是“安全的”
    • 针对Google的最佳实践和各项服务的集成来培训开发者,充分利用内部的文档和培训资源来加速开发
  • 优势
    • 广泛的经验
    • 跨职能的视角
    • 客观性

发布流程

  • 好的发布流程的特征
    • 轻量级:占用很少的开发时间
    • 鲁棒性:能够最大限度地避免简单的错误
    • 完整性:完整地,一直地在各个环节内跟踪重要的细节问题
    • 可扩展性:可以应用在很多简单的发布上,也可以用在复杂的发布过程中
    • 适应性:可以使用于大多数常见的发布,以及可以适应全新的发布类型
  • 措施
    • 简化:确保基本信息正确。不需要为所有的可能性做准备
    • 高度定制化:有经验的工程师会针对每次发布定制流程
    • 保证通用路径快速完成:识别出几类发布流程具有的共同模式,针对这类发布提供一个快速简化通道。

具体工作

  • 发布检查列表,这个列表需要不断更新,有些问题可能不在,有些是新增的
    • 核心标准
      • 每一个问题的重要性必须非常高,理想情况下,都必须有之前发布的经验教训来证明
      • 每个指令必须非常具体,可行,开发者可以在合理的时间内完成。
    • 起草一个检查列表
      • 架构与依赖
        • 示范问题
          • 从用户到前端再到后端,请求流的顺序是什么样的?
          • 是否存在不同延迟要求的请求类型?
        • 待办事项
          • 将非用户请求与用户请求进行隔离
          • 确认预计的请求数量。单个页面请求可能会造成后端多个请求
      • 集成
        • 示范问题
          • 给服务建立一个新的DNS
          • 为服务配置负载均衡器
          • 为服务配置监控系统
      • 容量规划
        • 示范问题
          • 本次发布是否与新闻发布会,广告,博客文章或者其他类型的推广活动有关
          • 发布过程中和之后预计的流量和增速是多少?
          • 是否已经获取到该服务需要的全部计算资源?
      • 故障模式
        • 示范问题
          • 系统设计中是否包括单点故障源?
          • 该服务是如何处理依赖系统的不可用性的?
        • 待办事项
          • 为请求设置截止时间,防止由于请求持续时间过长导致资源耗尽?
          • 加入负载丢弃功能,在过载情况中可以尽早开始丢弃新请求?
      • 客户端行为
        • 示范问题
          • 该服务是否实现了自动保存/自动完成(输入框)/心跳功能?
        • 待办事项
          • 确保客户端在请求失败之后按指数型增加重试延时。
          • 保证在自动请求中实现随机延时抖动
      • 流程与自动化
        • 示范问题
          • 维持服务运行是否需要某些手动执行的流程?
        • 待办事项
          • 将所有需要手动执行的流程文档化
          • 将迁移到另外一个数据中心的流程文档化
          • 将构建和发布新版本的流程自动化
      • 开发流程
        • 待办事项
          • 将所有的代码和配置文件都存放到版本控制系统中
          • 为每个发布版本创建一个新的发布分支
      • 外部依赖
        • 示范问题
          • 这次发布依赖哪些第三方代码,数据/服务/或者事件?
          • 是否有任何合作伙伴依赖于你的服务?发布时是否需要通知他们?
          • 当我们或者第三方提供商无法在指定截止日期前完成工作时,会发生什么?
      • 发布计划
        • 待办事项
          • 为该服务发布制定一个发布计划,将其中每一项任务对应到具体的人
          • 针对发布计划中的每一步分析危险性,并制定对应的备用方案
  • 推动融合和简化
    • 比如说使用基础设施作为服务的基础构建单元:不是所有的工程师都熟悉现有的基础设施
  • 发布未知的产品,需要跟领域专家合作

可靠发布所需要的方法论

  • 灰度和阶段性发布
  • 功能开关框架
    • 要求
      • 可以同时发布多个改动,每个改动仅针对一部分服务器,用户,实体,或者数据中心起作用
      • 灰度式发布到一定数量的用户,一般在1% ~ 10%之间
      • 将流量根据用户,对话,对象和位置等信息发送到不同的服务器上
      • 设计中可以自动应对新代码出现的问题,不会影响到用户
      • 在严重Bug发生,或者其他副作用场景下可以迅速单独屏蔽某个改变
      • 度量每个改变对用户体验的提升
    • 功能
      • 主要面向用户界面的修改
        • 无状态的HTTP重新器,只对某些Cookies起作用
        • 将新代码和一个标识符关联
      • 可以支持任意服务器端和逻辑修改的
  • 应对客户端的滥用行为
    • 场景
      • 故意的或者不是故意的自动请求的同步性会造成惊群效应
      • 设定夜里2点下载更新等等
    • 措施
      • 引起延迟抖动(加入随机性)
      • 通过配置文件控制新功能的使用(一旦出现问题,就通过配置文件关闭该新功能,客户端定时跟服务器端同步配置文件)
  • 过载行为和压力测试
copy-feats --compress=true --write-num-frames=ark,t:exp/features/mfcc/data_mfcc_23_pitch_seg/log/utt2num_frames.1 ark:- ark,scp:/work/VPR/subtools_1229/exp/features/mfcc/data_mfcc_23_pitch_seg/raw_mfcc_pitch_seg.1.ark,/work/VPR/subtools_1229/exp/features/mfcc/data_mfcc_23_pitch_seg/raw_mfcc_pitch_seg.1.scp paste-feats --length-tolerance=2 'ark:compute-mfcc-feats --write-utt2dur=ark,t:exp/features/mfcc/data_mfcc_23_pitch_seg/log/utt2dur.1 --verbose=2 --config=subtools/conf/sre-mfcc-23.conf scp,p:exp/features/mfcc/data_mfcc_23_pitch_seg/log/wav_seg.1.scp ark:- |' 'ark,s,cs:compute-kaldi-pitch-feats --verbose=2 --config=subtools/conf/pitch.conf scp,p:exp/features/mfcc/data_mfcc_23_pitch_seg/log/wav_seg.1.scp ark:- | process-kaldi-pitch-feats ark:- ark:- |' ark:- compute-mfcc-feats --write-utt2dur=ark,t:exp/features/mfcc/data_mfcc_23_pitch_seg/log/utt2dur.1 --verbose=2 --config=subtools/conf/sre-mfcc-23.conf scp,p:exp/features/mfcc/data_mfcc_23_pitch_seg/log/wav_seg.1.scp ark:- VLOG[2] (compute-mfcc-feats[5.5]:main():compute-mfcc-feats.cc:182) Processed features for key 001_20230623160347_0319007398_mentianyu-1 compute-kaldi-pitch-feats --verbose=2 --config=subtools/conf/pitch.conf scp,p:exp/features/mfcc/data_mfcc_23_pitch_seg/log/wav_seg.1.scp ark:- ERROR (compute-kaldi-pitch-feats[5.5]:main():compute-kaldi-pitch-feats.cc:88) Sample frequency mismatch: you specified 16000 but data has 8000 (use --sample-frequency option). Utterance is 001_20230623160347_0319007398_mentianyu-1
最新发布
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值