Serverless 应用引擎 SAE 助力袋拉拉研发提效 70%

news2024/9/22 9:32:03

作者:百潼

医院环保 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 能继续保证稳定性,最好是有应用的统一管理能力,比如应用统一配置告警规则和弹性策略,这样会更方便一些。”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2106034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 10数据中心中的BGP

本章解答以下问题: ASN,团体(community),属性(attribute),最佳路径这些BGP术语是什么疑似?在数据中心中应该使用eBGP还是iBGP?在数据中心使用BGP时,应采用什…

序列化和反序列化之Serializable与Parcelable的异同

目录 序列化和反序列化Serializable 和 Parcelable 的区别Serializable特点Parcelable特点Serializable、Parcelable 使用场景区别总结 在 Android 开发中,序列化和反序列化是将对象转换为字节流以及从字节流还原对象的过程。Java 提供了 Serializable 接口&#xf…

jmeter中响应时间、TPS、服务器资源图表

一、响应时间图表 jmeter中的聚合报告已经足够显示响应时间,但是不会显示很详细,下面使用监听器中的插件查看, 添加后,可以不用更改任何配置,直接使用默认即可统计响应时间 还是抓取百度1分钟查看数据,也是…

Meta:大语言模型可以通过自我批判取得大幅提升!

夕小瑶科技说 原创 作者 | 谢年年 论文的审稿模式想必大家都不会陌生,一篇论文除了分配多个评审,最后还将由PC综合评估各位审稿人的reviews撰写meta-review。 最近,来自Meta的研究团队将这一模式引进到大模型的对齐训练中。模型同时扮演 执…

一. 从Hive开始

1. 怎么理解Hive Hive不能理解成一个传统意义上的数据库,应该理解成一个解决方案。 是Hadoop在hdfs和mapreduce之后才出现的一个结构化数据处理的解决方案。 Hdfs解决了大数据的存储问题,mapreduce解决了数据的计算问题。 一切似乎很美好。 但是使用成本…

人机环境系统智能与Petri网

人机环境系统工程是一门新兴的交叉学科,它以人、机、环境为系统,研究系统整体的优化。而 Petri 网是一种用于描述和分析系统动态行为的图形化建模工具。 在人机环境系统中,智能体现在人、机、环境三个要素之间的相互作用和协同工作。人的智能…

【微信小程序】搭建项目步骤 + 引入Tdesign UI

目录 创建1个空文件夹,选择下图基础模板 开启/支持sass 创建公共style文件并引入 引入Tdesign UI: 1. 初始化: 2. 安装后,开发工具进行构建: 3. 修改 app.json 4. 使用 5. 自定义主题色 创建1个空文件夹,选择下…

map和set的使用和底层实现

嗨喽大家好,时隔许久阿鑫又给大家带来了新的博客,c进阶——map和set的使用和底层实现,下面让我们开始今天的学习吧! map和set的使用和底层实现 1.set和multiset的使用 2.map和multimap的使用 3.底层结构 1.set和multiset的使…

基于FCM模糊聚类算法的图像分割matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 FCM算法原理 4.2 图像分割中的应用 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包…

单列表集合顶层接口Collection

List:添加元素是有序,可重复,有索引 Set:添加元素是无序,不重复,无索引 Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用。 1.添加元素 细节1:如果我们要往List系列集…

ArcGIS出图格网小数位数设置

1、比如要去掉格网后面的小数点,如何设置呢? 2、如下图设置。

《软件工程导论》(第6版)第12章 面向对象实现 复习笔记

第12章 面向对象实现 一、面向对象实现概述 1.主要任务 (1)把面向对象设计结果翻译成用某种程序语言书写的面向对象程序。 (2)测试并调试面向对象的程序。 2.面向对象程序质量的影响因素 &#xff0…

Redis Pub/Sub模式:分布式系统中的解耦利器

序言 Redis的发布订阅(Pub/Sub)是一种消息通信模式,允许发布者(Publisher)发送消息到频道(Channel),而订阅者(Subscriber)可以订阅一个或多个频道来接收消息…

惠中科技光伏清洗剂:绿色清洁,高效发电的守护者

在当今全球能源转型的大背景下,光伏产业作为绿色能源的重要组成部分,正以前所未有的速度蓬勃发展。然而,光伏板长期暴露于户外环境,不可避免地会遭受灰尘、鸟粪、油污等污染物的侵袭,这些污染物如同阴影般覆盖在光伏板…

代码随想录Day 35|动态规划,二维dp数组,滚动数组,leetcode题目:416.分割等和子集

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 动态规划Part03一、 动态规划:01背包理论基础01 背包二维dp数组01背包 二、动态规划:01背包理论基础(滚动数组)思路一维dp数组(滚动数组&…

echarts三维立体扇形图+三维立体环形图配置详解记录

先看效果,注:三维立体echarts比较吃性能,同一页面如果有多个三维图进行渲染,进行跳转时可呢能会对整体页面产生影响,具体解决方法可查看本人另一篇文章 多个echarts使用3D导致页面卡顿的解决办法 三维立体扇形图 三维…

c# Avalonia 架构开发跨平台应用

实现了一个计算器的应用,先看在不同平台的效果 windows11上 ubuntu上 统信UOS 上 麒麟 kylin v10 好了,先说一下问题,如果想一套代码在不同平台同时运行,里面调用的逻辑还是要分系统的,先分linux系统和windows系统&a…

2024年全国铁路(铁路、高铁、地铁)矢量数据集

数据更新时间​:2024年6月​; ​数据范围:全国各省(不包含台湾); 数据格式​:shp; ​数据包含类型:铁路、高铁、地铁 数据​坐标信息: EPSG Code 4326 大地基准面 D_WGS_1…

CTFSHOWRCE

web3 1.打开环境,上面给了一句php的话,意思是get传参url有文件包含漏洞 2.get传参运用伪协议,post传参命令执行看目录。 3.上面有一个文件ctf_go_go_go,访问这个文件就有flag web4 1.打开环境,和上一关的一样,但是不…

CSS实现优惠券透明圆形镂空打孔效果等能力学习

前言:无他,仅供学习记录,通过一个简单的优惠券Demo实践巩固CSS知识。 本次案例主要学习或巩固一下几点: 实现一个简单的Modal;如何进行复制文本到粘贴板;在不使用UI的svg图片的情况下,如何用C…