数千台服务器,千万用户量:竟然之家两年云原生改造历程

导读:传统企业的决策链路一般是自上而下的形式,所以在互联网化改造中,不只仅是研发层面,整个公司的管理人员都须要作好知识升级和观念更新,这也是躺平设计家在过去几年的上云之路所经历的。本文将聚焦竟然之家利用阿里云容器服务(ACK) 进行云原生实践历程,期待能帮助读者了解传统企业从传统单体架构向云原生演变的实践路径。算法

2009 年,竟然设计家 (Homestyler) 研发团队正式成立,开始进行第一个版本的探索;现在,十年已过,竟然设计家正式改名为躺平设计家,用户量近千万。在两年多的云原生实践改造过程当中,整个团队经历了从运维数千台服务器再到所有交付给云,从探索上云到利用 Serverless 和 Service Mesh 完成云原生改造,最终总体可用性达到三个 9 以上,同时 IT 费用削减了近一半。本文分享了躺平设计家的云原生实践历程。


自 2013 年由 Pivotal 的 MattStine 首次提出至今,云原生(Cloud Native)这一律念正在逐渐重塑整个软件生命周期。架构良好的云原生系统在很大程度上是自修复、经济高效的,而且能够经过 CI/CD(持续集成 / 持续交付)轻松更新和维护。好在构成云的服务器、磁盘和网络与传统基础设施相同,这意味着几乎全部优秀的架构设计原则仍然适用于云原生架构。


可是在云中,关于这种结构如何执行的一些基本假设会发生变化。例如,在传统环境中配置替换服务器可能须要数周时间,而在云环境中仅须要几秒钟,这些都是应用程序架构须要考虑的内容。


本文是对竟然之家的躺平设计家研发总监谢康进行的独家专访,有助于咱们了解这家企业从传统单体架构向云原生演变的实践路径。
编程

实践背景


躺平设计家原名竟然设计家(Homestyler),是竟然之家旗下专为家装设计打造的一站式服务品牌,包括相关工具和社区,主要服务于家装设计师,目前国内有超过四十万的设计师活跃在该平台之上,国际设计师则已经超过九百万。


在进行云原生改造以前,竟然之家的技术栈相对传统,早期的核心算法和系统都是基于 Scala 和 C++ 语言搭建,而现在已经很难招聘到经验丰富的 Scala 工程师,短时间内用 Java 重构整个平台代价又显得过于高昂。与此同时,总体迭代速度很是慢,对需求的响应周期较长,创新能力也出现明显不足,服务器运维、网络等成本开支逐渐难以承受。


成立早期,传统技术栈存在的问题尚没有那么明显,总体业务只须要不到 10 台服务器就足以支撑,基础设施费用仍是能够承受的。随着用户体量的不断增大,尤为是海外用户的快速增加,即便服务器规模迅速扩展至数千台,依然很难平稳度过每日的流量高峰。


因为服务端渲染属于计算密集型任务,对 CPU 资源需求很是高,每日高峰时段的任务数波动又比较大,常常出现高峰时段渲染出图任务须要几十分钟甚至几小时的等待,这么长的等待时间对设计师来讲是不可接受的。而更可怕是计算资源超过设计值集群雪崩致使全部执行中任务所有崩溃。流量低谷时,大量服务器处于空转状态,资源并无获得合理利用。


此外,躺平设计家整个研发团队擅长的是在垂直领域,好比 3D 图形以及图像处理等领域的研发,却不得不在非核心的方向,好比基础设施运维上投入大量精力和金钱,并且随着规模的持续增加,这部分红本愈来愈高,致使软件研发成本也开始愈来愈不受控,摊薄了本该用在核心产品上的资源投入。


当时整个研发团队陷入很是痛苦的状态,谢康在采访中调侃道:“当时与领先的互联网公司的技术代差恐怕有 5 到 10 年之久。”


最终,在即将失去垂直领域先发优点的压力下,面对着多种编程语言拼起来的庞大、臃肿的技术平台,整个团队最终咬牙决定“要革本身的命”,决定经过云平台打通底层技术栈,向云原生架构迁移,放下一直背负的包袱,注意力从新回归核心业务。
安全

云原生演变


在决定迁移以后,整个团队对当时的云平台需求是比较清晰的。


谢康表示:
服务器

  • 首先是稳定性,自建机房时期很难达到较高的稳定性,常常遇到各种网络和软硬件设施致使的问题;
  • 其次是总体系统弹性,须要在流量高峰时迅速扩容,流量低谷时进行资源回收以下降成本;
  • 最后是高性能,如前文所言,设计渲染对计算能力的要求较高,属于 CPU 密集型计算,而上述这些都是传统公司自建机房很难达到的。相比之下,自动化运维的便捷性和系统可灵活扩展的优先级则显得不那么迫切。


最终,通过多方考量和评估,整个团队在 2016 年开始基于 AWS 进行云原生改造 (后总体迁移至阿里云)。
网络

第一阶段:组织架构调整及微服务改造


1967 年,马尔文·康威提出康威定律, 用一句话归纳就是:“设计系统的架构受制于产生这些设计的组织的沟通结构。”按照康威定律的说法,组织结构必定会反映到系统架构上,而传统企业大都习惯了自上而下的驱动方式。所以,在进行微服务改造以前,躺平设计家对组织架构和人员均进行了调整。


谢康表示,躺平设计家最初成立时大部分员工来自 AutoDesk,并入竟然集团后又受其影响,最终这些体如今决策模式,组织结构上均与国内互联网企业有巨大差别。若是但愿进行改造,就须要对组织架构先进行调整。具体来讲,躺平设计家整个技术团队在 3D 图形及图像处理等核心算法上有独特优点,所以重点保留了研发工程师,将不得不作且又不擅长的中间件和基础运维等工做交给阿里云。


网络和机房整个团队基本在架构中消失,运维团队大幅缩减,而产品团队,算法团队、大数据团队,包括处理大规模实时计算的研发人员都在增长,并开始招募 ServiceStack 和 Docker 等云原生相关研发人员。


在组织架构调整基本完成后,团队开始进行微服务改造。此时,新的问题又出现了。


与大多数传统企业相似,躺平设计家的系统最初采用的也是单体架构模型,可是规模很是庞大,上百个服务糅合在一块儿,服务间的逻辑依赖异常复杂,若是上云前先在本地进行微服务改造,整个拆解过程想必既耗时又耗力,甚至能够说短时间内根本不具可能性。


谢康表示,当时,整个团队采起了很是激进的作法,经过 Service Mesh 将服务治理能力下沉到基础设施,这样就能够在不对系统进行深度改造的状况下将应用运行在云平台之上。


之因此选择 Service Mesh,也是由于最初的技术栈基于 Scala 和 C++ 编写,不经深度改造其在云上很难良好运转,且当时微服务支持方面也比较欠缺。


随后,团队就能够在不影响业务正常运转的状况下对应用进行微服务划分和重构,总体运维和伸缩部署变得十分容易。谢康补充道,躺平设计家可能也是国内最先一批使用 Service Mesh 的公司。在通过一段不太长的迁移以后,躺平设计家的全部核心业务已经所有运行在阿里云平台之上,并部分完成了微服务化改造。


可是,严格来讲,这一阶段的“硬搬上云”虽然经过上云享受到了云平台自己提供的弹性、可用性及强大的计算能力等优点,但整体价值提高还并非很是明显。


不过,整个团队依旧按计划进行第二阶段改造,缘由以下:
架构

  • 一是由于持续的云原生化已经成为企业的必选项,不管是公有云仍是私有云,不借助云原生的赋能,当时的 Homestyler (后来才改名为躺平设计家) 与主流互联网公司间的技术代差只会愈来愈大;
  • 二是自从进入互联网 2.0 时代,企业的规模化愈来愈重要,以当时的体量和产品迭代速度,若是不向云平台迁移,不经过快速转型打磨出爆款产品快速成长起来,将很快失去先发优点而且后续的生存压力也会很是大。

第二阶段:从上云到云原生


在第一阶段改造接近尾声之际,躺平设计家立刻开始了第二阶段的改造,就是系统的深度微服务化改造和集群的规模自动化及集群自动化治理和按需伸缩能力。谢康表示,第二阶段已经开始从单纯上云向云原生方向改造,价值也比较明显,改造完成后总体的交付速度和运维自动化能力均有大幅提高。


举例来讲,云原生改造以前,躺平设计家的交付周期可能以季度为单位,现在的交付周期已经缩短至以周为单位,每两周还会进行大的功能升级。并能在流量高峰时,作到以分钟为单位计算集群扩展,高峰时间段也能够作到及时出(设计)图,这一点甚至超过了部分本地化软件,再也没发生大范围的计算停滞故障。


与其余互联网公司同样,躺平设计家也有着大量 Web 应用和微服务,这些都运行在阿里云容器服务(ACK)中。


不过谢康表示,不一样的是,躺平设计家服务器更多运行着计算密集型任务,原来 IDC 机房中的大部分服务器都是 48 核,甚至 96 核的定制机型,相似的高配服务器多达几百台,并且长时间极限压榨服务器算力的运行方式也致使机器故障率很是高。


在改造过程当中,若是想对这样的系统进行大规模改造上云并非一件容易的事情。整个团队与阿里云的架构师和技术专家们共同改造,屡次克服两地协助诸多不便,一块儿讨论制定方案,测试最终在阿里云上完美解决计算密集型任务上云的问题。


目前,躺平设计家已经所有退役线下渲染服务器,并迁入阿里云云主机和阿里云容器服务 ACK,实现应用服务层面的弹性伸缩与完美运行,不再用担忧服务硬件设施故障致使的忽然计算力雪崩,并能在用户提交任务时动态调整集群规模。


除了上述经过上云解决计算资源按需伸缩的问题,谢康也表示,Serverless 和 Service Mesh 在躺平设计家的运用也愈来愈普遍,随着云原生改造的持续进行,愈来愈多须要按需伸缩的计算节点被解耦出来,重构掉以前严重依赖状态和过程当中频繁读写外援数据的问题后,这部分逻辑所有迁移到了 Serverless 的节点中。


经过一系列 Trigger 触发,不只让整个系统变得更加灵活,仅需支付运行期间费用的方式也很是经济。基于阿里云的 Istio on ACK 能够建立、管控以及观测微服务功能,并轻松实现负载均衡、服务间认证以及监控等能力。


Service Mesh 的集群里则承载了几乎所有基础服务,躺平设计家的第二阶段改造实际上是一个深度微服务化的过程,经过绞杀者模式逐步剥离原来一个个祖传的庞然大物,最终使每一个逻辑服务组都能自由扩展并能在故障时优雅降级。


起初,团队也考虑过利用 OpenStack 自建私有云。


可是无论私有云仍是公有云,云集群管理都是由若干一系列独立而又相互关联的项目组成的,而每一个项目又由若干个组件组成。这些组件相互合做,构建成了整个云生态。这其中有负责集群管理,负责网络管理,负责存储管理,还有负责镜像管理等。


对当时的躺平设计家而言,总体复杂度太高,并且云研发的人才十分紧缺,即便愿意投入资金想招募到这方面合适的人才都不是一件容易的事情,所以最终仍是决定与公有云厂商合做,借助公有云提供的基础设施和服务,自身则更专一于核心算法及业务研发。


众所周知,Kubernetes 已经成为事实标准,躺平设计家使用阿里云容器服务(ACK) 以后, 成熟的容器和容器编排能让研发无视 IaaS 的复杂性,同时提供强大的配置和管理功能,极大简化研发的配置管理工做。
负载均衡

第三阶段:DevOps 实践及后续规划


目前,虽然第二阶段的改造还在持续进行中,但躺平设计家的技术团队已经作好了下一步的技术规划。


接下来,DevOps 推动、边缘计算和基于 Service Mesh/Serverless 的规模化计算力整合提高,将是整个研发团队云原生实践的重要方向。谢康表示,目前在 DevOps 方面还有更进一步提高的可能,而原先基于公有云的通用方案也须要结合自身需求进行一些定制化改造。


简单来讲,在 DevOps 方面:
less

  • 首先要作到及时感知,能够及时察觉到系统每一个节点上的运行状态;
  • 其次是可触达,经过技术手段对每一个阶段出现的问题进行解决,而非简单的重启了事,核心链路上的每一个环节都必须有自愈能力,保证系统面临重大故障时能够经过熔断或者降级解决,避免全局瘫痪;
  • 最后是智能化运维,经过机器学习的方式根据历史数据对系统的总体健康状况进行把控,利用运维 AI 算法实现自动化,最终走向无值守运维。


此外,随着云原生愈来愈规范化,在高度自动化的 CI/CD 和边缘计算方面也开始有所突破,这些一样是躺平设计家的关注方向。谢康解释道,目前公司主打的是云端能力,但其实躺平设计家的整个用户交互很是频繁,过程当中产生的流量也比较大。


如何能将部分用户行为放到边缘网络节点,而非所有集中到云端节点处理就能大幅提升用户体验?若是边缘计算上能够取得突破,将会对解决这个问题有很是大的改善,所以整个团队对该领域的发展密切关注。
运维

实践效果


除了上文说起到的交互周期缩短,性能加强外,整个过程也让躺平设计家的用户数有了极大地提高。总结下来,谢康认为能够归纳为以下四点:
机器学习

  • 基础设施费用减半,在规模扩大的基础上,在基础设施上的投入还缩减了近 50%;
  • 研发成本下降,整个团队 50% 以上的人员为研发和产品,在基础设施交付给阿里云以后,整个团队能够集中精力进行核心业务研发,交付速度大幅提高;
  • 系统可用性提升到 99.96%,在人员及成本缩减的状况下,总体可用性却有了很大提高;
  • 安全性提升,原来受限于总体架构,在达到 99% 以后,小数点以后的每一次提升的成本都是非线性的,而经过云原生改造,能够用相对经济的方式达到较高安全度。

结束语


回顾整个过程,这场改造绝非易事。谢康表示,躺平设计家至少是幸运的,能够在短期内迅速肯定改造计划并实践成功。


对于但愿进行云原生改造的企业,谢康建议必定要作好相关技术储备和接受刮骨疗伤的心理准备,不要幻想不作任何工做就能实现平滑迁移,这不可能实现,技术改造必不可少。


其次,虽然云原生相关规范及组件逐渐成熟,但对传统企业而言,门槛依旧很高.若是迫切但愿提高技术能力,组织内部要对架构调整达成共识,整个研发体系也须要作好充足的准备,决不能以为托付给云厂商后就能够不劳而获,就能一步上云。整个上云的过程,决策者时刻都要作好迎接变化的准备。


最后,如上文所言,传统企业的决策链路一般是自上而下的形式。


所以须要进行一次互联网化改造,不只仅是研发层面,整个公司的管理人员都须要作好知识升级和观念更新,这也是躺平设计家在过去几年的上云之路所经历的。


嘉宾介绍:
谢康,从业互联网十几年的资深技术老鸟,曾前后供职于盛大,携程和同程艺龙,专一于大规模高可用的互联网架构设计和云原生的落地探索,拥有多年的平台架构经验,曾设计实现承载上万服务的微服务和 DevOps 平台。现就任于躺平设计家,主要负责总体技术架构和云原生推动工做。

了解 ACK 容器服务,请查看:https://www.aliyun.com/produc...
阿里云容器服务中国最佳,进入 Forrester 报告强劲表现者象限

相关文章
相关标签/搜索