局网站建设自查,品牌商城网站项目,汕头手机建站模板,山东临沂建筑模板生产厂家完美日记创立于2017年#xff0c;这家公司上线不到两年即成为天猫彩妆销冠#xff0c;2019年成为11年来第一个登上天猫双十一彩妆榜首的国货品牌#xff0c;包揽天猫2019全年彩妆销冠#xff1b;2020年4月成为首个亮相天猫超级品牌日的国货彩妆品牌#xff0c;同时勇破彩妆…完美日记创立于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系统全部迁移完成。
至此完美日记全面容器化改造完成。 在容器化部署过程中利用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。在容器环境下很多日常操作都自动化或半自动化了比如应用的部署和发布、扩容等容器编排具有自愈能力即使出现问题也能减少人工的干预大大减轻运维人员的工作压力。
完美日记下一步会重点关注三方面一是进行IngressGateway单独部署二是使用ECIHAPEWAHAS自动扩容数据来源进一步优化成本应对突发流量三是考虑采用服务化网格技术。
如今云原生已经成为企业数字化转型的关键策略由于应用需要快速开发和交付这就促使企业采用云原生的方法来开发应用以提高效率并增加灵活性。对于身处云原生时代的企业和开发者而言不仅需要了解如何通过容器实现构建应用的新方式更是要以开阔的视野和开放的心态去拥抱云原生生态。
对于企业而言需要具备一定的前瞻性对于容器生态圈的主流技术和发展要有足够的把握才能更好地将现有业务与容器技术相结合。随着企业对技术的不断探索业务系统的逐步演进应用规模的日渐增大如何更好地与开源生态系统相结合扩大企业的技术影响力同时引入更合适的人才是云原生时代下企业要考虑的问题。
点击阅读原文了解更多阿里云容器服务ACK技术详解与客户案例。 阅读原文链接https://www.aliyun.com/product/kubernetes?spm5176.12825654.1kquk9v2l.1.e2cd2c4aqP4QCp
原文链接 本文为云栖社区原创内容未经允许不得转载。