2021年11月12-13日,ArchSummit 全球架构师峰会在深圳举办。ArchSummit 聚焦业界强大的技术成果,秉承“实践第一、案例为主”的原则,展示先进技术在行业中的典型实践,以及技术在企业转型、发展中的推动作用。
店匠科技(SHOPLAZZA)受到邀请,在系统的架构设计与质量安全实践-解决方案专场分享。当天分享嘉宾还有华为 SaaS 首席软件教练周志明,声网 Agora 架构师李雅琪,火线安全联合创始人&开发负责人卢中阳,凡泰极客联合创始人 & CTO 杨涛, Flomesh 云原生专家彭柳以及腾讯云 CODING /Nocalhost 研发负责人王炜。
店匠资深 SRE 阳衡锋以店匠产品跨境电商独立站建站 SaaS 为例,讲述店匠科技交付体系探索及实践,减少发版事故,确保发版过程无痛进行。
一:做发布工程如何影响到建站 SaaS ?
“其实发版是个大学问”,阳衡锋为大家解释道,“Google 的 SRE 和工程师文化中就特别强调高质量的部署及可自动化的部署流程,SRE 中有个章节就叫做发布工程。”
对于店匠科技来说,发布工程也至关重要。店匠科技是一家专注为全球 B2C 电商提供产品和技术解决方案的公司,核心产品全球独立站(Shopping Cart) SaaS 为商户提供建站的企业级解决方案,目前全球已有36万+家商户使用店匠开启全球线上零售生意。
店匠产研团队持续洞察商家后台操作和消费者线上购物的深层需求,以匠人精神反复钻研卖家的商机诉求,并根据趋势变化不断迭代产品,在单季度中的部署上线次数多达400次。平均下来每天更新10多次,但必须确保万无一失,一次失败足以导致致命事故,给信任店匠的商户带来损失。
所以在线上变更频率越来越高的情况下,如何在云原生环境下部署发布系统,保证每次上线风险降至最低成为店匠 SRE 架构团队要解决的重要问题。
二:选择自研发布平台,究竟有哪些技术关键?
店匠想要的,是做到快速、自动化且稳定地上线版本。“我们做的是不断尝试的事业,需要快速地验证然后收集数据反馈分析,这样才能真正解决我们上线的焦虑。”阳衡锋说道,“在多种方案中,我们选择自研发布平台,通过部署不同的版本逐步放量对各个版本的监控,减少发版事故,确保发版过程无痛进行。”
1.请求分流
店匠上线平台的第一步是请求分流,我们需要能在线上同时部署新的 canary 版本和旧的 baseline 版本,通过服务网关读取配置做流量分发。
通常会把流量 5-5 分到新旧版本上,其中注意保证新旧版本能共存以及业务上保持兼容,不能因为新旧版本的存在影响用户的正常使用;内部调用也会带上分支标志,同样可以转发到对应版本的服务上。
2.数据收集
经过网关分发的请求会在 http 请求的 cookie 上带上当前分支标示,浏览器端会用分支信息给用户打 tag,并且在所有的事件上报中带上这个字段,这样下游的数据分析就能清晰的区分当前用户所在分支做统计分析。
同时通过网关分发的后台服务部署的服务监控数据都会同时上报到监控系统中,这样系统就能通过服务名收集到不同版本的性能数据。
3.全自动无人值守
单个实验的放量是分阶段进行的,每一阶段结束都会触发下一阶段的任务自动放量直至全量。实验结束全量上线后,下一个实验随之启动。如果监控数据有异常报警,调度系统会立即反应停止上线,将流量切回到旧版本中去。所有的这些调度过程都是集中统一调度实现,实现全自动无人值守,只需要关注报警消息或者消息推送。
4.数据分析平台
数据上报并整合到数据分析平台后,店匠通过各种指标对新旧版本的数据进行对比,并对每次上线做用户侧指标和服务端指标加权的综合评分。用户侧的指标店匠更关注前端类似首屏时间(LCP),js 的报错数,资源加载时间等,对于服务端指标店匠更关注服务器重启次数,CPU 占比,内存占用量,慢请求的比例以及分布。数据分析平台还会使用到常见的分位数指标,U 检验对比指标变化是否显著等统计方法。
“正是这样科学的基础设施和发布工程,保证了每个季度400多次的更新万无一失,解决我作为工程师上线的焦虑,也进一步驱动着我们业务增长。”阳衡锋总结道。
随着品牌化、精细化运营成为共识,独立站成为跨境电商品牌化的最好载体,店匠科技就处于这个赛道中,店匠科技是一家追求卓越技术的 PLG(Product Led Growth) SaaS 公司,在全球电子商务高可用,高并发上积累了大量经验,希望更多优秀的人才能加入成为我们的伙伴!