作者:百潼
醫院環保 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 能繼續保證穩定性,最好是有應用的統一管理能力,比如應用統一配置告警規則和彈性策略,這樣會更方便一些。”