节约服务器成本50%以上,独角兽完美日记电商系统容器化改造历程

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 今年4月,完美日记IT系统实现全面云原生化。

完美日记创立于2017年,这家公司上线不到两年即成为天猫彩妆销冠,2019年成为11年来第一个登上天猫双十一彩妆榜首的国货品牌,包揽天猫2019全年彩妆销冠;2020年4月成为首个亮相天猫超级品牌日的国货彩妆品牌,同时勇破彩妆品牌销售纪录。另外,完美日记已在全国各地开设了100家线下店,计划至2022年底开店超600家。截至2020年4月,品牌SKU超过700个,全网用户粉丝数量超过2500万,月曝光量10亿+。

“轻研发、重营销”是流量思维企业的通病,为了“打造互联网时代新的美妆集团”,在依靠流量和营销快速占据市场的同时,完美日记也在不断夯实其技术底座。今年4月,完美日记已完成IT系统全面容器化,保证了每一次大促活动的系统稳定性和可用性,同时利用阿里云ACK容器快速弹性扩缩容,节约服务器成本50%以上。
1、完美日记容器化改造之路

对于一家创业公司而言,常常有三个问题摆在面前:

如何高效、低成本地搭建系统,同时确保安全稳定?
如何敏捷构建和发布应用,满足业务需求?
如何提高团队开发效率,确保开发质量?

早期大部分互联网公司都是直接购买服务器,租用IDC机房的机架部署,应用是直接运行在物理机上,如果要扩展必须购买新的服务器。IDC会频繁出现各种故障,如果遇到IDC迁移就更麻烦,必须半夜搬机器,天亮前上线,对于企业来说,在成本、服务稳定性、工作效率上都是很大的消耗。

2019年双11前期,完美日记小程序刚刚上线两个月,就经历双11大促的磨砺。在这两个月里,传统的部署方式,特别是有部分应用需要(openrestry)在SLB上面配置,那么运维人员就要在SLB上一个个勾选服务器,这会导致发布版本的时间需要半个小时以上。如果发版过程中出现问题,往往时间还会延长到一个小时以上。

在扩容机器的时候,使用其中2台服务器在阿里云打OS镜像,采用开机自启动脚本方式启动应用,针对每次运营活动的实际情况进行扩容。为了保持系统的稳定性,运维人员就需要在每晚23:00点以后通过人工操作进行扩容,手工配置SLB。最后测试人员进行测试,平均每次扩容都需要半个小时以上。并且由于双11期间处于大流量、高并发的场景,整个运维人员对服务器维护、版本迭代、数据库运维等都必须格外谨慎,稍有不慎会导致线上生产事故,服务器运维压力巨大。

2019年双11之后,完美日记就开始针对性测试阿里云容器服务ACK,并开始容器化改造。

之所以选择容器技术,是因为完美日记要构建一套现代化IT系统以满足快速变化的需求和挖掘更多的数据价值。具体来看,一方面,完美日记对业务的快速创新以及现有业务的实时性和交互性需求都在不断地增长;另外一方面,完美日记对数据的重视程度也在不断提高,尤其是用户数据的重要性。如何提供优于竞争对手的服务和用户体验,如何合理、有效地发掘更多的数据价值,成为完美日记迫切的需求。容器技术以其独有的高效敏捷和易于扩展的特性,加之庞大的生态系统,可以充分满足完美日记不同阶段的IT需求,这也是完美日记最终选择IT系统全面容器化改造的原因。

完美日记最开始是自建K8s,使用的是K8s开源版本,但是开源版本有很多bug未知,安全性也是未知,并没有一个比较友好的Web操作界面,还需要大量运维人员解决运行时出现突然的各种问题。从成本和效率等维度来看,并不是一条便捷的路,思虑再三,完美日记最终选择阿里云容器服务ACK。“我们的技术人员跟阿里云的技术人员其实非常熟悉,在双11期间他们也给予了很多技术层面的支持,我们遇到的问题他们基本都遇到过,我们没遇到的问题,他们也都遇到过,站在巨人的肩膀上进行容器化改造,对于当下的完美日记而言,是最合适的。”

完美日记的容器化实践是按照项目区分两条线并行,第一条线是一次性前后端全部迁移,第二条线是分应用分批次前后端分别迁移。

(1)一次性前后端全部迁移

2019年11月初-2019年11月中旬,完美日记开始计划容器化改造的准备事宜以及改造方案,包括容器化改造方案初步实施,阿里云K8s选型,阿里云K8s选型后进行初步测试,结合公司情况和人员相配比情况,最终选择了阿里云托管K8s Master版本进行大规模测试工作,并开始准备UAT环境切换前期工作等事宜。

2019年11月中旬,第一次切换UAT环境到K8s中失败,因为还有部分在开发中的模块,而K8s中没有对应的模块,因此切换回非K8s环境。

2019年11月底-2019年12月初,将UAT环境切换到K8s中,这次切换吸取了第一次切换失败的经验,UAT环境正式切换到K8s中。

2019年12月初-2019年12月中,观察整个UAT环境是否存在有重大问题,然后进行调整。将整个K8s UAT环境按照双11量级进行四轮压力测试,将结果反馈,然后不断进行调整。2019年12月中,尝试将后台正式环境切换到K8s正式环境中,但由于UAT环境中代码版本和正式环境中代码版本不一致,导致第一次尝试切换失败。

2019年12月中,在第一次切换后台失败中吸取了版本不一致的教训后,经过一天的努力终于将后台正式环境切换到K8s正式环境中,正式环境走出艰难的容器化改造第一步。2020年1月初,经过一天努力,将正式环境顺利切换到K8s正式环境中。

(2)分应用分批次迁移

2019年11月底开始准备迁移测试环境方案,2019年12月初,后端和中间件开始新增UAT环境。

2020年1月2日,后端准备完成。1月3日准备开始前端,1月17日前端完成、UAT环境正式使用。1月17日开始准备正式环境迁移方案,2月迁移方案完成,2月中上旬开始迁移后端,3月中旬后端迁移完成,ZooKeeper、Eureka迁移完成。3月下旬,前端开始迁移,4月初前端基本迁移完成。最终在4月中旬,完美日记IT系统全部迁移完成。

至此,完美日记全面容器化改造完成。

1.png

在容器化部署过程中,利用ACK的快速弹性应对大促时的资源快速扩容。将完美日记IT系统提前接入阿里云链路追踪产品ARMS,用于对分布式环境下复杂的服务调用进行跟踪,对异常服务进行定位,完美日记可以在测试和生产中快速发现问题,快速修复。使用性能测试服务PTS进行压测,利用PTS的秒级流量拉起、真实地理位置流量等特性,以最真实的互联网流量进行压测。收集压测数据,分析系统强弱依赖和关键瓶颈点,对关键业务接口、关键第三方调用、数据库慢调用、系统整体负载等进行限流保护。在大促前进行ECS/RDS/安全等产品扩容、链路梳理、缓存/连接池预热、监控大屏制作、后端资源保障等,帮助完美日记在大促平稳进行,保持丝般顺滑。

除了采用容器服务ACK之外,完美日记在一开始进行容器化改造时就使用了阿里云镜像企业版ACR EE,它的优势是比自建harbor要稳定与低成本,因为自建harbor需要考虑计算、数据库以及磁盘成本,如果项目很多或者镜像比较多,那么磁盘成本将比较高。镜像企业版不用考虑维护成本。另外,镜像企业版并发比自建harbor要高,如果大批量进行扩容,自建harbor往往容易出镜像PULL问题,但是镜像企业版就没有这种担忧。

另外,完美日记也通过ARMS Prometheus来监控系统可能出现的问题,并能针对性地解决问题。ARMS还可以解决整个K8s底层监控(Prometheus)的维护和成本高的难题,它能监控应用每个pod资源使用情况,对pod资源进行调整。K8s底层监控(Prometheus)可以做一个自定义大盘,将Prometheus全部监控信息完整显示出来。

容器化改造之后,整个系统“轻松了很多”。1月初,在切换到K8s正式环境后,扩容时间只需要90秒左右,节约了6~8倍时间,减少了一名服务器运维人员。根据运营节奏进行扩容,服务器扩容成本节约70%~90%。同时,部署效率大幅提升,可根据文件模板秒级创建一个服务,部署时间减少90%以上。

另外,服务器资源自动计算部署到服务器,利用隔离技术可部署多个项目服务器,利用率提高50%以上。服务模块的自动负载均衡无需人工干预,工作量减少90%以上。服务模块伸缩容无需编写脚本,只需点击伸缩按钮即可,减少人工错误率,工作量减少70%以上。服务模块不可用会自动剔除,自动重启服务模块。服务器宕机时,服务器上运行的服务模块会自动转移到可用服务器上,无需人工干预,工作量减少100%。

2、容器化改造更大的挑战是在技术和人员上做好准备

当企业完成了容器化改造之后,在生产环境中应用容器技术,并计划扩大应用规模,这时企业就必须在技术和人员上做好准备:运维人员是否有足够的能力来应对大规模应用带来的挑战,研发人员是否有足够的技术准备能随时解决大规模应用带来的问题,产品的架构设计是否可以满足未来的企业需求,同时组织架构和文化是否已经适应企业新的战略发展等。

换句话说,如何让项目组和开发人员之间达成技术同频、战略同频更具挑战性,这其实也是很多在做容器化改造的企业面临的共同难题。

出现这个问题的核心是项目组的开发人员、架构师、运维人员关注点不一致。开发人员关注系统平稳运行和业务开发,而不关心生产环境底层,只要不影响到生产环境和测试环境就可以。架构师关注底层是否稳定运行,技术架构是否符合未来3~5年技术发展,技术是否简单高效等。运维人员关注发布版本是否简单高效,环境是否能统一,扩缩容时间成本,底层运维过程是否能有解决方案等。

正是由于三方的关注点不同,因此在迁移过程中就不可避免会花费大量的沟通成本。因为K8s这套系统有别于传统的部署过程,开发人员对 centOS系统、Nginx、MQ、MySQL、查询日志等比较熟悉,但对于K8s不甚了解,Ingress、Docker配置化、Deployment配置、Service等往往已经到了开发人员对技术认知的边界了,这就需要花费较长的时间去解答大家的疑问,才能往下一步进行。

对于这类问题,每个企业的解决方案都不同,最核心的就是把相关人员的知识边界尽量拉到同一级别,最大程度地减少沟通成本和冲突。完美日记是采用“及时同步、责任到人、内部培训”的方法,比如每次在任何环境做的调整都需要在容器化改造群内通知相关人员,保证大家的认知一致;在内部推进“谁负责谁完善”的文档制度;同时组织一些内部技术培训,让关键开发人员在公司内部对K8s进行培训讲解。还有就是推进企业内部新的、统一的技术文化等。

3、未来规划

目前各大公有云厂商都推出了容器服务,还有不少独立的容器云公司。如果企业一开始就是建立在公有云之上,推荐直接使用相应的容器服务,不仅可以快速搭建系统,还能大幅降低运维成本,提高效率,轻松实践DevOps。在容器环境下,很多日常操作都自动化或半自动化了,比如应用的部署和发布、扩容等,容器编排具有自愈能力,即使出现问题,也能减少人工的干预,大大减轻运维人员的工作压力。

完美日记下一步会重点关注三方面,一是进行Ingress+Gateway单独部署;二是使用ECI+HAP+EW+AHAS(自动扩容数据来源)进一步优化成本,应对突发流量;三是考虑采用服务化网格技术。

如今,云原生已经成为企业数字化转型的关键策略,由于应用需要快速开发和交付,这就促使企业采用云原生的方法来开发应用,以提高效率,并增加灵活性。对于身处云原生时代的企业和开发者而言,不仅需要了解如何通过容器实现构建应用的新方式,更是要以开阔的视野和开放的心态去拥抱云原生生态。

对于企业而言,需要具备一定的前瞻性,对于容器生态圈的主流技术和发展要有足够的把握,才能更好地将现有业务与容器技术相结合。随着企业对技术的不断探索,业务系统的逐步演进,应用规模的日渐增大,如何更好地与开源生态系统相结合,扩大企业的技术影响力,同时引入更合适的人才,是云原生时代下企业要考虑的问题。

点击阅读原文,了解更多阿里云容器服务ACK技术详解与客户案例。
阅读原文链接:https://www.aliyun.com/product/kubernetes?spm=5176.12825654.1kquk9v2l.1.e2cd2c4aqP4QCp

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
3月前
|
弹性计算 安全 Linux
幻兽帕鲁服务器一键开服,8人畅玩26元成本
帕鲁服务器多少钱?阿里云秒级自动部署幻兽帕鲁服务器,Palworld服务器8人玩版仅需26.52元,如何自建幻兽帕鲁服务器?基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了,一看就懂系列。
67 7
|
1月前
|
Kubernetes 容器
k8s容器时间与服务器时间不一致问题
k8s容器时间与服务器时间不一致问题
23 0
|
8月前
|
关系型数据库 Linux 虚拟化
掌握Linux服务器管理技巧与容器化应用 - 从软件服务到虚拟化技术全面解析
掌握Linux服务器管理技巧与容器化应用 - 从软件服务到虚拟化技术全面解析
93 0
|
8月前
|
IDE 开发工具 云计算
在云服务器上轻松部署 Jupyter,提高性能并优化成本
在部署Jupyter环境时,MMCloud对计算资源进行实时比价,自动选择当前时刻能满足业务需求的最佳成本机型。
|
1天前
|
存储 弹性计算 监控
探索阿里云弹性计算:如何优化云服务器ECS的性能与成本
在云时代,【阿里云ECS】的性能优化与成本控制至关重要。利用实例规格选择、自动伸缩、网络和存储配置,可增强性能、减少成本。结合监控工具和优化建议,用户能解决性能问题,提升应用稳定性,实现高效且经济的云计算运营。
7 1
|
17天前
|
弹性计算 运维 Kubernetes
阿里云轻量应用服务器与轻量容器服务简介与区别及收费标准参考
轻量应用服务器是深受个人和普通企业用户亲耐的一款轻量级云服务器产品,提供精品应用一键部署,支持一站式的域名、网站、安全、运维、应用管理等服务,极大优化搭建简单应用的体验,降低了入门级用户使用云计算产品的门槛。轻量容器服务是专为学生、个人开发者等用户打造的轻量级容器服务,帮助您在云上快速了解容器和Kubernetes(简称K8s)相关的基础概念和轻松进行入门实践。本文为大家介绍一下阿里云轻量应用服务器与轻量容器服务的区别以及收费标准,以供参考。
阿里云轻量应用服务器与轻量容器服务简介与区别及收费标准参考
|
3月前
|
弹性计算 运维 数据安全/隐私保护
《雾锁王国》超简单0成本自建个人专属16人联机服务器教程
《雾锁王国》超简单0成本自建个人专属16人联机服务器教程,先领取阿里云300元无门槛代金券,然后在雾锁王国Enshrouded专题页一键部署,不需要基础,鼠标点选即可10秒钟创建一台雾锁王国游戏服务器,超简单,阿里云百科
|
3月前
|
弹性计算 运维 数据安全/隐私保护
2024年新手搭建雾锁王国Enshrouded服务器教程_免费0成本
2024年新手搭建雾锁王国Enshrouded服务器教程_免费0成本,先领取阿里云300元无门槛代金券,然后在雾锁王国Enshrouded专题页一键部署,不需要基础,鼠标点选即可10秒钟创建一台雾锁王国游戏服务器,超简单,阿里云百科分享阿里云无门槛代金券领取方法、雾锁王国服务器详细搭建教程
|
3月前
|
弹性计算 Linux 数据安全/隐私保护
阿里云4核16G服务器搭建幻兽帕鲁成本仅需26元
阿里云4核16G服务器搭建幻兽帕鲁成本仅需26元,幻兽帕鲁Palworld多人游戏专用服务器一键部署教程,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云百科分享2024年新版基于阿里云搭建幻兽帕鲁服务器教程
|
3月前
|
Linux 应用服务中间件 nginx
国服浪潮服务器操作系统——KeyarchOS多容器架设体验心得
国服浪潮服务器操作系统——KeyarchOS多容器架设体验心得
58 0