PaaS(Platform as a Service)是指云計算領域的平臺即服務。
根據(jù)Gartner,截至2019年整個PaaS市場蓬勃發(fā)展,已經(jīng)有360多家廠商,在21個品類下提供550多種云平臺服務。Gartner將PaaS平臺分為兩類:一類是應用部署和運行平臺APaaS(applicationplatform as a service),另一類是集成平臺IPaaS(integrationas a service)。
海比研究則將PaaS分為六大類,一是應用開發(fā)、部署和運行平臺APaaS;二是集成平臺IPaaS;三是IaaS延伸性PaaS基礎服務平臺IaaS ;四是物聯(lián)網(wǎng)服務平臺IoTPaaS;五是人工智能服務平臺AIPaaS;六是其它類PaaS。
按筆者的理解,既然PaaS是為SaaS服務的底層平臺,PaaS的類別應該以為SaaS提供不同的服務來劃分。筆者把PaaS分為三大類:第一類,為SaaS提供全套云端的開發(fā)、部署、運行工具,這一類叫APaaS(application platform as a service)。第二類,為SaaS提供運行、維護和營運環(huán)境,這一類叫IPaaS(integration platform as a service)。第三類,為SaaS提供一些特殊功能接口服務,這一類叫FPaaS(function platform as a service)。
1、APaaS
早期的SaaS開發(fā)都使用很傳統(tǒng)方式,一般分為以下幾步:
第一步:選擇系統(tǒng)架構及技術框架。根據(jù)項目的規(guī)模以及團隊的能力選用一種系統(tǒng)架構,例如:單體架構、分層架構、總線架構、微服務架構等。再根據(jù)系統(tǒng)架構選用一些流行框架,比較流行的如:JAVA語言框架spring boot、spring cloud;PHP語言框架ThinkPHP、YII、CodeIgniter;NODEJS語言框架express等。也有幾種框架同時混合使用的案例。
第二步:選擇編程語言及開發(fā)工具。開發(fā)一款SaaS,一般根據(jù)模塊的功能和層級可能選用不同的語言開發(fā),底層模塊更重視運行效率,一般選用例如:C、C 、RUST、GOLANG等,業(yè)務層模塊更重視開發(fā)效率,一般選用例如:JAVA、PHP、NODEJS、PYTHON等。具體選哪種語言還與選擇的框架,以及團隊以往的偏好有關系。
使用的也是傳統(tǒng)流行的開發(fā)工具,根據(jù)使用的編程語言不同稍有差異,最流行的開發(fā)工具有:Eclipse IDE、MyEclipse、Intellij IDEA、NetBeans等。
第三步:選擇中間件以及開源模塊。不同的系統(tǒng)架構,選擇中間件也大不一樣。中間件是整個技術架構中最復雜的部分,包含以下幾種類型:關系型數(shù)據(jù)庫、持久層框架、緩存數(shù)據(jù)庫、非關系型數(shù)據(jù)庫、搜索、反向代理、消息中間件、監(jiān)控、日志收集、分布式、配置中心、容器化、容器編排、鏈路跟蹤。
中間件使用最多的是微服務架構,最多可超過30到40個中間件。組織、使用、部署、維護這些中間件是個非常大的工作量,特別是業(yè)務升級后如何保證中間件的同步升級存在很大不確定性。
SaaS應用傳統(tǒng)開發(fā)模式的復雜性,促使互聯(lián)網(wǎng)公司推出第一代APaaS,這一類APaaS是仍然采用傳統(tǒng)計算機編程語言進行開發(fā)、部署和運行,并提供更集成化的在線開發(fā)工具,以及大量中間件的調(diào)用接口,開發(fā)效率得到了一定的提升。典型代表有:微軟的Azure App Service、亞馬遜的Amazon Web Service、阿里的云效、騰訊應用開放平臺、華為軟件開發(fā)平臺(DevCloud)等。
近兩年,第二代APaaS(低代碼開發(fā)平臺)開始出現(xiàn),這類開發(fā)平臺通常采用表單、流程或模型加少量代碼就可以應用開發(fā),替代了原先代碼式編程語言的模式,開發(fā)效率比第一代有明顯提升。這類平臺由于采用技術方式差異很大,面向的使用人群,以及使用范圍也有很大差異。根據(jù)采用技術的差異筆者把低代碼開發(fā)平臺再細分為三大類。
第一類是純表格和流程驅(qū)動,無需編寫任何代碼的無代碼模式。這類APaaS通過建立多張表單,使用流程串聯(lián),定義報表輸出方式,構建表單類輕應用。該類模式的技術壁壘不高,主要支持開發(fā)表單類應用,場景有一定局限性。更適合簡單短期項目,不適合長期的循環(huán)迭代產(chǎn)品的開發(fā),尤其產(chǎn)品要面對多樣性需求,必須具備高配置屬性的時候。比如表格展示,同一個流程不同職位看到的表格都是一樣,涉及到敏感信息不能區(qū)別展示,無法實現(xiàn)千人千面。這類平臺有:輕流、云表、簡道云、搭搭云、阿里的宜搭、宜創(chuàng)科技等。
第二類是貧血模型驅(qū)動的低代碼模式。底層技術涉及云原生、元數(shù)據(jù)、多租戶等。該類模式的技術壁壘較高,顆粒度更細,復雜度、靈活度更高,能夠支持廣泛場景的復雜應用開發(fā),具備服務大客戶和中小客戶的能力。這類模式在面對復雜場景時,仍然需要編寫邏輯代碼。特別是在面向高并發(fā)應用場景,需要投入大量的后端軟件開發(fā)。這類平臺有:OutSystems、Mendix、奧哲網(wǎng)絡(氚云)、ClickPaaS、炎黃盈動、數(shù)式科技、黑帕云等。
第三類是領域驅(qū)動的圖形碼模式。這類平臺完全由模型驅(qū)動,可不用編寫任何代碼實現(xiàn)各種復雜場景的應用開發(fā)。無論前端組件還是后端業(yè)務邏輯都能細粒度搭建,實現(xiàn)高度復雜、高度靈活的應用場景。這類平臺的后端部分屬于領域驅(qū)動的設計模式,其核心概念:域、子域、領域?qū)嶓w、值對象、領域服務、領域事件等是天然的圖形化解決復雜問題的表達模式,面對任何復雜應用場景都能支撐APaaS的可視化搭建,并能可視化集成各種業(yè)務應用,適用任何高并發(fā)的應用場景。這類平臺有:瓴碼APaaS。
2、IPaaS
IPaaS是SaaS運行的底座,就像Android是APP的底座一樣,在云計算領域扮演非常重要的角色。
IPaaS可運行在一個跨區(qū)域的服務器大集群上,調(diào)度千百萬臺電腦就像一臺巨型電腦,提供給不同企業(yè)的千百萬個SaaS在其上運行。各企業(yè)只需要在IPaaS上注冊一個賬號,即可通過APaaS在IPaaS上安裝各種SaaS應用,例如:B端應用ERP、CRM、OA、MES等等,以及C端應用電子商城、會員管理、新聞論壇等等。
IPaaS是云計算中技術含量最高的部分,負責解決以下技術的基礎架構:
1、 資源編排和調(diào)度。
主要負責給各企業(yè)以及SaaS應用分配云計算資源,包括計算資源、內(nèi)存資源、存儲資源、網(wǎng)絡資源等。
首先,在SaaS部署時,通過APaaS的部署工具為SaaS指定的配置,IPaaS負責提供對應資源,并激活該SaaS應用。
其次,在SaaS運行過程中,根據(jù)訪問情況動態(tài)調(diào)整資源的分配。避免資源溢出,及時釋放已閑置資源。
再有,SaaS可以根據(jù)需要實現(xiàn)資源遷移、擴充或者縮小等操作。
最后,當SaaS卸載時,把云計算資源及時回收。
傳統(tǒng)資源調(diào)度組件有:K8S、Docker、mesos、yarn、swarm
2、 分布式實時流計算。
云端計算被觸發(fā)時,可能涉及多個微服務之間串行或并行的互相調(diào)用,形成實時的流計算。流計算的最大特點是必須快速響應;必須有序執(zhí)行;數(shù)據(jù)必須保持原子性,該次計算如果失敗則關聯(lián)微服務的數(shù)據(jù)必須全部還原;
傳統(tǒng)流計算組件有:MapReduce、Spark、Storm、Flink、
3、 分布式業(yè)務流管理(BPM)。
業(yè)務流管理是企業(yè)應用軟件不可缺少的重要組成部分。業(yè)務流程是通過多個職位或角色的有序操作,以完成某項獨立的業(yè)務為目標。BPM負責啟動業(yè)務流,向每個角色展示相關信息并記錄和處理該角色輸入的的數(shù)據(jù),并根據(jù)業(yè)務順序推動流程的執(zhí)行,流程結束后及時歸檔流程數(shù)據(jù)。
完整的BPM一般具備以下特點:1、不同角色可設定不同的界面;2、根據(jù)業(yè)務需求可設定變量、訪問數(shù)據(jù)庫并嵌入任意邏輯計算,從而實現(xiàn)業(yè)務流的分叉;3、業(yè)務流可并行執(zhí)行,且可匯合;4、業(yè)務流可支持循環(huán)執(zhí)行的需要;5、業(yè)務流可回滾或撤回到指定節(jié)點,且被回滾的節(jié)點數(shù)據(jù)必須自動恢復到之前狀態(tài);6、業(yè)務流可撤銷和歸檔。
傳統(tǒng)開源BPM組件有:Activiti
4、 分布式數(shù)據(jù)存儲、檢索和傳輸。
云計算中,數(shù)據(jù)類型有結構化數(shù)據(jù)、非結構化數(shù)據(jù)等。負責存儲結構化數(shù)據(jù)的叫關系型數(shù)據(jù)庫,例如:mySQL、Oracle、SQL server等。存儲非結構化數(shù)據(jù)的叫NOSQL數(shù)據(jù)庫,例如:Redis、Mongodb等。非結構化數(shù)據(jù)搜索一般使用elesticsearch。
為了簡化數(shù)據(jù)庫的訪問,會使用一下持久化框架,例如:mybatis、Hibernate等。
不同微服務之間需要數(shù)據(jù)交換,涉及到數(shù)據(jù)庫之間的數(shù)據(jù)傳輸操作。大部分貧血型IPaaS平臺未能提供相應組件,一般是由工程師自行編碼完成?;陬I域驅(qū)動的IPaaS平臺,在實現(xiàn)域、子域、兄弟域之間的數(shù)據(jù)交換時,都會定義相關接口函數(shù),保證域與域之間的數(shù)據(jù)有序傳輸和數(shù)據(jù)版本更新操作,例如:瓴碼PaaS系統(tǒng)。
5、 異地多活的備災機制。
對于高可用的IPaaS系統(tǒng),必須解決部分服務器故障的場景下,保證系統(tǒng)能夠繼續(xù)提供服務。在一些極端場景下,有可能所有服務器都出現(xiàn)故障。即使有其他地區(qū)的備份,把備份業(yè)務系統(tǒng)全部恢復到能夠正常提供業(yè)務,花費的時間也比較長,可能是半小時,也可能是12小時。如果業(yè)務期望達到即使在此類災難性故障的情況下,業(yè)務也不受影響,或者在幾分鐘內(nèi)就能夠很快恢復,那么就需要設計異地多活架構。
異地多活架構的關鍵點就是異地、多活,就是指不同地理位置上的系統(tǒng)都能夠同時提供業(yè)務服務,當一個地區(qū)出現(xiàn)災難性故障,系統(tǒng)運行不會受到任何影響。
部分IPaaS系統(tǒng)提供了存儲架構的異地多活服務,這種IPaaS在一個地區(qū)出現(xiàn)災難故障時,只能保證數(shù)據(jù)不會丟失。正在運行的業(yè)務計算會立即報錯,出現(xiàn)一定時間的服務中斷,直到運算系統(tǒng)切換到其它地區(qū)恢復正常。最完善的IPaaS應該提供計算和存儲都能實現(xiàn)異地多活?;陬I域驅(qū)動的IPaaS架構,由于計算和存儲集成在一個領域內(nèi)作為一個整體,是領域?qū)拥漠惖囟嗷罴軜?,當一個地區(qū)的領域?qū)嶓w故障,其備份領域?qū)嶓w仍然無縫運行,使用者無任何感知。瓴碼PaaS是這類IPaaS的典型代表。
6、 認證和鑒權。
微服務架構下,一個應用會被拆分成若干個微應用,每個微應用都需要對訪問進行鑒權,每個微應用都需要明確當前訪問用戶以及其權限。尤其當訪問來源不只是瀏覽器,還包括其他服務的調(diào)用時,要考慮外部應用接入的場景、用戶 – 服務的鑒權、服務 – 服務的鑒權等多種鑒權場景。
認證和鑒權組件有:JWT、OAuth2.0等
7、 監(jiān)控和日志記錄。
對于IPaaS系統(tǒng),各SaaS應用和系統(tǒng)運維是重中之重。而運維過程中,監(jiān)控工作更是占據(jù)重要位置。運維的目的之一是為了保證系統(tǒng)的平穩(wěn)運行,進而保障公司業(yè)務能持續(xù)對外服務,為了達到這一目的,我們需要對系統(tǒng)的狀態(tài)進行持續(xù)地觀測,以期望一有風吹草動就能發(fā)現(xiàn)并作出應對,監(jiān)控作為一種手段,就是以此為生。
硬件、網(wǎng)絡以及系統(tǒng)層面的監(jiān)控,現(xiàn)有的一些監(jiān)控系統(tǒng)和方案已經(jīng)可以很好地提供支持,比如開源的 Zabbix 系統(tǒng)或者以報警為強項的 Nagios 系統(tǒng)。
微服務監(jiān)控組件比較常用的有:sentry、prometheus等。
微服務在多個主機上運行。 為了滿足單個業(yè)務需求,我們可能需要與在不同計算機上運行的多個服務進行對話。 因此,微服務生成的日志消息分布在多個主機上。如果對任何問題進行故障排除,沒有統(tǒng)一的日志的支持,將一無所知。因此如果將跨主機生成的所有日志發(fā)送到外部集中位置。 從那里可以輕松地從一個地方獲取日志信息。
常用的日志管理組件有:elk、logback等
8、 遠程調(diào)用管理。
IPaaS系統(tǒng)中,微服務之間有大量的互相調(diào)用操作,這種調(diào)用可能是跨線程,也可能跨服務器。需要一種可靠、高效的通訊機制,保證這種調(diào)用的成功執(zhí)行。微服務之間的調(diào)用分為兩種類型:一種是需要返回結果參數(shù)的同步調(diào)用;另一種是不需要返回結果參數(shù)的異步調(diào)用。
同步調(diào)用一般使用RPC框架實現(xiàn),常用組件有:Dubbo、Motan、Tars、Spring Cloud、gRPC、Thrift等。
異步調(diào)用一般使用消息中間件,常用組件有:ActiveMQ、RabbitMQ、Kafka、RocketMQ等
9、 分布式數(shù)據(jù)一致性控制。
在IPaaS這類大型分布式系統(tǒng)中,數(shù)據(jù)不能存在單個節(jié)點(主機)上,否則可能出現(xiàn)單點故障,必須多個節(jié)點(主機)需要同時保證具有相同的數(shù)據(jù)。一致性算法就是為了解決多個節(jié)點數(shù)據(jù)同步保持一致性的問題。
常用組件有:Zookeeper、etcd、Chubby等。
10、 負載均衡。
負載均衡,是在IPaaS系統(tǒng)中,用來在多個具備相同功能的微服務中分配負載,以達到最優(yōu)化資源使用、最大化吞吐率、最小化響應時間、同時避免過載的目的。
Nginx/LVS/HAProxy是目前使用最廣泛的三種負載均衡軟件。
Gartner把提供IPaaS某一局部服務的平臺也作了不同的命名,提供數(shù)據(jù)庫平臺開發(fā)環(huán)境的定義為DBPaaS,提供業(yè)務流程管理開發(fā)環(huán)境的定義為BMPPaaS,提供函數(shù)服務的定義為FaaS等等,這些都可以歸并為IPaaS的一個分支。
能夠提供IPaaS全部技術棧的公司極少,像阿里云這類巨頭也只能提供局部的組件,而且大部分組件只是把開源組件稍作改造發(fā)布推廣。
根據(jù)技術架構的不同,可以把IPaaS分成兩大陣營:
一類是面向數(shù)據(jù)庫的貧血式IPaaS系統(tǒng)。
1、 計算和數(shù)據(jù)分離。多個微服務共享一個數(shù)據(jù)庫,數(shù)據(jù)庫單獨為一個分布式集群給很多微服務提供數(shù)據(jù)。這種方式的優(yōu)點是可以很容易擴充并發(fā)量,便于大數(shù)據(jù)分析。缺點:一是運行效率低,在計算中使用大量數(shù)據(jù)必須跨服務器到專門集群中獲??;二是個完整的業(yè)務邏輯描述不能在一個類中完成,而是一組相互協(xié)作的類共同完成的??蓮陀玫念w粒度比較小,代碼量膨脹很厲害,很重要的一點是業(yè)務邏輯的描述能力較差,一個稍微復雜的業(yè)務邏輯,就需要太多類和太多代碼去表達。
2、 多租戶共享一個微服務。當同一個微服務并發(fā)量很大時,只能把該微服務多次部署,再使用負載均衡技術避免單個微服務過載。優(yōu)點:維護和購置成本低。缺點:運行效率低,安全性低。
3、 微服務之間是互相平等的扁平關聯(lián)。必須采用服務注冊、服務發(fā)現(xiàn)、服務網(wǎng)關、負載均衡等復雜技術治理微服務之間的互相調(diào)用,效率低,維護較難。
4、 不同功能組件形成多集群架構。貧血式IPaaS包含很多集群:分布式數(shù)據(jù)庫集群、分布式緩存集群、消息中間件集群、分布式一致性中間件集群、資源編排集群、負載均衡集群等等。集群越多,損壞越大,維護越復雜。
現(xiàn)階段,主流IPaaS大都是貧血式架構,以Spring Cloud框架為代表。提供貧血式IPaaS的廠商包括:阿里、騰訊、網(wǎng)易、亞馬遜等,包括所有的其它小型廠商。
另一類是領域驅(qū)動的充血式IPaaS系統(tǒng)。充血血式IPaaS主要特點是:
1、 計算和數(shù)據(jù)集成在一個領域模型中。一個微服務就是一個領域?qū)嶓w,一個領域?qū)嶓w一個微數(shù)據(jù)庫,微服務和微數(shù)據(jù)庫部署在同一個服務器。這種方式的優(yōu)點:1、運行效率非常高,計算過程中操作數(shù)據(jù)非常快捷;2、所有邏輯運算在一個類中執(zhí)行,便于復用,業(yè)務邏輯表達更清晰。
2、 一個業(yè)務應用由一個樹形架構組成,包含多個微服務,微服務之間存在父子關系。在業(yè)務應用部署過程中,就確立了每個微服務之間的連接關系,無需通過服務注冊、服務發(fā)現(xiàn)、服務網(wǎng)關、負載均衡等復雜技術去管理微服務之間的調(diào)用,效率高,維護簡單。
3、 每個租戶有獨立的業(yè)務應用以及微服務群。租戶之間不會互相搶占資源,當同一個微服務并發(fā)量很大時,可以對該微服務多次實例化部署到不同服務器,再使用負載均衡技術避免單個微服務過載。運行效率非常高,每個租戶擁有獨立數(shù)據(jù)庫,確保數(shù)據(jù)安全。
4、 整個IPaaS系統(tǒng)由一個集群驅(qū)動。每個功能組件只是每個領域?qū)嶓w的功能模塊,獨立為一個實體服務,無需做出集群。每實例化一個領域?qū)嶓w,所有功能組件都會實例化一份。運行效率高,需要的服務器資源降低,維護非常簡單。
領域驅(qū)動架構的IPaaS還一個最大的優(yōu)點,可以完全支持圖形化編碼。降低開發(fā)成本。
充血式IPaaS非常少,典型代表是瓴碼PaaS系統(tǒng)。
3、FPaaS
FPaaS為SaaS應用提供不同功能的專用接口服務,例如物聯(lián)網(wǎng)的相關技術(IoTPaaS)、人工智能相關技術(AIPaaS)等。FPaaS嚴格意義上講,是一個特殊的SaaS應用,仍然是運行在IPaaS之上的,而給普通SaaS提供調(diào)用接口。
1、 IoTPaas
IoTPaaS目的是降低IoT開發(fā)的門檻,提供成熟和標準化的平臺接口,如賬號體系設備綁定管理、事件通知引擎、OTA管理、定時任務引擎、設備分享等,避免重復造輪子。
能提供IoTPaaS的廠商較多,例如:阿里、騰訊、百度、谷歌、亞馬遜、小米、西門子、GE、海爾、聯(lián)想等等。
2、 AIPaaS
AIPaaS主要在兩個維度加速人工智能企業(yè)的快速發(fā)展:
一是提供極致高性能的AI計算資源,實現(xiàn)高效的計算力支撐、精準的資源管理和調(diào)度、敏捷的數(shù)據(jù)整合及加速、流程化的AI場景及業(yè)務整合。
二是構建開放的AI創(chuàng)新生態(tài),無縫對接行業(yè)ISV,賦能生態(tài)伙伴,兼容各AI應用和場景。
國內(nèi)AIPaaS廠商相對較少,如阿里、百度、騰訊、商湯、曠視等。
根據(jù)海比研究,于2019年相比,2020年企業(yè)購買服務應用選擇PaaS的比例均有提高,其中大中型企業(yè)比例分別增值到19.1%和24.3%,在企業(yè)服務領域PaaS越來越受到大中型企業(yè)的青睞。從消費市場來看,大中型企業(yè)對云化軟件的需求力度持續(xù)加大,未來平臺化產(chǎn)品和服務將逐步成為企業(yè)構件數(shù)字化運營的核心,需求旺盛必然加快企業(yè)未來對PaaS的更多部署。
版權聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。