作者:百潼
医院环保 IOT 设备的引领者:机汽猫
机汽猫是⼀家致⼒于通过投放⾃助取袋设备,为医院场景提供新型环保袋交付⽅式的科技公司。它成⽴于 2019 年,旗下品牌袋拉拉(DaiLala)通过投放⾃助取袋机,解决了医院对环保袋的管理问题,让⽤户能够随时使⽤环保袋,同时也致力于在医疗场景投放各类型自助设备,解决用户和医院对耗材的管理问题。公司总部位于浙江安吉,公司始终坚持自主研发、独立运营,已拥有数十项自主知识产权和核心技术,2022 年获得国家高新科技企业评级。机汽猫的使命是⽤物联⽹助⼒医院服务,降低成本、提⾼效率、改善⽤户体验。
业务持续增长,企业面临的挑战
机汽猫主要在做医院 IOT 的设备,例如自助取袋机和充电宝的业务等等,平时白天医院的人流量较大,自助取袋或者使用充电宝的的病人很多,在晚上的时候,医院的人流量大大减少,使用 IOT 设备的人数也大幅下降。这样的业务特征导致了业务流量的峰谷差距很大。
之前技术同学将应用都部署在了 ECS 上,每当业务高峰期的时候要提前做好资源预留,低谷期再手动缩容。由于技术团队只有 14 个人,又要兼顾研发工作又要兼顾运维工作,一直以来面临以下几个方面的挑战:
- 潮汐型业务,预留资源困难:机汽猫平时的业务有非常明显的波峰波谷。当医院的人流量增加的时候,最多的时候能达到低谷期人流量的的十几倍以上,买药和紧急充电的需求量也随之不断升高,因此对于袋子和充电宝的需求也在不断增多。在每次流量峰值到来的时候,研发团队都要提前准备几台服务器,有时候流量难以预估,因此预留资源成为一大难题。预估资源困难,预留过程繁琐给技术同学带来了不小的挑战。
- 人员不足,运维困难:机汽猫没有比较专业的运维团队。技术同学不仅需要进行应用迭代发布等研发工作,同时也要兼顾逐台服务器部署应用,还要应对生产过程中遇到的突发情况以及排查问题。运维工作在日常中占用了非常大的时间和精力。随着业务量的不断增加,ECS 已经无法满足弹性需求,技术团队也考虑将应用部署在商业版 K8s 上,但是 K8s 的也有不小的学习成本。所以如何能实现弹性,便于运维,同时又不用花时间来学习 K8s 成为技术团队的一大诉求。
- 发版受限,研发效率低:技术团队一直使用的是 ECS + 云效的方式来做应用发布,但是之前担心新版本发布出现问题,所以需要等到业务低峰期去发布,每次发版的时候都要逐台服务器部署应用,遇到问题也很难在短时间内立刻会滚。不仅发版时间受限,发版效率也非常低。
- 资源利用率低,大量资源浪费:平时部署在 ECS 的 CPU 利用率只有百分之十几,而且流量高峰期过去,预留的资源不能及时释放,此时又产生了大量资源的浪费。
解决方案
机汽猫将所有的应用都部署在了 SAE 上,开箱即用微服务和自适应弹性的能力,并且配合 MSE Nacos 和云原生网关来做服务发现和服务治理,通过容器镜像服务 ACR,云效对接 SAE 来做发布,SAE 上的应用访问后端数据库。
01 微服务治理
SAE 为机汽猫提供了无侵入微服务治理的能力。技术团队之前就有用到 MSE Nacos 和 MSE 的云原生网关,上了 SAE 之后,直接将 MSE 的云原生网关和 MSE Nacos 挂载到 SAE 上,来对 SAE 上的应用做服务发现和治理。
“之前我们使用的是 ECS,我们经常有小版本发布的需求,但是担心每次发版会对生产环境造成影响,导致业务停用,所以每次发版都需要等到业务流量低峰期的时候来做发布,很多时候可能一周才能发一次。”
“把应用部署在 SAE 上之后,运用 SAE 的无损上下线,就能够实现新版本的优雅上线和旧版本的优雅下线,也不用担心会对实际生产环境的业务造成影响。而且可以很顺畅地和云效对接,直接发布新版本,反正就是随时发,也不用顾及是不是业务高峰期。现在两三天就能发布一个小版本,效率非常高。
02 自适应弹性
SAE 提供了自适应弹性的能力,帮助机器猫实现百毫秒级弹性伸缩,能根据流量和各种策略指标来实现弹性能力。
“原来我们用 ECS 的时候完全没有做弹性,我们有自己的资源池,每次业务流量高峰之前,就针对几个主要的应用来预留一些资源,但是这样流程非常的繁琐,每次都有大量资源的浪费。”
现在机汽猫利用 SAE 的弹性能力,完全省去了预留资源这个步骤,就能根据业务的潮汐来进行自动扩缩容。“现在我们也没关注过在业务高峰期弹起来多少实例,我们只需要给应用提前配置好 CPU 和内存的指标弹性策略,等到业务流量高峰期到来的时候,SAE 就能帮助我们轻松应对,也不用担心预留资源导致的大量资源浪费的问题。”
03 平台工程化
此外,SAE 还提供平台工程化的能力,秒级完成从源代码仓库或 War、Jar 代码包部署 SAE 应用,并支持自动 CD。同时也提供应用模板、CLI 命令行工具、组件库、成本管家等能力,帮助开发者们快速高效的交付应用程序。
机汽猫使用容器镜像 ACR,通过云效接入 SAE,直接就能进行流水线发布,发版的流程非常简单,发版速度非常快,只需要关注业务应用的迭代,SAE 就能帮助实现应用的快速交付。
“我们也尝试使用商业版 K8s,但是还需要投入大量的时间和人力来学习 K8s 管控,但 SAE 就屏蔽掉了 K8s 这一层,非常的简单易用。现在我们基本不用 ECS 了,所有的应用都跑在了 SAE 上,还有一些自建的 XXL-Job,也以小应用的方式部署在 SAE 上,之后会考虑迁移到 SAE 的任务托管上来。”
使用效果
1)研发效率提升了 70%:通过阿里云 Serverless 应用引擎 SAE,彻底解决了原来只能在低峰期的时候进行发版,从原来的发版时间受限,到现在只要有发布的需求,就能通过 SAE 的无损上下线,配合云效流水线的方式来随时发布。从原来一周发版一次,到现在两三天就能有一次小版本的发布,效率提升了 70%。而且也不用担心发布的版本有问题,可以做到随时一键回滚。
2)提升运维幸福感,部署应用更轻松:通过阿里云 Serverless 应用引擎 SAE,可以轻松应对运维方面的繁琐工作,无需花大量时间去学习 K8s 的用法和运维的工作,就能轻松实现弹性能力和相关的运维配套。技术同学只需要专注业务应用的开发,运维工作交给 SAE 来做,部署应用和排查问题都更方便了。
3)无需预留资源,SAE 弹性轻松应对潮汐业务:原来应用部署在 ECS 上的时候,是完全没有做弹性的,每次业务流量高峰期的时候,流量高于平时十几倍,都需要提前预留资源,提早做准备。现在将应用部署在 SAE 上了之后,再也没关注过资源的预留问题,配置好弹性策略之后,也不用关心需要多少实例来承载业务,SAE 会帮忙轻松应对潮汐业务。
总结和期待
“我们调研和准备了半年,一次性迁移到了新版 SAE 上,主要看中了 SAE 的弹性能力和运维简单的特点,而且现在新版的使用体验越来越好了,控制台界面的操作比原来都要流畅很多。但我们还在持续摸索中,看如何能更好地应用 SAE。”
“希望 SAE 能继续保证稳定性,最好是有应用的统一管理能力,比如应用统一配置告警规则和弹性策略,这样会更方便一些。”