要想不踩SaaS那些坑,得先了解“SaaS架構”

華為雲開發者聯盟發表於2022-07-15
摘要:圍繞當下許多企業青睞的SaaS應用開發,華為雲開發者技術服務工程師程澤在DTT首期帶來主題為 《SaaS雲原生應用典型架構》 的DTT首期直播分享。

本文分享自華為雲社群《DTT直播首期精彩回顧:要想不踩SaaS那些坑,得先了解“SaaS架構”》,作者:華為雲社群精選。

DTT(DTSE Tech Talk)是華為雲開發者社群推出的技術公開課直播欄目,聚焦雲上前沿、熱門技術話題,帶來技術、產品、產業等全方位的深度解讀,開闊 IT 從業者視野,推動IT技術更廣泛的傳播、討論和變革。

圍繞當下許多企業青睞的SaaS應用開發,華為雲開發者技術服務工程師程澤在DTT首期帶來主題為 《SaaS雲原生應用典型架構》 的DTT首期直播分享,以下是精彩內容回顧。

企業數字化轉型,為何SaaS模式如此重要?

隨著全球進入後疫情時代,數字經濟重要性日益顯現。SaaS作為一種有效的軟體交付形式,可以讓企業IT團隊將工作的重心從部署和業務系統定製,轉移到管理業務系統所提供的服務上來。

SaaS服務沒有任何軟硬體維護費用,服務模式使用非常靈活,企業花費少量的費用便能享受優質服務,讓企業集中資金流進行核心業務探索與運營。SaaS是即下載即使用的服務模式,大大節省了系統構架成本。但SaaS開發過程中的各種問題,如人力成本、多租戶管理、高可用、安全性等,讓企業在SaaS化轉型時有所顧慮。

在長期的SaaS應用上雲技術支援實踐中,華為雲總結了企業在SaaS化轉型過程中遇到的很關鍵的問題:

  • 基礎設施選擇:在什麼基礎設施上部署SaaS系統,是選擇公有云還是自有資料中心方式?
  • 系統架構設計:SaaS系統的訪問效能、運維監控、系統彈性擴容、安全性以及合規性等如何設計?
  • 資料儲存架構設計:如何設計安全可靠,可靈活擴充套件的資料儲存架構?

不僅如此,租戶許可權管理、租戶間干擾以及多租計費策略等問題同樣困擾企業轉型。

一圖瞭解SaaS多租戶架構

其實,很多人對於一些SaaS技術問題還是知之甚少,例如企業在進行SaaS企業軟體選型時,仍不瞭解“多租戶”與“獨立架構”是什麼概念,二者之間有什麼區別。

用現實中的房子例子是很好解釋的。“獨立架構”如同一個別墅,裡面有屬於自己的餐廳、房間、廚房等設施,所有設施都是獨立配置、部署的;“多租戶”就如同住在公寓,每個人有一個屬於自己的房間,健身房、客廳等屬於公共區域,大家共享這些資源。

獨立部署架構在業務發展前期有比較有優勢,可根據客戶需求靈活配置資源量、獨立部署。但隨著企業增長,老的業務系統依舊存在,企業不得不面臨運維效率、成本等挑戰,這些挑戰最終會影響到企業業務的增長和創新。為解決這個問題,系統向SaaS演進似乎是必然的選擇。從SaaS應用本身來看:

與獨立部署不同,在SaaS系統中,有租戶概念,通常一個企業或者組織作為一個租戶(Tenant),租戶下會有多個使用者;租戶與租戶之間會共享一定資源,為保證租戶安全性,在租戶架構設計時,會做好邏輯或者物理隔離,邏輯隔離和物理隔離也可以同時存在,如SaaS混合部署模式。在建立租戶時,需要分配資料空間和配置租戶路由規則,租戶和租戶下的使用者可能有不同的許可權配置,根據路由規則獲取授權資訊。

租戶路由是SaaS應用的核心模組,當使用者發起請求時,租戶路由模組根據請求攜帶的租戶ID資訊,將請求路由到該使用者所屬租戶執行環境、資料空間等。在SaaS租戶隔離的邏輯下,租戶路由模組是保證租戶所屬使用者請求互不干擾的關鍵。華為雲技術團隊開發了租戶路由模組,並進行了開源,可前往gitee的saas-tenant-router-starter專案瞭解或者貢獻。

SaaS改造升級的方向通常是容器化的微服務架構,華為雲企業級雲容器引擎CCE可應用提供容器執行和編排環境,基於雲容器引擎可以快速實現叢集建立、應用部署和運維管理;在SaaS應用場景下,CCE叢集可以提供叢集、namespace以及pod層級的資源隔離;華為雲微服務引擎CSE為SaaS應用提供微服務應用註冊發現、配置下發、服務治理等能力,其中,配置下發能支援在租戶建立時,配合訊息匯流排,動態配置多租戶執行環境。

在雲上構建SaaS應用時,租戶間隔離從應用層、資料庫到基礎設施層(計算、儲存以及網路)都是應該關注的,在應用層我們通過租戶路由外掛實現租戶間隔離;資料庫層多租模式可支援資料庫例項、資料庫schema以及表欄位實現隔離;在計算資源層,租戶間隔離藉助雲容器引擎CCE的namespace和pod能力;在網路層面,可通過VPC、子網實現租戶間隔離,每個租戶應用可以放在一個VPC或者一個子網中,但是租戶數量會受到可建立的VPC和子網配額限制。

SaaS多租戶架構不僅包含SaaS基礎應用,還提供了配套的 SaaS運營與運維平臺。這也是相對於獨立部署架構的獨特優勢。從SaaS運營與運維角度來看:

  • 運營方面:
    • 在技術方面,SaaS場景的租戶管理面負責租戶建立,配置管理,SaaS租戶管理員可以在使用者購買SaaS服務後,配置租戶訪問域名、租戶管理員以及租戶許可權等資訊;
    • 計費模式有按照使用者數、活躍使用者、特性+服務等級、基礎版免費+增值特性付費等多種計費模式,設計優秀的計費模式能保證在租戶和產品功能特性持續增加的背景下,仍然能有不錯的收益;
    • 運營分析是SaaS在實現持續業務增長必不可少的內容,從技術維度看,涉及使用者資料採集、資料實時處理和分析、資料視覺化等內容,支援企業決策和管理。
  • 運維方面
    為SaaS系統建立可觀測運維是保證良好租戶、及時定位和解決使用者問題的基礎,包括指標監控、應用鏈路追蹤和日誌管理等;在SaaS應用系統下,在建立統一租戶運維設施基礎上,也需充分考慮不同租戶運維需求。
    • 在系統中提供不同層級的資源監控、告警是基礎的運維能力,華為雲提供了完備能力,如應用運維管理AOM、雲監控服務CloudEye等;
    • 租戶日誌管理採集可按照租戶維度進行,根據上層分析需求,再做資料的統一聚合;
    • 鏈路追蹤通常藉助APM能力實現,對各個服務呼叫的效能、健康狀態進行監控,及時做資源調整。

多種多租戶架構方式,肯定有符合你的那一款

多租戶架構方式,使得不同企業之間共享程式碼及基礎設施成為可能,從而提高了程式碼及底層基礎設施的效率,而通過這種資源使用的效率提升,更是降低了SaaS服務的運營成本。事實上,SaaS應用的成功很大程度上依賴於多租戶架構。

當然,企業在考慮搭建SaaS系統時,需要優先確定哪種租戶模式適合您的客戶和業務特點,不同租戶模式並不會影響您的業務功能,但對商業模式、技術架構、租戶隔離、租戶成本以及後續運維運營費用會產生影響。從租戶資源共享程度來看,多租戶模式可以按如圖所示,分為三類:獨享資源租戶模式、共享資源池租戶模式、混合租戶模式

獨享資源租戶模式

每個使用者單獨交付部署一套環境,例如,像具有“web層-應用層-資料層”多層應用系統,每個使用者得到一套獨立的web層、應用層以及資料層,每一層之間互不共享,實際上是一種物理隔離模式,開發實現較為容易,但隨著使用者數增多,維護成本會增加,每套系統實際產生的收益會減少。

共享資源池租戶模式

共享模式能提高資源利用效率,設計良好資源共享模式和商業策略將會為企業提升盈利能力;共享資源池模式下,每個使用者共享相同的資源,不同使用者之間採用邏輯隔離方式,為了避免租戶間互不影響,在租戶架構設計和開發上會有些複雜,但會帶來長期的收益。由於現在多采用分層架構進行開發,為了方便展示,我們將系統架構分為三層:web層、應用層以及資料層。針對每一層級,我們根據部署情況,可以分為如下三類:

  • 全共享模式

    web層、應用層以及資料層都採用共享資源池模式部署。對於使用者體驗環境,可以優先考慮全共享資源池模式,但並不等同於全共享模式只適合使用者體驗環境使用,租戶業務量穩定且對計算、記憶體以及資料庫IO等資源需求穩定的場景,全共享模式也是合適的。

  • 資料層共享模式

    web層和應用層每個租戶獨立部署,但共享資料層,例如資料層的關聯式資料庫-MySQL,可採用不同層級的邏輯隔離方式,如資料庫例項、資料庫database以及表級別隔離方式。對計算資源和記憶體資源消耗比較大的業務場景,如AI分析、大資料計算等,可以優先考慮資料層共享資源池模式,應用層可以進行物理隔離模式部署,每個租戶應用層可以獨享資源,互不干擾。

  • 租戶應用環境共享模式

    資料層不共享,例如每個租戶配置一個資料庫例項,web層和應用層採用共享方式部署,共享相同的租戶執行環境,如採用雲容器引擎CCE叢集,按業務模組部署,根據租戶需求彈性擴容node節點和容器pod。對資料庫IO要求比較高,應用層處理簡單業務邏輯的業務場景,如OA、ERP等,可以優先考慮應用層共享資源池模式,資料層進行物理隔離模式部署,每個租戶應用層可以獨享資源,互不干擾,如在華為雲上,可以採用不同的RDS例項進行隔離。

混合租戶模式

綜合獨享資源模式和共享資源池租戶模式特點,部分使用者採用共享資源池租戶模式,另一部分使用者採用獨享資源模式;在交付系統時,根據客戶對費用、資源隔離性和安全性要求,選擇對應交付模式。

一個良好設計、架構優雅的SaaS應用可以給應用提供商和客戶帶來雙贏。華為雲SaaS 服務架構幫助企業應用SaaS的過程中,真正獲得交付門檻低、配置要求低、技術難度低、操作難度低、使用成本低等服務價值。

“雲原生2.0”的理念下的SaaS雲原生應用架構

兩年前華為雲率先在業界釋出了“雲原生2.0”的理念,推動了企業雲化從“ON CLOUD”走向“IN CLOUD”,從“以資源為中心”轉為“以應用為中心”。 在華為夥伴暨開發者大會2022期間,華為雲宣佈雲原生2.0全景圖全面升級。

基於長期的技術支援實踐經驗,華為雲結合在產品和技術方面的沉澱,總結了雲上典型的SaaS雲原生應用架構

微服務化和容器化是應用現代化的基本特點。微服務包含兩個階段:微服務拆分和微服務開發。

  • 微服務拆分可以參考華為雲微服務應用開發相關實踐;微服務開發社群中提供了多種開發框架,如springcloud、servicecomb等,目前各大雲廠商也提供了相關微服務引擎,如華為雲CSE,與華為雲CSE微服務引擎對接,提供微服務註冊發現、服務治理以及配置管理等能力。開源地址:https://github.com/huaweicloud/spring-cloud-huawei。

容器化後的應用可以基於華為雲容器引擎CCE部署,華為雲CCE提供靈活的自動彈性伸縮、掛載多種儲存型別等能力,並且能輕鬆對接雲上應用運維能力。

在雲原生的SaaS化應用系統中,除解決微服務化和容器化問題,需要考慮搭建運維監控平臺,如日誌處理採用ELK方案,監控告警採用Pormetheus+Grafana方案,應用鏈路追蹤採用zipkin、skywalking等方案,但基於雲上的運維能力,可以更快速搭建監控運維平臺,如採用應用運維管理AOM實現運維的監控告警;雲日誌服務LTS實現日誌採集、分析以及轉儲;APM實現應用鏈路追蹤,從而構建“問題發現-問題追蹤-問題定位”立體監控運維體系

對於SaaS企業而言,讓平臺資料發揮價值,支援企業實現“拓客-留客-增長”,建立統一的資料分析平臺很重要。雲原生SaaS應用架構很關鍵的優勢在於能夠容易實現資料的聚合和流轉,通過整合SDK方式將日誌資料、定時任務等資料上報至LTS ,業務資料庫中資料可以通過DRS或者cannal開源元件抽取至kafka等訊息佇列中;華為雲物件儲存OBS提供結構化和非結構化資料儲存能力,並且儲存成本低,可以作為統一資料湖底座。基於統一資料湖底座和實時資料接入能力,構建SaaS雲原生資料分析運營平臺,同時,也支援機器學習接入。

在SaaS雲原生應用架構中,開發和部署的CICD流水線可以採用雲上devcloud平臺能力,也可以採用Jenkins搭建,對接華為雲VSS安全掃描能力和容器映象倉庫SWR,VSS能力實現web應用釋出前的安全掃描;SWR作為映象儲存倉庫,按照組織和版本等策略管理映象,在CCE中可以直接載入SWR映象,配置service、ingress等訪問策略,完整應用部署。

華為雲SaaS支援計劃,助力企業SaaS化轉型

“隨著企業數字化轉型的持續深耕,SaaS將會成為雲端計算為企業提供數字化服務的主要形式。當下,各行各業的SaaS滲透率在逐步增加,未來十年將是SaaS發展的黃金十年。” 華為雲CEO張平安在華為夥伴暨開發者大會2022上表示。

為了更好的推動SaaS生態發展,在面向SaaS企業方面,華為雲推出SaaS支援計劃,從技術、資源、商機等維度為企業提供全生命週期的支援,助力企業創新和商業變現

  • SaaS應用開發技術支援套件,包括SaaS應用開發指南 、SaaS開發示例程式碼、SaaS開發外掛以及配套的培訓課程等。
  • 雲資源支援,加入華為雲SaaS星光計劃,申請華為雲資源支援。
  • 商業渠道支援,大量夥伴的SaaS應用上架至華為雲應用商店,實現商業變現。
  • 線上問題諮詢,可以進行解決方案、雲上開發bug等問題諮詢,提供SLA機制保證。

為了更好的推動雲原生SaaS應用開發,華為雲開發者團隊基於SaaS專案技術支援實踐,將SaaS化經驗沉澱到SaaS應用開發指導中。內容包括SaaS典型部署架構、多租戶模式、多租設計、資料儲存多租設計、K8S叢集環境下多租設計、雲上多租網路設計、分析與運營平臺、計費策略設計等。可配合SaaS-housekeeper專案使用。如果您在雲原生應用開發或者技術選型等過程中有任何技術問題,都可以給華為雲開發者技術團隊提issues,我們將及時響應您的需求。也歡迎來自企業、個人開發者參與內容貢獻。

相關連結地址:

  1. 應用開發文件:https://support.developer.huaweicloud.com/doc/zh-cn_topic_0000001321416345-0000001321416345
  2. 參考示例程式碼:https://gitee.com/HuaweiCloudDeveloper
  3. 問題諮詢和專家服務預約(需註冊華為雲賬號):https://support.developer.huaweicloud.com/feedback/?ticket=ST-5385866-mPu9vjwIeAGISrz1rXBAdwt7-sso

直播回看:[SaaS雲原生應用典型架構]

 

點選關注,第一時間瞭解華為雲新鮮技術~

相關文章