疫情之下,如何快速搭建部署口罩預約系統

​抗擊新型冠狀病毒肺炎的形勢依然嚴峻且複雜,對於普通民衆而言,口罩作爲最基礎的第一道防線,可謂是一“罩”難求。爲了降低人員流動和聚集帶來的交叉感染風險,保障口罩的供應秩序,各地政府部門相繼推出了線上預約登記購買口罩的措施。口罩預約系統雖然看似功能簡單,但由於上線時間緊迫、用戶體量大、各地區的流程不統一等問題,如何在短時間內快速上線一套能夠應對大規模併發、響應及時且支持彈性擴容的線上預約系統,成爲各地政府部門面臨的技術難題。

2月上旬,UCloud先後承接了寧波市餘姚、北侖、海曙地方政府的線上口罩預約系統的上線。我們首先和餘姚大數據局合作,在短短4個小時內完成了系統的部署上線。然後在餘姚落地案例的經驗基礎上,幫助海曙區和北侖區部署了他們的預約系統,其中北侖區還採用了UCloud自行研發的口罩預約解決方案,目前三個系統均取得了很好的效果。本文介紹這次三個系統設計、開發、部署、上線的實戰經驗,供所有抗疫的有志之士參考。

UCloud公有云快速響應

傳統IT模式下,開發部署一個業務,不僅初期服務器成本投入大,且設備採購部署週期冗長、不支持快速擴容。在緊張的疫情期間,形勢不允許政府部門將太多的時間浪費在底層IT基礎設施的搭建和業務的開發上。

2月5日,餘姚市政府同意“口罩線上預約”方案後,該市大數據局聯合UCloud一起迅速組織技術團隊,連夜進行技術方案的商討,經過12小時的共同努力,順利完成了平臺部署聯調。測試通過後,於2月6日下午2:00開啓了餘姚市民口罩網上預約通道,並通過短信驗證碼等手段來確保合理發放。2月6日至9日共計發放12.5萬個口罩,有效避免了人員的聚集。隨後,餘姚市政府於2月13日開展第二批申領口罩線上申領,通過UCloud和餘姚大數據局合作進行的進一步優化,系統運行更爲穩定高效、性能提升了十多倍。

同時,爲了給寧波市北侖區提供完整的口罩預約解決方案,從2月5日接到其口罩預約系統需求開始,UCloud在第一時間快速組織了志願者團隊,承擔了所有的開發、運維和監控工作。並結合當地政府的官方疫情通知,以及各區居委會、街道的具體需求進行開發。在經歷了多次的線上溝通、數十個版本的更新和流量考驗,整個口罩預約系統於2月6日完成開發,且經過一個晚上的緊急部署,就完成了整個口罩預約平臺的上線,2月7日起向市民提供服務。全程只用了3天時間,響應速度之快得到了該區政府的充分認可。

思路:公有云成熟組件,加快開發部署

由於志願者團隊人數有限,在討論清楚了業務需求和流程後,我們將系統分爲前端、後端、數據庫等諸多模塊,分別進行模塊化開發。

考慮到開發週期緊迫,而數天之內很有可能根據實際需求進行多次調整和迭代,我們決定充分貫徹DevOps理念,運用CI/CD流水線加強開發部署一體化,提升效率。

此過程中,UCloud公有云成熟的技術組件,幫我們節省了大量時間,例如運用UK8S產品,可以快速部署管理一套Kubernetes集羣,而UDB和UES等,也令我們獲得了觸手可得的數據庫和大數據分析組件,可以直接投入應用。

署管理一套Kubernetes集羣,而UDB和UES等,也令我們獲得了觸手可得的數據庫和大數據分析組件,可以直接投入應用。

這些舉措最終幫我們在三天內迭代了50多個版本,如期完成了開發任務。

DevOps:簡單系統也五臟俱全

我們先來看一下這個系統的部署流程圖:

由圖可見,此次口罩預約系統的部署包括了UCloud公有云服務中的UHost、UES、UK8S、MySQL UDB等:1. UK8S:3個Master, 4個Node以及由UK8S管理2個ULB ,分別對應了兩個不同的域名,作爲業務入口,並提供集羣管理;2. UDB:MySQL 高配進程和低配進程各一,作爲業務數據庫;3. UES:負責收集日誌;4. UHost:安裝了Gitlab,負責代碼管理。 由於整個系統的核心開發人員只有一個,爲了節省開發成本,這裏的代碼開發全部在Master上進行,然後在Master節點上打tag進行集成和部署。數據庫則拆分成兩個實例和三個庫,一個實例爲最小配置,供開發用;另一個實例配了兩個庫,一個庫對應生產環境,一個庫對應性能測試環境。

口罩預約系統應用直接作爲 Deployment部署到了 UK8S裏,UK8S裏分配了三個namespace,分別爲preproduction、production和performance test。在 preproduction、production 兩個命名空間裏分別配置了LoadBalance類型的Service對外提供服務。而性能測試本身也是在集羣內進行,所以performance test 的namespace只配置了Cluster IP類型的的Service。

另外還直接部署了ELK組件來收集UK8S系統的日誌,這樣部署完成之後,就可以直接在console上看到所有的UK8S系統日誌。應用的日誌則和UK8S系統日誌分開,採用了單獨部署的filebeat和sidecar的方式來收集。整個系統部署下來,基本上“五臟俱全”,且只用了短短的三天時間完成。

CI/CD:提升開發運維效率

本次口罩預約系統,我們還基於Gitlab/Gitlab Runner搭建了一整套的CI/CD。與UK8S裏的環境相對應,最終流程爲單元測試=》commit=》push=》tag,然後簡單的在預發環境裏自測一下,如果通過就在Gitlab Runner 裏執行手工部署到生產環境的操作。

由於該系統的需求不固定,因此前端每改一個字都需要後端升級一個版本來進行修改。同時,爲了緊跟相關部門的決策變化,業務調整的頻率也很高。例如從用戶購買口罩的邏輯來設計,有些地方按戶來發放,就需要規範地址格式, 按地址唯一性來進行排重;而有些地方則以身份證作爲唯一性來發放。因此,這套系統需要具備隨時迭代發佈的能力,而CI/CD流程的採納設計正好解決了該問題。

最後,UCloud開發人員在三天時間裏,且不需要運維支持的情況下,總共在三套環境裏升級了50多個版本,持續部署了近百次,大大提升了開發運維效率。

公有云運營經驗,確保系統平穩運行

從系統上線前夜至預約結束,UCloud技術團隊全程提供技術支持服務,以確保該系統的穩定運行。具體措施包括:1. 系統運行數據全程監控,及時預警;2. 運營經驗積累,科學規劃容量;3. 公有云彈性擴容能力,實時無縫升級。

據瞭解,寧波市北侖區人口近70餘萬,網上預約開放前一晚,官方公衆號正式發佈預約通告。在2月7至9日早9:00,UCloud後臺監控數據顯示每天都有高達十餘萬人線上準時守候,等待進行口罩購買預約。且當天的1萬隻口罩在最快30秒內,就可全部被預約完畢。

經UCloud監控平臺顯示,該口罩預約系統高峯期時的流量超過了200Mbps(餘姚市則超過800 Mbps),系統面臨的業務壓力超過了小型互聯網公司的業務。UCloud公有云的海量帶寬和彈性擴容能力在口罩預約系統高峯期時也得到了較好的驗證。如下圖所示:

得益於UCloud公有云服務的快速響應能力、海量帶寬資源的彈性擴容能力以及完備的後臺監控運維能力,寧波市北侖區順利於2月7日至9日完成了第一批線上預約發放的3萬隻口罩。

總結

當下疫情的防控工作依然刻不容緩,各地政府、學校和企業爲了進一步避免人羣聚集的交叉感染風險,推動了在線城市管理、線上教育、遠程辦公等線上業務的大規模增長。UCloud將充分利用雲計算技術做好底層IT支撐,快速響應用戶的需求,保障疫情期間線上業務的快速構建和穩定運行。而技術團隊此次實戰,也證明了小團隊可以利用UK8S等公有云成熟組件,快速形成戰鬥力,獲得大收益。

發佈了65 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章