基於PaaS和SaaS研發的商業雲平台實戰
背景介紹
SaaS、PaaS、IaaS等雲服務模式已經被大家普遍認可,在研發過程中借力一些PaaS和SaaS平台,能夠提升產品的研發速度和功能穩定程度。本文將通過真實的商業平台案例-MaxWon研發實戰,分享一下我們在項目研發過程使用SaaS和PaaS服務的技術要點和心得。
MaxLeap是一個為企業提供移動業務研發與運營的一站式雲服務平台,提供雲數據庫、雲容器、雲代碼等PaaS服務,雲支付、雲即時通信、雲社交、雲分析、雲參數、推送營銷等SaaS服務。
案例介紹
先介紹實踐的案例,MaxWon一站式移動營銷平台,案例有如下特點。
快速搭建移動營銷平台
能夠提供20多個營銷模塊靈活組合,個性化配置風格和首屏,一鍵生成App + 微信商城 + PC網站。
多平台多渠道營銷
能夠讓營銷人員同時在App,微信商城,手機網站,PC網站平台展開營銷,提升企業的業績。
一站式管理,最小運營成本
有統一后台,同時管理多端營銷,使用最小人員配置,獲得最大運營效率。
數據驅動運營
提供多維度運營分析,快速反饋運營效果,數據驅動高效運營。
精准營銷,高效轉化
大數據分析全面洞悉客戶消費行為,精准廣告投放,提升銷售轉化。
案例模型
整個案例項目由“三端四平台”組成。“三端”指創作端、管理端和服務端。創作端負責生成各個平台應用,包括Android、iOS、網站、微官網。管理端用於管理應用、用戶、權限,管理后台數據和重要的信息設置等。服務端提供移動應用和后台管理所需的所有的API接口。“四平台“指iOS\Android、微信和移動官網。商戶通過創作端生成各端應用和網站,營銷和管理人員通過管理端運營和管理后台數據,形成了制作、運營、營銷的閉環。

接下來我們一起梳理下功能需求。創作端需要包含模板管理、布局管理、配置管理、構建應用等功能。管理端需要包含用戶組織、權限、賬戶、數據、設置管理等功能。
組件服務部分,需要提供三大類別的服務,覆蓋電商、設計、營銷領域的二十多個功能組件。

接着梳理下架構上的需求,着重從數據和服務兩個角度來看。數據對於商戶至關重要,也是用戶最關注的點,因為是多租戶系統,商戶的數據首先要做到隔離,並且當商戶規模不斷擴大時能夠支持不斷的擴容,對於個別商戶有數據遷出需求的也需要滿足。服務是另外一個要點,如何在確保商戶間服務不相互影響的前提下,合理控制資源,降低用戶成本,是我們面臨的挑戰。服務需同時支持多租戶共享模式、單租戶獨享模式、私有部署。
其它方面也有些要求,時間上,需要3個月左右上線運行,上線后能夠快速迭代新功能。安全上,要支持數據容災、傳輸加密、防止一些基層的網絡攻擊。
方案介紹
了解完需求后,就是方案選型階段。實現這樣的SaaS系統面臨兩種選擇,一種方案是所有功能獨立研發,保障整個系統的可控和靈活性。另一種方案是借力PaaS或者SaaS服務,提高研發速度,利用SaaS/PaaS的自適應、安全、專業等優勢,降低研發難度和成本。

確定實施的最終方案如圖所示,獨立研發部分包括,創作端、管理端和服務端的多數電商類服務。確保核心業務系統的靈活性和可控程度,這部分功能的特點是業務具體、需求繁瑣、定制性比較強。通過調用后發現,沒有成熟的方案能直接滿足項目需求,
並且這部分需求也會根據市場反應做出適當調整,因此保證研發的靈活和可控度非常重要。
使用的SaaS服務包括,即時通訊、推送、支付、客服系統、統計分析和社交/圈子等,這部分功能的特點是需求廣泛存在,也有公認統一比較成熟的解決方案,單獨實現卻要花費不小精力,並且通用和擴展性很難做到非常成熟的程度,通過集成第三方SDK和API接口能夠滿足研發需求。
使用的PaaS服務包括,MySQL雲數據庫、MongoDB雲數據庫,使用統一的數據訪問層,研發人員可以無需考慮數據庫的底層架構、可用性、擴展等問題,完全透明,將精力專注在項目研發即可。

整體架構如圖,研發重點為藍色部分,MaxWon的API層和業務邏輯層。API層整合MaxWon的服務和MaxLeap的SaaS服務,實現具體接口功能,提供給各個終端,主要是各種接口業務實現,工作量大、業務需求多。
MaxWon的服務層,整合MaxLeap PaaS和SaaS的功能,並實現具體的業務需求。基礎存儲、緩存、全文檢索、大數據計算由MaxLeap雲的PaaS和SaaS服務提供。從架構圖中可以發現,PaaS服務標准化了MongoDB、MySQL、緩存、隊列等復雜的存儲系統,SaaS服務封裝了大數據計算,Hadoop、Spark等復雜的計算系統。整個項目在實現的過程中,專注於業務模塊的研發即可,節省了去研發、研究這些基礎組件的時間和資源。

關鍵設計
為什么存儲能夠做到隔離、擴展
先看架構圖,我們的數據庫服務器主要采用兩種。事物依賴或者強一致性要求的數據,用MySQL來存儲。用戶的數據庫訪問請求經過負載均衡和代理,到達目標數據庫服務器和對應DB。
MySQL和MongoDB均是類似,差別在於MySQL和MongoDB的集群組織方式差別比較大。MySQL采用主備讀寫分離方式,我們通過MHA實現集群的高可用和Master節點的監控、故障自動轉移,大型應用采用代理加數據分片。
MongoDB采用復制集方式,一個集群的最小組成是一個Master節點、一個Slave節點和一個Arbiter節點,通常情況下Master承擔讀寫任務,通過oplog保證數據的最終一致性,Slave和Arbiter保證了系統的高可用和故障自動轉移。
大型應用采用Mongos、MongoConfig和數據分片方案。
設計上遵循三個設計原則:第一個原則,一應用一庫;第二個原則,一庫一賬戶;第三個原則用戶需求分級。通過分庫將數據在物理上隔離,且方便擴展和遷移。
通過一庫一賬戶原則,區分數據的訪問權限。通過用戶需求分級,規模比較小的用戶可以共享數據庫服務器資源,規模慢慢增大時,可以獨享資源,繼續增大是可以獨享更多的服務器資源。

PaaS服務對數據接入進行了抽象。商戶規模小的時候,使用共享的數據庫資源,通過代理層控制數據請求的服務器,規模慢慢擴大后,使用獨立的數據資源。我們通過自研的數據遷移工具,實現數據的平滑遷移。
MySQL實現的代理叫Circe,完全兼容MySQL5.7版本協議。MongoDB代理叫Pandora,兼容MongoDB3.0以上協議。在數據代理層實現了數據訪問路由,鑒權,Metrics采集,流控能力,能夠支持共享、獨享、定制多種部署模式支持遷出。
和主流PaaS的雲數據庫對比
以AWS的RDS為例,資源申請以RDS實例數為單位,每個RDS是由兩個配置相同的EC2實例以及運行在EC2上的主備數據庫組成,在成本上也是按照兩台EC2響應配置的主機來計算。如果做到應用間數據和權限的隔離,並且對應用代碼透明、無侵入,
需要每個應用單獨申請一台RDS。這樣做顯然能達到隔離的效果,但是成本也有點高。

相比之下,MaxLeap的雲數據源,以應用為單位,在物理和訪問權限上進行隔離,應用A和B規模較小,可以使用公共服務器,但是數據和訪問權限獨立。應用C規模一般,使用獨立的數據服務器資源。應用X規模很大,可以根據需求定制集群方案。

因此,雲數據源在成本和靈活性上有很大優勢,小規模時期,使用共享資源,降低成本,中、大規模時變更為獨享,甚至使用集群方案。
為什么服務能夠做到隔離和擴展
架構圖中,用戶請求經過負載均衡器和網關,到達目標服務的容器,同一個服務為由多個無狀態的容器組成,達到負載均衡和水平擴容的目的,通過Docker容器技術處理服務間的資源隔離,Docker的資源隔離使用了Linux Kernel中的Namespaces功能。
Namespaces主要是通過Linux的clone內核調用來使用,根據傳入的不同參數組合來啟用對應的Namespace隔離。通過cgroup控制不同Container之間搶奪CPU、IO、磁盤等資源。
可擴展性通過網關和容器技術同時保障,小規模的應用共享服務資源,規模擴大后可以啟動獨立的服務,並可以根據場景決定需要的資源數量。網關會根據用戶的設定,動態路由請求到對應容器實例。
整個Docker容器環境,基於Mesos構建,Mesos是Apache基金會下的集群資源管理工具,它通過抽象主機的 CPU、內存、存儲等計算資源來搭建一套高效、容錯、彈性的分布式系統。Mesos生態本身支持水平無線擴展,通過Marathon對容器的資源調度進行管理。
Marathon是Mesos生態圈里的一個輕量級、擴展性很強的調度long-running service的調度框架。支持RESTful api來創建和管理app,自動為app做容錯遷移,凡是能用shell起的任務,理論上都可以通過Marathon在Mesos上簡單地啟動和管理起來。
從底向上,IaaS層、Mesos層、Docker層,每層都可以水平擴展。

對架構進行總結和梳理。整個服務基於Docker容器構建,達到資源隔離、快速擴展的特性,Docker容器基於Marathon和Mesos構建,管理、調度、監控、Failover等方案成熟,支持水平擴展。網關支持服務的路由。整個架構支持多租戶共享服務和獨享模式。
安全設計也非常重要。網絡通過https對請求進行加密,針對DDOS對整個網絡基礎架構進行了部署,VPC內部對防火牆進行規划。服務中對不同級別的請求進行分級和鑒權操作,服務針對不同領域進行了拆分,在設計和部署上相互獨立。對敏感數據加密、數據訪問支持ACL、應用分庫物理隔離、每個度權限獨立,訪問隔離。業務數據進行容災備份。
總結
基於MaxLeap一站式研發和雲平台之上,構建MaxWon雲平台,在短短的3個月,產品第一個版本上線,穩定運行至今。有效解決掉了隔離和擴展問題,降低運維團隊的壓力。MaxWon現在支持20多個營銷模塊的自由組合,更多模塊快速研發中,支持電商、社交、教育、餐飲等多個行業,支持上千家商戶的穩定運行
鏈接:https://www.jianshu.com/p/d4a4acd01e86