从初创企业到全球知名企业,不论企业规模如何,都需要因应时代需求,打造及部署各类现代化应用程序,才能够在当下瞬息万变的数字环境中争得一席之位。作为这些应用程序核心的开发人员,他们要面对的挑战是如何让自己开发的应用程序紧跟最新技术发展趋势,以及如何同时提升自身的工作效率。
2023 年 9 月在首尔举办的 MongoDB.local Seoul 活动期间,三星电子 (Samsung Electronics) 数字家电 (Digital Appliances, DA) 事业部的 Sungbin Lim 做了一场演讲,主题为“MongoDB Atlas 为加班加点的开发运维工程师带来工作与生活的平衡 (MongoDB Atlas brings work-life balance to evenings of DevOps engineer)”。在演讲中,Sungbin Lim 分享了他的团队使用 MongoDB 后工作效率得到的真实转变。如需观看完整视频,请点击此处(韩语):
MongoDB Atlas 打造高效的家电数据管理
三星电子 DA 事业部以三星的 SmartThings 为重心,借助最新 AI 技术和物联网 (IoT),为支持各类服务而开发一系列采用 AI 技术的家用电器和技术。
SmartHome 服务是 DA 事业部最早及规模最大的服务器平台,会收集三星家用电器的设备数据,供事业部用于开发各种数据驱动型服务。
Samsung SmartHome 服务早在 2014 年就已推出,其作为用户和设备档案管理服务器,可用于借助移动应用程序来控制和监控三星家用电器,并通过 MySQL 数据库管理应用程序数据。
2015 年,团队搭建了基础平台来收集由家用电器生成的实时事件数据,并将数据用于打造数据驱动型服务,例如将数据用于训练 AI 服务。
团队还引进了社区版的 MongoDB,利用这款文档模型来灵活处理和利用 JSON 格式的应用程序数据工作负载,在开发工作负载的重要环节发挥 NoSQL 的强大作用。
为拓展服务打下坚实基础
团队一开始使用 MongoDB 时,社区版 MongoDB 的运行过程很顺畅。但随着家用电器数量以及与服务器通信的流量的持续增加,团队逐渐遇到挑战,难以确保服务可靠运行。
尤其是在盛夏时节,空调、冰箱等家用电器在这几个月的频繁使用,导致数据在某个时段集中流向服务器,使问题更加复杂。
虽然社区版 MongoDB 能够依开发人员的意愿而进行调整,但要享受这个优势,还需要开发人员在问题出现时,投入时间管理及操作数据库。
此外,在公司扩大服务范围的过程中,开发团队意识到有必要夯实技术根基,才能够更好地利用 MongoDB、灵活的集群以及经过强化的存储和监控功能。2022 年,三星电子 DA 事业部改为完全采用 MongoDB Atlas,并借其更高效地运作 SmartHome 服务。
考虑到各个选项的限制和停机时间之后,三星的 DA 事业部制定了迁移策略,即,利用 Mongomirror 实用工具将数据迁移到专用网络。
“对于 Samsung SmartHome 来说,能够在基础设施管理和业务逻辑开发之间维持平衡十分重要。迁移到 MongoDB Atlas 后,我们得以卸下基础设施管理的负担,聚焦应用程序的开发和创新。”主导迁移项目的 Sungbin Lim 表示。
“MongoDB Atlas 的平均响应时间缩短了超过一半,从8毫秒缩短到3毫秒;磁盘读取延迟从3秒降至18毫秒,这样可用性就得以大幅提高,”Sungbin Lim 强调,“作为开发人员,我们惊喜地发现迁移到 MongoDB Atlas 后,我们没有再因为数据库处理故障而碰到任何问题或警告。”
因此,在为 Samsung SmartHome 服务的扩展提供坚实基础方面,MongoDB Atlas 发挥了重要的作用,让三星团队能够轻松处理更多数据流量。
开发人员工作效率和服务质量双丰收
从本质上来说,三星电子的 SmartHome 开发团队所管理的写入密集型工作负载,持续更新设备的每个状态变化,例如空调的传感器变化(温度、湿度等)、冰箱的开和关。
与 MongoDB 韩国团队一同分析关键绩效指标后,DA 事业部得出结论:基于现有副本集的横向扩展策略将无法快速更新或管理不断增加的流量和工作负载高峰(尤其是在盛夏几个月期间)。
迁移到 MongoDB Atlas 所体验到的大幅改进让三星电子的 DA 事业部设想了新的横向扩展策略,即,利用分片集群来摆脱现有副本集存在的写入工作负载限制。
“与 MongoDB 韩国团队合作进行研讨会和概念验证 (PoC) 之后,我们得以提前识别问题并完成了分片架构部署,”Sungbin Lim 表示,“我们设置了时间点恢复 (PITR),因此能够在分片过程中出错时高效恢复数据。”
分片之后的平衡效果得到改善,因为每个分片分配了 300-400 个节点连接,而之前的副本集则是大约 800 个连接,MongoDB 的逻辑数据大小从 82 GB 缩小到大约 42 GB,能够方便高效执行工作负载。磁盘 IOPS 同样得以减少近一半,从之前的 16-20k/s 减少到 8-10k/s,提高了磁盘利用率。
借助 MongoDB Atlas 实现数据库零中断和高可用性,三星电子 DA 事业部的开发运维工程师体验到了工作与生活之间的平衡,从而专注于为客户开发新服务。
通过迁移到 MongoDB Atlas 及执行分片架构,三星电子的 DA 事业部构建了高效且可靠的基础设施,它计划在未来继续与 MongoDB 韩国团队合作以更高效地管理数据工作负载。