【千人平台工程炼成记Part 3】业务决策和工程创新让网购周业绩暴增后,聚焦开发者体验优化也再次拥抱SRE

为了解决开发者工作流程破碎化的问题,Zalando建置部门打造了一套开发者入口网站Sunrise(日出平台),作为开发者每天上班时打开的第一个网站。(图片来源/Zalando)

2019年,Zalando遇到了创立以来最大规模的黑色星期五网购周。光在2019年那一周,Zalando就增加了84万名新顾客,每分钟的订单量峰值更达到7,200张,比2018年每分钟4,200张,足足多了7成订单量。为何在2019年的网购周,可以有这么大幅度的业绩成长?关键就是业务决策和工程创新双管齐下的成果。

因为网购周年年都有,每到网购周期间,顾客的行为格外不同,会成为狂热的购物者。在2019年网购周之前,Zalando决定在网购周期间,推出一些新功能,让顾客感到新奇也更兴奋,来带动买气。

可是,过去几年,Zalando每逢网购周时,总会遇到现有系统某项功能因爆量而出状况,现在却要在网购周前几周,上线全新的功能,如何确保新功能可以撑得住黑色星期五的人潮,维持顾客对网站的信赖感呢?这个业务决策,是一个很大的工程挑战。

所以,Zalando采取了一个大胆的作法,提前在平日的正式环境中,重现网购周的爆量负载来实测新功能。

一方面,Zalando没有停下SRE的发展,在2018年时建立了两个SRE辅助团队,一个是数位基础部门下设置了SRE启动团队,负责辅导产品团队采用SRE作法,另一个团队则是负责改善SRE体验的开发团队,打造各种SRE工具。

这两个团队一起参与全公司的SRE推动计划,建立了一套分散式SRE追踪机制,导入到所有团队,并开始善用这些搜集来的维运数据,支援各平台网页优化及产品基础架构的优化。这个追踪机制,后来在2019年的网购周因应上,发挥了很大的助力。

Zalando从历史资料中,找出了网购周期间的主要顾客旅程,模拟重建出了一整套顾客在网购周期间,与所有系统互动的一系列行为,来进行网购周负载测试的准备。

这个网购周负载测试就是由SRE计划成员负责,甚至在黑色星期五促销活动期间,SRE辅导团队也得在活动战情室中待命。

提前在网购周之前的平日,在正式环境中模拟网购周的负载测试,「这个作法是用顾客体验作为代价,来进行这些负载测试,必须承担起影响真实顾客的风险。」参与Zalando最近4年SRE战略发展的第一线工程主管、Zalando前工程经理Andrew Howden进一步强调,但是,提早知道可能的出错风险,就能在网购周前,先修补好这些问题。

另一方面,Zalando格外谨慎地控制这些网购周负载实测,设定了一组实测放弃标准,一旦负载测试对真实顾客产生了影响,就立刻中断实测,回复到正常状态的运作状态。

后续几年,Zalando甚至可以做到故意打坏一整套系统,来实测系统复原功能在庞大网购周负载下的运作情况。

透过这个负载实测机制,就算在网购周前3周上线新功能,也能透过负载测试验证新功能对整体平台体验的影响。

Zalando技术发展迈入了成熟期后,技术决策时不再像刚推激进敏捷时的自由,转而由资深工程社群来主导,发展出技术雷达图(Tech Radar)协助上百团队的技术决策。要求各团队都要参考这一份共用的技术推荐清单,作为新专案挑选出技术的参考,不用每次发起新专案时就得从头进行技术评估,直接参考清单推荐来选择。正因为每个团队都参考了同一份技术雷达图来挑选,Zalando就能够确保不同专案所用的技术,都在这份共用技术清单的范围内,来达到全公司技术面的聚焦。图片来源/Zalando

技术发展进入成熟期,靠技术雷达聚焦上百团队技术决策

从2009到2019年,Zalando组织面历经了多次变革,技术面也发展出一个超大规模的分散式微服务架构。根据Zalando在2022年柏林DevOpsCon上揭露了数字,2019年当时的微服务数量多达四、五千支。

这时候的Zalando的技术发展迈入了成熟期,技术决策时不再像刚推激进敏捷时的自由,转而由一个资深工程社群来主导,发展出技术雷达图(Tech Radar)来协助2百个团队的技术决策。

这一份技术雷达图的设计参考了ThoughtWorks顾问公司的作法,但发展成Zalando自己的专属版本。

这家顾问公司将近百项项涵盖技术、工具、平台、框架和语言这四大类的技术名词,按照推荐采用的程度分为四级,排列在一张圆形又分为四象限的雷达图上。在这张技术雷达图,会列出不同类型技术的推荐采用程度,用不同的环来代表不同推荐程度,越靠近核心的环,代表这项技术的推荐程度越高。

Zalando盘点了自己的需求,最后聚焦在软体开发相关技术,包括了资料储存,资料管理、基础架构和开发语言等四大类。推荐采用程度分为四级,形成四个环,每一环代表了不同的推荐等级。这四级包括:Adopt(推荐采用)、Trial(推荐试用)、Assess(评估阶段)、Hold(保留不推)。

推荐试用类技术则是是指已经在内部有成功专案的技术,而且至少用于真实问题而非模拟情境的处理,而且重视采用广泛度,属于高层有意愿长期投资的技术才会列入这个推荐等级。而列入评估阶段的技术,这是指一群有明显潜在价值,且值得投资的技术,还透过自动分析在所有产品中的试验计划的资料,找出已经试验中且值得列入Trial阶段的技术。。最后一类保留不推的等级,则是不推荐但会继续提供维护的技术,而且不只新专案不能用,也不鼓励用于推广性服务上,要逐渐缩小这类技术的应用广度。

每一项技术还会附上一份技术说明文件,列出这项技术的优点,缺点,限制,使用情况和使用后学到的经验,每一项技术都有一份文件,全部的技术文件集结成了一份技术知识库。Zalando也整理技术雷达图的这些推荐技术的采用范本和指南,在指南上会提供使用时常见问题说明,或是已经采用团队的使用案例,甚至是不同替代技术间的比较等。

每隔一段时间,进行技术推荐等级的调整,首席工程师会搜集了现有技术雷达上每一项技术的真实使用数据,包括了使用量,出事纪录,采用经验(例如这项技术在Zalando导入多少年)的数据,再进行评分,由指定维护的首席工程师先建立一份新技术评分的试算表,再开放给首席工程师社群进行投票,决定要「升级」或「降级」

Zalando要求各团队都要参考这一份共用的技术清单,作为新专案挑选出技术的参考,不用每次发起新专案时就得从头进行技术评估,工程师直接参考清单推荐来选择。正因为每个团队都参考了同一份技术雷达图来挑选,Zalando就能够确保不同专案所用的技术,都在这份共用技术清单的范围内,来达到技术方向的聚焦。

Zalando将原本的数位基础部门改名为建置部门(Build),继续负责打造和改善开发者平台,专门服务开发者这一群人。建置部门开始研究开发者的顾客旅程,也就是开发者日常的工作旅程,发现开发者所用的开发平台相当分散,每个团队都以各自的方式,与各自成员沟通,更缺乏全公司共同的沟通语言。

解决开发者流程破碎化问题,打造开发者入口网站

为了解决开发者工作流程破碎化的问题,建置部门打造了一套开发者入口网站Sunrise(日出平台),作为开发者每天上班时打开的第一个网站。这个平台的使用者包括了软体工程师,资料工程师,技术主管,资料科学家,专案经理,设计师等。

建置部门以Spotify开源的ML管理平台专案Backstage为基础,整合了许多Zalando内部技术工具、开发元件、实作范本和技术文件,设计出了这个内部专用的自助式开发者平台(Internal Developer Platform),介面操作如同商用企业级协作平台一样的流畅,讲究UX设计细节,就是为了引导开发者自己就能上手操作。甚至开发者可以在日出平台上直接看到负责AP的常见监控数据。

开发者打开日出平台看到的第一页,将他们常用的资讯点都集中到这一夜,让他们很容易就可以搜寻到所负责的特定应用和常用的API,也能很快地看到每一个应用或API的专责拥有人是谁,若有需要可以直接在这一页提出需求单(Ticket)来寻求帮助,不用像过去得到另一个系统来申请。日出平台首页也整合了所有开发者所负责的AP的所有事件资讯以及可订阅的参考文件。

工程师或其他使用者,可以检查产品生命周期的每个阶段的进度或状态,而且是即 时监控,还能与团队和其他个人协作,对 CI/CD流程上的问题进行故障排除。 Zalando 团队成员甚至可以使用 Sunrise 引导和部署新应用程序。

为了打造出这个方便好用的内部开发者平台,Zalando曾公开分享过有几个关键。

例如他们直接动手修改K8s原始码来解决问题,让K8s变成他们自己能够掌控的系统,来发展自己的云原生平台。 例如日出平台就使用了自行开发客制的kubectl 封装函式

当遇到紧急事件,要快速建立临时存取的k8s丛集,这个封装函示就可以派上用场,不 用按照原本标准封装函式来执行,进一步缩短了不少部署时间。另一个关键是,Zalando也将「开发体验」数据化,也就是得量测开发平台对开发者体验和生产力的成效。

Zalando参考了一本书的建议 《Accelerate:The Science of Lean Software and DevOps 》  (台湾中译版的名称「精益软体&DevOps背后的科学」,来定义了4个开发者效能矩阵的指标。

包括了事前准备时间(Lead Time)、发布频率(Release Frequency)、平均复原时间(Time to Restore Service)、变更失败率(Change Fail Rate),这也正是知名DevOps成效指标DORA中四指标所用的概念。

不过Zalando具体量测四个指标的作法略有不同,事前准备时间是从Commit到正式上线环境的时间。而发布频率:每一个开发者每一周的部署次数。平均复原时间则以事件发生开始计算到服务复原(而非服务当机开始起算)。最后一项变更失败率则是看在所有部署次数中有多少次失败来计算。

日出这个开发者平台最大的好处,就是让所有开发者保持在相同的轨道上,另外也能满足不同步部门各自组织分工的需求来提供弹性,最后,这个单一平台也整合了Zalando他们所设计的技术雷达图和所有的参考技术实践经验,验证小组的测试文件档,甚至还有成熟作法和流程的相关范本。可以透过单一平台来聚焦,推荐开发团队使用特别想要加码的技术。

Zalando日出网站的设计目标是「要让开发者既快乐,又有生产力!」,提供最顶级的开发者体验,尽可能地降低技术团队和开发团队的认知负担,来提高开发速度和生产力。这是Zalando在去年平台工程大会上,首度公开日出平台开发过程时,Zalando高阶首席工程师Henning Jacobs格外强调这件事。

为了解决开发者工作流程破碎化的问题,Zalando建置部门打造了一套开发者入口网站Sunrise(日出平台),作为开发者每天上班时打开的第一个网站。图片来源/Zalando

Sunrise(日出平台)采用Spotify开源的ML管理平台专案Backstage为基础,整合了许多Zalando内部技术工具、开发元件、实作范本和技术文件,设计出了这个内部专用的自助式开发者平台(Internal Developer Platform)。Zalando的开发人员可以在日出平台上,取得全公司不同部门、产品团队所打造的各种工具、服务的资讯,还能一站式取得所有支援服务。图片来源/Zalando

Zalando的开发人员可以在日出平台上,快速检视和管理所负责产品专案的进展。图片来源/Zalando

再次积极拥抱SRE,甚至成立专责SRE部门

另一方面,前面谈到网购周时就提到,Zalando再度设立了SRE辅助团队,2019年更直接成立了专责SRE部门,这个部门包括了Log纪录团队、追踪矩阵团队、事件应变团队和启动辅导团队组合,透过同一套KPI让这群人聚焦在相同的愿景和目标。

Andrew Howden指出:「SRE部门的目标是要建立一套关键业务维运的模式,聚焦在顾客体验,解决跨部门对齐的课题。」他一路参与了Zalando过去4年来的SRE发展历程。

关键业务维运就是一项聚焦顾客体验的服务水准目标(SLO),透过测量顾客与网站的互动,可以将开发者、管理者和顾客的观点,整合到同一组数据中,并且用这些数据来改善可靠度。

成立嵌入SRE团队,专门解决特定维运难题

有了专责的SRE部门还不够,Zalando更设立了一个新的SRE团队,称为嵌入SRE团队(Embedded SRE),专门要解决结帐过程的特殊挑战。例如有些疯狂买家会突然锁定特定商品进行大扫货,带来一些系统问题。这类结帐流程的难题,涉及了十几只应用程式、4、5个部门、上百位工程师之间的沟通和协作。Andrew Howden就是这个团队的负责人,带领了2名工程师。

Andrew Howden先分析不同结帐异常背后相关产品系统的影响,一一找出解决作法。他处理过的问题,像是因为大量请求造成系统过载而无法回应后,促发丛集管理软体自动重启,却造成了整套系统停摆。

因为结帐系统是一个大规模的分散式微服务架构,原本采取了断路器模式的设计,来避免不断呼叫到同样出错的服务,但因为断路器的设计太敏感,一个系统失效后,开始影响到其他系统断路器的错误率判断,带来连锁性的影响。

或者另一次的问题是,为了确保可靠度,结帐系统设计了许多自动扩充机制,一发现有顾客结帐请求的回应速度变僈,就会自动扩充,但这导致云端费用暴增,后来发现,少部分顾客因为扫货行为产生大量请求,造成这一小群人的回应速度变慢,而不是所有顾客都有同样的问题,只要以能涵盖99.9%的一般顾客的标准,来定义出每一名顾客的请求数量上限,就能减少特定顾客疯狂行为对自动扩充机制的影响。

将维运难题解决经验融入日常维运

因为解决一个问常常只需要3周,但是得花上3个月,把这个异常问题的处理经验,交接给平台团队,以及涉及的不同产品负责团队。嵌入SRE团队最后一个挑战是,如何将这些维运问题的解决经验,变成日常维运的一环。

Zalando每周都会举办一个维运回顾周会(Weekly operational review meetings,简称WORMs),首席工程师社群透过这个会议来查看事后分析报告,检视各种维运问题。但是这些分析报告的品质落差很大,工程师为了准备这些文件也花了很多力气。

嵌入SRE团队协助将这样的分析报告产出过程自动化,甚至增加了相关SRE作法的调整建议,可以自动发送报告给这个团队,也将报告自动发送给工程管理团队每周检视之用。

2023年中,嵌入SRE团队完成了最初设立时所要解决的课题,结束了这个团队的任务,Andrew Howden也在8月结束了他在Zalando的旅程,转而成为提供SRE培训的顾问。

但是,Zalando平台工程没有停下变革的脚步,仍旧持续进化中。