六位一體Serverless化應用,幫你擺脫伺服器的煩惱

華為開發者論壇發表於2023-04-03

隨著網際網路技術的飛速發展,越來越多的應用橫空出世,是以不可避免帶來了大量的伺服器需求。大部分的開發者都選擇購買或者租用伺服器,然而這樣也帶來了諸多的煩惱。

1.硬體成本高昂

購買伺服器費用昂貴,除了基礎的購買費用外,伺服器對機房也有苛刻的要求,溫度、溼度、防震等等的高要求都需要開發者投入大量的成本。租用伺服器雖然不需要考慮伺服器環境的問題,但一個效能強大的伺服器也需要花費一大筆租賃費用。這些費用也許對一些大公司來說並不算什麼,可對於一個剛剛起步的小專案卻是無力承擔的。

2.硬體資源浪費

為了能夠應對應用可能遇到的流量高峰,開發者往往需要租用大量能夠支撐流量上限的伺服器,因此租用成本飆升。同時,在流量平穩時會存在伺服器資源閒置的情況,亦造成不小的浪費。

3.維護成本可觀

除了硬體上的花費,伺服器的維護也需要人力支援。運維人員需要7*24小時的監控伺服器狀態,來應對可能出現的伺服器當機情況。

4.無法開箱即用

      伺服器購買或者租用回來後並不能立刻投入工作,還需要開發者對伺服器進行除錯、部署、測試等,才能讓這些伺服器最終投入使用。

伺服器帶來的煩惱還有很多很多,面對這些弊端,業界Serverless概念正在迅速興起。其無需開發者購買或者租用伺服器,Serverless服務商已經將伺服器所需要的資源、部署、維護等統統完成了,開發者只需要接入Serverless服務商封裝好的不同服務,即可基本滿足他們對伺服器的功能需求

我們的男主HUAWEI AppGallery Connect(以下簡稱AGC)提供的Serverless服務就將伺服器的開發分解成了幾個不同的元件:有構建使用者鑑權系統的認證服務、有承載伺服器邏輯的雲函式、有存放資料的雲資料庫、有存放資源的雲端儲存、有託管前端頁面的雲託管,還有解決高併發並提升專案響應速度的雲快取等等。

cke_85635.png

開發者只需要聚焦自身的業務邏輯,將他們分解配置到對應的服務中就可以正式上線執行,免除了諸如伺服器的購買或租用、維護的人力、環境的部署等與業務無關的繁瑣事務。

瑞地科技健康管理平臺在開發中即接入了Serverless服務,降本效果顯著。

其整個平臺分為健康管理小程式、管理中心和諮詢師管理,一個移動端、兩個平臺,共享一套資料庫內的資料。基於業務本身,他們的痛點很明顯: 至少需要兩個後臺開發團隊同步開發才能保證開發週期,② 測試環境、演示環境、正式環境,多環境部署及最佳化後再部署,細節多容易出錯。

接入AGC Serverless服務後,高效解決了上述困境,其後端開發在保障專案進度的同時人員縮減一半,人力成本降低50%,且Serverless免運維的特性亦使得運維成本降低100%

如瑞地科技健康管理平臺這般,Serverless在專案的WEB管理系統中要如何應用?下面就詳細給大家分享下。

WEB管理系統,Serverless化的邏輯架構示意圖如下。

cke_91216.png

WEB前端

專案管理系統的前端是WEB頁面,使用者透過網址訪問。作為一個管理系統,使用者首先接觸到的應該就是登入功能了。AGC提供的認證服務提供了快速構建登入系統的能力。通常使用者習慣的登入方式如手機號碼、郵箱或公司內部的帳號,認證服務都可以滿足。開發者無需與手機運營商對接或者自行搭建郵箱伺服器,只需整合認證服務的Web SDK就可以直接接入整套的手機號碼和郵箱地址的登入,包括登入/註冊/傳送驗證碼等功能。所有介面都是免費呼叫,唯一的收費項就是傳送驗證碼所產生的簡訊費用。此外,認證服務還為後續的其它Serverless服務提供使用者鑑權能力。

 

後端微服務

使用者帳號系統搭建完成後,我們就來到了專案的後端邏輯部分。透過邏輯架構示意圖我們可以看出這個後端系統中最核心的部分就是雲函式和它所承載的後端邏輯。其後端的微服務是採用Spring Boot框架開發,我們可以選擇透過HTTP請求呼叫的自定義執行時函式方式來進行雲函式改造。Spring Boot框架的微服務邏輯無需太大改造,只需要在專案中建立一個對外暴露的invoke介面,外部在呼叫函式時透過這個invoke介面做統一邏輯分發即可。

invoke介面的程式碼樣例:

@RequestMapping(path = "/invoke", method = RequestMethod.POST)
public Object postSimple(HttpServletRequest req, @RequestBody JSONObject body)
六位一體Serverless化應用,幫你擺脫伺服器的煩惱

      介面新增完成後,我們就可以將微服務打包成jar包,並按照如下的格式準備函式包並上傳部署即可。

function.zip
|---bootstrap //可執行檔案,啟動Server
|---WiseFunctionCustomDemo.jar
|---其他相關程式碼和依賴等
六位一體Serverless化應用,幫你擺脫伺服器的煩惱

       其中bootstrap檔案示例如下

​​​​​​​#!/bin/bash
java -jar WiseFunctionCustomDemo.jar
六位一體Serverless化應用,幫你擺脫伺服器的煩惱

      函式準備好後,我們就可以透過建立函式時生成的HTTP請求地址來觸發函式。

後端系統除了函式承載的邏輯外,還需要存放資料的資料庫、存放檔案的儲存系統、支撐函式高併發和快速響應等效能指標的快取。在這,雲資料庫,雲端儲存和雲快取可以為你一一實現。

      所有的資料庫和儲存的操作都可以由雲函式統一管理,只需要接入對應服務的Server SDK,即可進行資料庫的增刪改查以及檔案的儲存下載分發。雲快取服務也提供了對應的SDK進行管理,由於雲快取服務是基於Redis打造,故對於熟悉Redis的開發者可以極速上手。

 

部署上線

前端後端都愉快的打造完成,最後一步就是部署上線了。為了貫徹0伺服器的宗旨,整個管理系統網頁的部署可以透過雲託管服務來進行。開發者前端的軟體包直接上傳託管在雲託管中,並選擇使用自己透過國家備案的域名來進行訪問,這樣不需要任何的伺服器便能讓外部使用者直接訪問整個系統。

​​​​​​​

雲函式、雲資料庫、雲端儲存、雲快取、雲託管、認證服務,AGC提供的這些服務在專案中六位一體的實現了WEB管理系統Serverless化,就此將伺服器的煩惱統統甩到“雲”後。

另外,目前雲函式、雲資料庫、雲端儲存、認證服務已覆蓋鴻蒙應用/鴻蒙元服務的開發,全面助力鴻蒙開發者。

​欲瞭解更多更全技術文章,歡迎訪問https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh

相關文章