“工程化”对于大型数据平台而言,意味着什么?新一届 StartDT Hackathon 来了
日前,2022 第三季 StartDT Hackathon 正式落下帷幕,以“产品工程化与可扩展性提升”为主题,主攻数据云这个“庞然大物”的工程化难题。
本届黑客松共吸引到 9 组参赛,均在 72 小时内完成项目并提测通过。有“单排孤勇者”,也有“梦幻联动”,战况空前激烈,上届冠军 &本届评委沙加评价,“有种幸好我不是今年高考的感觉。”
“工程化”对于数据平台而言意味着什么?
本次黑客松主题“数据产品工程化”指啥?
Gartner 在其发布的“2023 年十大战略技术趋势”中,这样描述平台工程(Platform Engineering):
平台工程是一套用来构建和运营支持软件交付和生命周期管理的自助式内部开发者平台的机制和架构。平台工程的目标是优化开发者体验,并加快产品团队为客户创造价值的速度。
说人话,数据云平台 DataSimba 在稳步完成产品功能开发、配置优化等动作的同时,还对自己有着以下要求:
1、平台庞大,但不冗余,架构复杂,但井然有序;
2、具备可扩展能力,可大可小,从资源、技术等多角度降低使用门槛;
3、支持敏捷迭代,有利于上层应用拓展创新;
4、功能更新、版本升级的同时,保持稳定;
5、用户对产品状态可知可控,能提前预知风险。
简而言之,作为一款企服产品,做到“商业化友好”;作为企业级平台,做到“开发者友好”。
成果展示
#1 DataSimba 应用瘦身
坦白了,DataSimba 的“体重基数”确实有点大。伴随着模块不断丰富、功能不断升级,作为一款平台级产品,“发福”也在所难免。
基因重组的组长元善介绍:目前 DataSimba R4.4 部署需要占用较大的存储资源和较大的内存,deployment CPU 要求也不低,提高了部署的门槛和运维的难度。与此同时,DataSimba R4.4 里还存在着一些不优雅的遗留问题,例如冗余代码、接口、类、工具、配置等。
虽然客户在日常使用中看不见、感受不到这些“不优雅”,但无形之间让产品变得“虚胖”,也增加了后续开发、维护、测试、运维等环节的风险。
“我们要狮子王,不要胖橘猫!”
基因重组从应用架构、应用代码两个方向切入,对这个 DataSimba 进行了深度排查:
l 应用架构:首先分析所有部署包中占用存储、内存、CPU 较大的应用,抓住主要矛盾,优先考虑其优化方案;接着合理地缩减服务,合并不必要的服务;缩减优化 deployment;优化前端服务,减少历史冗余占用的资源;最后通过划分不同的部署单元,按需分阶段部署。
l 应用代码:简化 Pom 依赖,并对依赖版本进行合并;移除已经无用的接口、类、方法、定时任务及消息(虽然降低的存储量不多,但能有效减少后续开发的错误发生率);重构部分低效代码,消灭“重复查询或拉取无用数据”等降低执行效率的行为;简化配置项。
向庞大的遗留问题开刀,需要有勇气,有逻辑,更要有耐心。
以 DataSimba 应用模块为例,基因重组踏踏实实地进行了落地改造:移除配置、定时任务及历史 industry 依赖,并在保持功能的情况下优化减少 5000 行代码。最终,仅该模块就“瘦身”了 22%。按照基因重组的完整方案执行,预计存储占用量将减少 48%。
StartDT CTO、资深技术专家地雷评价:“就像《乔布斯传》中所谈到的,隐藏的部分也要做得漂亮,即便是麦金塔内部的电路板。基因重组的同学们想得非常细、非常深入、非常全面,尤其组长元善,从思路到实践,都展现了一个大架构师应有的素质和能力,值得我们数据云团队的各组学习。”
#2 平台可观测性实践
基因重组负责 DataSimba 的瘦身、健身,无名队则负责 DataSimba 的日常体检,也即“可观测性”。
啥是“可观测性”?
同样 Gartner 在“2023 年十大战略技术趋势”中,对应用可观测性(Applied Observability)有这样的描述:
在任何相关方采取任何类型的行动时,都会产生包含了数字化特征的可观测数据,如日志、痕迹、API 调用、停留时间、下载和文件传输等。应用可观测性以一种高度统筹和整合的方式,将这些可观测的特征数据进行反馈,创造出一个决策循环,从而提高组织决策的有效性。
说人话!我们能看电池健康度,看汽车仪表盘,也能通过体检了解到身体健康情况,而具备可观测性的平台则能够通过外部呈现,来帮助用户判断系统内部状态,了解其运行情况及健康状况。
无名队的前锋谈到,任何系统、平台都有可观测性的场景,通常而言,可以从指标(Metrics)、链路(Traces)、日志(Logs)三个维度来统计。微服务调用链路分析、应用度量分析、合规性审计等都是可观测性的典型场景。
在 IT 运维的场景下,常会遇到这些问题:
关键指标数据缺失,无法完成完善、精准的分析,指导运维动作。
系统的运维分析具备一定的专业性和复杂度,需要对运维指标统计和展示进行结构化、可视化,方能帮助用户提高问题定位和分析的效率。
依赖人工出具巡检报告,费事费力,且难以快速响应数据的动态变化及特定时期的紧急需求。
因此本次无名队选择从 IT 运维场景切入,力求通过加强可观测性来快速定位异常服务模块,助力服务异常根因分析。
前锋介绍,无名队的平台可观测性实践大致分三步,以 Prometheus(一款开源的服务监控系统和时序数据库)+grafana(用于可视化大型测量数据的开源程序)为基本架构:
1. 数据采集
选择了较为核心的指标数据,例如主机、进程、k8s、MySQL 的指标数据等,先行完成采集。未来将持续集成更多的观测项,如集成元仓对每日运行的平台任务的指标数据、其他中间件的数据等。
2. 数据处理
依托 Prometheus 时序存储及查询能力、集成库拓展能力,完成数据处理,并进行监控告警配置。
3. 数据可视化
依托 grafana 搭建可视化大屏,将运维的专业知识沉淀在配置中,并定期自动化输出报告。
N 次获得黑客马拉松冠军的评委、资深数据产品经理沙加谈到:无名队在平台运维上的尝试,不仅有技术前瞻性、有趣,也真正实用。他们生动诠释了从方案到落地的高效执行过程,包括现场遇到小插曲快速排错解决的能力,都体现了 S 级工程团队的素养。
同时也小剧透一下,可观测性是“进行时”,我们的实践还远远不止于此。在 11 月 23 日的 StartDT Day 上,我们会分享更多数据云“可观测性”的进展。
#3 镜像化产品部署
完成数据云平台 DataSimba 的部署,总共分几步?
① 协调资源需求;② 协调人员时间,通常需要运维、测试、开发等多人支持;③ 开通服务器资源;④ 运维安装部署;⑤ 测试验证功能。
四次元口袋组有不一样的想法:“我们要节约资源,即开即用!”
组长雨令介绍,镜像化部署能有效解决上述问题:
通过将产品与系统镜像集成的方式,简化产品部署过程,云服务器开通完成产品即可使用,免去部署调试过程,真正实现即开即用。
打个比方,这就好像买了一台品牌 PC,安装的 Windows 系统中预装了 Office 全家桶,而无需用户逐个辨认、下载安装。
最终,DataSimba 部署所需的最小资源,相比此前减少了 67%;产品部署速度大幅提升,现在只要 30 分钟就能完成 DataSimba、DataKun 两大产品的部署——在公有云的环境下,最快只需 5 分钟;上手简单,对产品并无了解的工程师也能搞定部署,人效得到提升。
“其实今年上半年,我们已经将一套‘DataSimba+大数据集群环境’所需服务器资源降低了 70%,本次黑客马拉松,四次元口袋组迎难而上,再次压缩资源,还提高了部署效率。”评委沙加透露,“这也意味着客户能用更低的成本尝试数据云平台(例如 PoC、中小型企业小规模部署等),发挥数据的价值。”
这正是 DataSimba 作为一款敏捷的工程化、平台型产品要具备的能力,像“四次元口袋”一样,包罗万象,可大可小,敏捷易用。
#4 DataKun 完全离线化部署
闪电组也选择聚焦产品部署问题,提出了“完全离线化部署”的思路。
组长风(花名,单字“风”)介绍:镜像化部署虽妙,但现阶段并不能解决每一个场景的问题,例如,客户环境的服务器已经装好了操作系统 OS,部署产品的过程中就可能存在各种各样的依赖,需要在线联网来下载。然而,有些客户对网络管控较为严格,服务器不允许连接互联网进行依赖包的下载。
因此,闪电组以数据存算引擎 DataKun 为例,分析了目前的安装流程,进行标准化,形成了命令行部署脚本。
最终,完全离线化部署 DataKun,仅需不超过 20 分钟!
资深技术专家、评委牧然表示,闪电组核心解决了客户环境无法访问外网,依赖包无法获取的问题,并实现了服务器初始环境一键创建,实实在在地简化了运维部署步骤,为产品交付提效。
下一步,虽然没有在 3 天内完成从脚本化到容器化的升级,闪电组还将持续实践 DataKun 及其集群的容器化部署,进展将在后续的产品与服务中体现。
#5 DataSimba 服务热升级
这组厉害了,只有一位成员,单刷“热升级”这个大主题。
啥是热升级?
在项目迭代过程中,当对部分模块进行了修改,修复了此前遗留的 bug,不可避免地需要阶段性发布更新,以完成模块更改、bug 修复甚至大版本的重新部署等。
而热升级,是用户无需停止程序、服务,就能完成升级发布。
目前,业内有 4 大典型的发布策略:
1. 停服发布
也就是“夜深人静时,停机发布日”,很古老,但经典,长久不衰,目前许多大型网游、企业内部的管理系统都采用这种方式,虽然迭代速度慢、影响范围大(所有用户/任务都需要暂停),但贵在安全。
2. 蓝绿发布
存在蓝绿 2 个集群或 2 组 Server,同时只有其一参与生产工作。发布时,先在未工作的集群/Server 更新,验证完成后再把生产全量切入到已更新的集群。采用蓝绿发布,用户对升级是完全无感的,用双倍的资源保障了绝佳的用户体验。
3. 滚动发布
取出一个或多个服务器停止服务、执行更新,然后重新将其投入使用。周而复始,直到集群中所有的实例都完成更新。
这是兼顾用户体验和资源节约的发布方式,缺点则是运维工程师不那么友好,有较高的技术门槛,可能存在回滚困难、兼容性考虑要素多、发布周期长等难题。
4. 灰度发布
也称金丝雀发布,让一部分用户开始用 A(新版),大部分用户继续用 B(旧版),如果用 A 的用户没有反馈问题,那么逐步扩大范围,将所有用户都迁移到新版上来。
灰度发布能在用户相对无感、节约资源的情况下,控制故障的影响范围,系统相对稳定。同时,像滚动发布一样,也会面临回滚困难、兼容性考虑要素多、发布周期长等问题。
组长兼唯一组员纯粹介绍,数据云平台做到热升级,应具备以下能力:
· SQL 回滚能力
· 解决接口新老版本兼容性问题
· 完善的流量监控、告警
· 升级前制定服务回滚策略
· 完善的服务自动恢复机制
· 前端缓存处理能力
· 成熟的 CI/CD 能力
经调研、测试,纯粹提出了两种热升级方案:
1. 通过 Kubernetes 的 rolling update,实现滚动升级。达到升级过程中,无状态服务流量自动切换;
2. 基于 Kubernetes labels 技术和自研的 tssp 方法论(task-scheduler-storage-platfrom),实现金丝雀升级。
“做到热升级,对客户来说非常重要,能大大提升客户数据及运维团队的体验。不夸张地说,版本升级夜,也能睡好觉。同时,伴随着我们客户越来越多(凡尔赛一下),更高效的升级部署也能有效缓解交付压力,提升人效和服务品质。”评委地雷表示,“纯粹单枪匹马,不仅产出了关键结论,提出兼顾资源、体验和稳定性的方案,也通过实践验证了方案的可行性,非常精彩。未来,我们会更大范围地在各项目落地。”
#More... 更多精彩!
除了上述各组,还有 4 组也带来了黑客松的硬核成果:
· 应对 DataSimba R4 系的架构调整和升级,“小黄牛队”3 天内完成了 DataSimba R4.3 对某大厂 EMR 的深度整合支持。这不仅要求研发能对其他厂商 EMR 集群快速进行了解并切入,更要求研发对 DataSimba 整体技术栈有广而深的认知,能抽象各业务模块及其所有技术栈和涉及组件,也充分了解组件和集群之间的交互细节。
· “裂变组”着眼于数据云内部研发环境,构建并优化了小组的独立研发环境——各组共用底层的一套 DataKun,同时开启了 Kerberos 保证安全性,上层则通过不能透露的方式,让各小组拥有自己的独立环境进行研发和测试。各小组环境各自维护,之间互无影响,彼此部署互不干涉,甚至支持不同业务、不同版本的需求并行研发,从而大幅提升整体研发效率。
· 数据安全引擎 DataBlack 团队派出了“进击的六人组”,对 DataSimba 进行了账户域加固,优化了账户管控流程,在确保各类型、各场景下,所有账户均能得到安全管理的同时,平台权限维护效率也进一步提高。
· GrowingIO-UBA 团队则与 DataBlack 团队再次梦幻联动,组成“SIX 组”,依托 DataBlack 的脱敏等技术和能力,赋能 UBA,在 UBA 采集端实现数据脱敏,更完善地保障 GrowingIO-UBA 安全合规。
“本次黑客马拉松主攻水面以下的平台工程和效能工具。各组技术水准之高,大大超出了我的预期。”StartDT CTO、资深技术专家地雷谈到,“更关键的是,架构师们没有技术自嗨,都瞄着真实工程瓶颈问题去解决。如果你回去看看最初几届黑客马拉松的内容,就知道团队的内功增强,更接近 S 级团队了。”
正如 DataSimba 后端架构师元善所说,良好的工程化可以在实现相同功能的条件下,给予产品更好的生命力,在客户环境更稳定、更易维护、更易部署。这也是数据云团队通力协作的目标,不断优化,降低架构复杂性、依赖关系、资源消耗,只为客户更快更便捷更高效地用上数据云、用好数据云。
战绩汇报
经过史无前例的激烈角逐,评委们分别从课题完成度、商业价值、产品成熟度、技术难度等维度完成打分。四次元口袋斩获冠军,无名队荣获亚军,基因重组、闪电组并列第三,抱得奖金归!
四次元口袋:
我们的队名叫 4 次元口袋,有队友说已经陪跑 4 届了,所以特地选了第 4 个汇报,这次终于在“4 次元口袋”里找到了史诗级装备。感谢黑马组委会各位老师的筹备和支持!
无名队:
这届黑客马拉松对于无名队来说遗憾与收获并存,虽然以 1 分之差与冠军失之交臂,但“平台可观测性”的课题能成功落地,对我们队成员来说还是很欣慰和高兴的。虽然本届黑客马拉松结束了,但是对于“平台可观测性”这个大课题来说,我们期望它是个新的开始,期待它能在 DataSimba 里早日落地生根。
基因重组:
感谢公司组织的活动和评委的认可,感谢每一个参赛团队,从大家的作品中学习到了很多。
我们在开发中不光要追求技术的先进性,同样要兼顾项目的工程化。良好的工程化可以在实现相同功能的条件下,给予产品更好生命力,这对于需要私有化部署的产品来讲更是重中之重,毕竟在客户环境稳定、易维护、易部署是十分重要的。这需要不断优化,降低架构复杂性、依赖关系、资源消耗,需要整个团队的通力协作、共同进步。
闪电组:
我们小队虽然在此次黑客马拉松中取得了不错的成绩,但与其他优秀小队相比还差很多。今后我们小队要加强技术理论的学习,系统性的学习多场景下的部署架构,并了解新技术和尝试新事物的应用,以便更好地适应不同场景的快速交付。
StartDT Day 数智科技大会
定档 11 月 23 日!
数据云可观测性、云原生新进展?
DataSimba 产品能力再进化?
分析云发布独家模型体系?
丰富的“数据云+分析云”落地实践?
尽在 StartDT Day(2022AW)!
评论