本文摘自《云栖战略参考》,这本刊物由阿里云与钛媒体联合策划。目的是为了把各个行业先行者的技术探索、业务实践呈现出来,与思考同样问题的“数字先行者”共同探讨、碰撞,希望这些内容能让你有所启发。
以羽绒服起家、深耕行业四十多年的波司登,正在从传统企业转向新零售,在业务表象之下,技术内核正在发生变化。
从行业特性来说,波司登叠加了服装行业和羽绒服商品双重特征——服装制造业受消费者需求影响,需求会随时变化,这导致商品SKU非常多,盘活库存订单非常重要,同时需要洞察消费趋势,进行产品创新和迭代效率提升;其次,成本很容易受到上游原材料影响,例如羽绒商品中仅羽绒一项的制造成本就占近一半,因设计款式、面料、长短、厚薄不同而带来的种种要求,导致人工造价成本较高。此外,羽绒服商品的特殊点在于其强周期性——基本一个冬天就会迎来整年的订单销售,然后再等到下一个冬天,这也导致传统企业资源计划型的运作方式难以为继。
除了在制造层面的挑战,波司登在节日大促的高峰期会因为上亿销售额对系统形成极大的负载,总会遇到各种各样的IT问题。老办法或许能在下一次规避已经发生过的问题,但已经造成的损失却无法掩盖。从业务长期发展角度来看,需要一套具备高可靠性的新系统实现业务效率的提升和营收保障。
“上云不是一个简单更换服务器的行为,而是架构重组的过程。坦率讲,我们在2016年这件事情没有做得很好,就是简单理解成将程序搬到云上而已。”波司登CIO李强指出。
经过近十年的云上实践,以及近两年的大规模云上重构,波司登清晰地意识到云的价值。企业上云,要考虑清楚整个系统的架构,包括业务、产品、数据、技术架构。只有对系统架构进行重构,才能真正发挥云和云上配套工具的最大价值,这种性能和可靠性的提升,最终影响的其实是业务价值,对波司登是“超预期的”。
基于对用云的成熟思考,在2021年与阿里云着手推进云原生相关工作时,波司登就已经对云如何推动数字化有比较深入的投入和长期规划。从业务价值出发,拥抱云原生,也让波司登获得了数字化进程中的最大红利。
2023年,几个重大促销节点上,波司登系统首次实现零失误。这是非常难得的,要知道,这次系统重构,不只是在技术上获得突破,更带来了许多新的挑战。
拥抱先进,原则与第一要务
波司登创始于1976年,专注于羽绒服的研发、设计、制作,是全球知名的羽绒服生产商。随着波司登数字业务的飞速发展,背后的IT技术也在不断更新迭代。波司登极为重视客户对服务的体验,并将系统稳定性、业务功能的迭代效率、问题的快速定位和解决视为构建核心竞争力的基石。过去,波司登自研了用户运营平台、零售运营平台、商品运营平台等诸多垂直业务功能,在市场需求的快速变化下,产品功能创新和迭代效率问题成为对技术架构的一大挑战。这些现状的解法和云原生架构带来的核心能力不谋而合。
对于波司登而言,技术是否先进不是第一要务,关键是怎样快速、超预期地满足业务诉求。业务需要的是一套工具,基于这套工具,能够培养自身的使用习惯。同时,也不会一味地追求所谓开源或业内领先,放弃已经跟业务端达成的这样一套极高的默契和满意度。
在技术选型上,波司登始终遵循着两条原则。
一是全面拥抱开源开放的主流技术标准。如此可以确保技术方案的成熟度,更便捷地从开发者社区获取技术资源和最佳实践,也能够帮助企业更好地招募技术人才。这样的策略也避免了被封闭技术体系和特定云厂商所捆绑。
二是尽可能利用云计算的价值。将稳定性保障、底层技术实现、技术组件维护、弹性伸缩等非功能性需求尽可能交给云厂商解决,让技术团队将更多的精力投入到业务创新上。
这两条原则并不矛盾,相反,它们之间可以非常好的融合,也值得所有使用云计算的企业用户借鉴。比如,Kubernetes是典型的满足开源开放标准的技术标准,阿里云提供的Kubernetes产品可以简化用户的搭建成本,更好的与云计算资源进行集成。同时用户依然可以基于开源Kubernetes的标准协议与API使用云产品,这就是相互融合的最好体现。
这两条原则,也影响着波司登接下来对云原生技术栈的改造:选择开源容器编排标准Kubernetes,同时也会使用阿里云提供的容器服务ACK,以更好地跟云计算进行集成;从基于Spring Cloud生态进行微服务拆分,到使用Spring Cloud Alibaba,并集成阿里云提供的商业化组件,以实现对微服务技术栈的统一重构。
在技术架构层面,波司登采用Spring Cloud Alibaba进行全面微服务化,并应用在阿里云容器服务ACK平台上。
拥抱容器,企业上云新界面
正如集装箱的出现加速了贸易全球化进程,以容器为代表的云原生技术作为云计算的服务新界面正在加速云计算普及,推动着整个商业世界飞速演进。
对于容器的使用,波司登并不陌生,从2021年开始,波司登就开启了微服务和容器化改造计划,将IT系统的底座逐步从虚拟机迁移到Kubernetes。通过使用阿里云已经实现一半以上业务平台的容器化部署,相关IT人员对容器调度也有一定程度的了解。“当你感受过容器带来的便捷时,再也无法回到虚机的状态。”波司登首席架构师方育华指出。
容器作为标准化软件单元,它将应用及其所有依赖项打包,使应用不再受环境限制,在不同计算环境间快速、可靠地运行。
在过去几年,容器技术获得了越发广泛的应用,三个核心价值最受用户关注:敏捷方面,容器技术提升了企业IT架构敏捷性的同时,让业务迭代更加迅捷,为创新探索提供了坚实的技术保障;弹性方面,在互联网时代,企业IT系统经常需要面对促销活动、突发事件等各种预期内外的爆发性流量增长;可移植性方面,容器已经成为应用分发和交付的标准技术,将应用与底层运行环境进行解耦,Kubernetes成为资源调度和编排的标准,屏蔽了底层架构差异性,帮助应用平滑运行在不同基础设施上。
但自建Kubernetes集群通常会有几个问题。一是建设周期长,运维复杂:自建Kubernetes集群涉及安装、操作、扩展自有的集群管理软件、配置管理系统和监控解决方案,管理复杂;集群升级需进行巨大的调整,运维负担繁重。二是扩展性差,需根据业务流量情况人工确定容器服务的部署。三是可靠性无法保障,多采用单控制节点,一旦出现故障,集群将不可使用,造成业务中断。四是成本高、效率低。需自行搭建镜像仓库或使用第三方镜像仓库,镜像拉取方式多采用串行传输,效率低;需投入大量资金来构建、安装、运维、扩展集群管理基础设施,投入成本高。
在Kubernetes平台的选择上,基于技术选型的两条原则,波司登选择了阿里云容器服务ACK。ACK以阿里云可靠稳定的IaaS平台为底座,向下封装了30多款云产品,形成了自动化运维和云平台交互的新界面,从而提升企业业务系统的弹性和自动化运维能力。
与此同时,阿里云容器服务ACK提供了统一集群管理能力,除了可以管理阿里云Kubernetes集群之外,还可以纳管用户在IDC的自有Kubernetes集群和其他云的Kubernetes集群。利用统一的控制平面实现多个集群的统一的安全治理、可观测性、应用管理、备份恢复等能力。比如利用日志服务、托管Prometheus服务,可以以无侵入的方式帮助用户对线上、线下集群有一个统一的可观测性大盘。利用云安全中心,应用高可用服务AHAS可以帮助客户在混合云的整体架构中发现并解决安全和稳定性风险。
基于容器服务ACK的易用性以及集成能力,波司登IT系统容器化改造工作比预想中的要顺利得多。对于每一个业务系统而言,从虚拟机迁移到Kubernetes,仅仅是底层的承载发生了变化,不会涉及太多的改造成本。在关键的容器网络实现上,容器服务ACK通过云原生Terway网络模式,直接基于阿里云的虚拟化网络中的弹性网卡资源来构建容器网络,将容器和虚拟机纳入同一层网络中,便于业务云原生化迁移。这样完全可以对传统架构实现渐近式容器化改造,在不中断业务的前提下一点一点地从虚拟机往Kubernetes上搬。
在容器化改造的过程中,波司登技术团队可以第一时间从阿里云获得最佳实践指导,包括集群规划、平台运维、应用适配、安全防护、可观测等多个方面,进一步提升了容器化改造的速度。
目前,波司登的自研系统已经100%基于Kubernetes。相比传统的基于虚拟机部署方式,容器化帮助波司登在资源利用率上提升了30%,在运维效率上提升了40%。波司登的技术团队也在容器化改造的过程中,掌握了管理超大规模Kubernetes集群的能力,并促成了更多云原生新技术的运用。
深度发挥云原生价值
与容器化改造几乎同步进行的是对微服务的治理。在云原生时代,云原生微服务体系将充分利用云资源的高可用和安全体系,让应用获得更有保障的弹性、可用性与安全性。应用构建在云所提供的基础设施与基础服务之上,充分利用云服务所带来的便捷性、稳定性,降低应用架构的复杂度。云原生的微服务体系也将帮助应用架构全面升级,让应用天然具有更好的可观测性、可控制性、可容错性等特性。
在此之前,波司登对单体架构进行了比较粗颗粒度的微服务化拆分,不同模块之间通过网络进行通信。本质上来讲,这并没有降低系统的复杂度,反而让系统复杂度大幅度提升,在管理难度上也为开发者提出了更高的挑战。
随着微服务架构的深入使用,波司登技术团队遇到了两个难题。
一是性能问题定位困难。随着业务规模的增长,对于每一个来自用户的请求,链路变得越来越长,这也代表着应用之间的调用关系变得越来越复杂。传统的依赖于单机业务日志的监控手段根本无从下手,这就需要建立全新的链路跟踪机制,帮助开发者全面洞察系统运行状态,并在系统遇到异常时快速定位和解决问题。
阿里云ARMS(Application Real-Time Monitoring Service,应用实时监控服务)提供了无侵入式方案实现微服务链路跟踪,波司登把部署在容器服务ACK的微服务应用一键接入ARMS应用监控后,接下来要做的事情就主要是熟练掌握工具,并配合Prometheus/Grafana实现统一大盘,并利用报警平台实现事件闭环,ARMS也通过开箱即用的方式在云上提供了相关工具。
二是应用变更频繁造成事故。应用变更在大型微服务架构中,是极为频繁的工作,包括新应用的上线、新版本的发布、新配置的推送、应用扩容、应用缩容等等。微服务架构的复杂性以及业务的快速迭代,让波司登技术团队在每次应用变更中都疲惫不堪,因为绝大多数生产环境的事故都由应用变更导致。这个难题不能简单靠云产品来解决,需要技术团队深入剖析每一次事故的根因,针对性优化,并建立一整套安全变更的行政机制。
目前,波司登已经对影响较大的上下线有损和安全变更等问题进行深入探索,通过充分论证和快速决策,相继接入阿里云MSE(MicroserviceEngine,微服务引擎)提供的注册配置中心、云原生网关和微服务治理。
通过治理,波司登的业务迭代频率实现了两倍以上的提升,因为应用变更导致的生产事故降低了70%以上。此外,在全链路稳定性治理和弹性伸缩的帮助下,再加上页面静态化、请求拦截、数据隔离、异步处理等常规技术手段,波司登已经建立起在秒杀业务场景中支撑百万级并发量的技术能力,并确保“双11”活动过程系统的稳定运行。
如今,波司登云原生能力还在进一步深化。2024年,波司登规划与阿里云继续探索包括对码分层域导致的不同系统之间的调用混乱问题的解决,以充分发挥云原生能力。
本文摘自《云栖战略参考》总第16期
扫码限时申领纸质版
↓↓
根据《网络安全法》实名制要求,请绑定手机号后发表评论
波司登对云原生技术栈的改造:选择开源容器编排标准Kubernetes,同时也会使用阿里云提供的容器服务ACK,以更好地跟云计算进行集成;从基于Spring Cloud生态进行微服务拆分,到使用Spring Cloud Alibaba,并集成阿里云提供的商业化组件,以实现对微服务技术栈的统一重构。在技术架构层面,波司登采用Spring Cloud Alibaba进行全面微服务化,并应用在阿里云容器服务ACK平台上。
波司登极为重视客户的体验
波司登还是深受消费者喜欢的老牌子
拥抱云原生,让波司登获得了数字化进程的最大红利