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