應(yīng)用場景
按理說,AWS應(yīng)該不算PaaS,而應(yīng)該算IaaS。那為什么會放在這里說,其實主要有兩個原因:一是AWS并不是很簡單的IaaS,因為它提供了大量的配套管理服務(wù),雖然這些服務(wù)大多數(shù)都是通過Restful API的形式提供,但確實是可以編程來調(diào)用的;二是AWS本身也一個很有特色的“可編程”服務(wù):Lambda服務(wù)。這個服務(wù)是可以嵌入在它提供的各種服務(wù)中,提供用戶自定義控制這些配套服務(wù)的能力,所以讓這些服務(wù)看起來更像平臺PaaS,而脫離單純的IaaS。從嵌入Lambda的角度來看,AWS比GAE更加的激進,而不是遵循傳統(tǒng)的Web服務(wù)存在,因此能被更廣泛的互聯(lián)網(wǎng)業(yè)務(wù)所使用,而不僅僅是互聯(lián)網(wǎng)電商客戶。據(jù)說最近一些在Steam上很火的新游戲,都有用到AWS的服務(wù),包括Lambda。
開發(fā)支持
AWS因為核心是圍繞其IaaS服務(wù)器EC2來設(shè)計的,所以并沒有所謂的開發(fā)框架。而更多是針對EC2提供的各種透明的、基于網(wǎng)絡(luò)的優(yōu)化功能。比如AutoScaling,就是基于使用時間、負載情況,對EC2實例進行伸縮,這里補充一點,EC2的虛擬機也是支持Docker技術(shù)的,所以能比較方便的啟動、遷移。而另外一個叫ELB的服務(wù),則是比較傳統(tǒng)的類似L5的負載均衡器。
能夠真正對AWS“編程”的,就是他們的Lambda服務(wù)。你可以多種語言來編程,包括 Node.js/Java/C#/Python ,來編寫一些觸發(fā)器產(chǎn)生的事件處理回調(diào)。在AWS的各種服務(wù)中,有很多服務(wù)都支持Lambda,如S3/DynamoDB/Kinesis,這些服務(wù)在收到請求,或者發(fā)生狀態(tài)變化的時候,都會觸發(fā)很多不同種類的事件,從而調(diào)用用戶自定義的這些代碼。比如對象存儲S3收到數(shù)據(jù)的時候,就會觸發(fā)代碼。這個功能就能很方便的用來做游戲的存檔和讀檔。又或者數(shù)據(jù)庫服務(wù)DynamoDB在對數(shù)據(jù)進行Put或者Get操作的時候,也可以觸發(fā)你的代碼。當然,像Kinesis這種流式計算服務(wù),本身就是需要用戶代碼來做離線的統(tǒng)計或數(shù)據(jù)處理的。
把用戶代碼嵌入到服務(wù)當中,而不是提供一個用戶代碼的服務(wù)容器,這個設(shè)計也許是需要服務(wù)IaaS而產(chǎn)生的。但這種靈活的設(shè)計,也把使用者從“標準開發(fā)框架”中解放出來,作為服務(wù)提供者,也無需像Google那樣提供各種語言和五花八門的WEB編程框架。由于游戲服務(wù)器端一般的通信模型和Web相去很遠,有大量的主動通知,以及在線數(shù)據(jù)反饋的需求,所以使用Web那套框架肯定是不能滿足需求的,但好像AWS這種,游戲客戶就可以自己寫一個簡單功能的GameServer,比如只做簡單的廣播服務(wù),而其他的存儲功能,都以Lambda的方式把游戲邏輯和存儲服務(wù)結(jié)合起來,比較的省事。
運維管理
AWS由于主要目標是賣EC2虛擬機,所以擁有很多更“通用”的運維管理工具。其中一個就是Benstalk,這是一個一個Web應(yīng)用部署工具,通過集成Git來拉取和存儲你的軟件。對于僅僅是需要部署WEB應(yīng)用的客戶來說,非常方便。而另外一個工具叫OpsWorks,這個是更通用的運維部署工具,看起來非常像Chef,你可以用它來部署任何軟件。這類工具都是通過先在你的虛擬機(部署目標機器)上,安裝一個Agent(代理程序),然后這個代理程序就可以從一個集中的軟件部署任務(wù)服務(wù)器上,接受各種部署或配置的任務(wù)。用戶可以集中在一個界面上去部署軟件,修改配置,而且可以通過JSON格式的數(shù)據(jù)表,記錄各服務(wù)器相同或者不同的配置,通過工具或自定義的腳本,自動化的在目標機器上做任何的部署操作。
AWS把對于EC2虛擬機的彈性部署,按負載自動伸縮能力,也應(yīng)用在計費上。所以有一個叫CloudTrial的服務(wù),其實就是按需付費的功能。這對于各種還在推廣開發(fā)期的業(yè)務(wù)特別友好,國外有很多獨立游戲或者創(chuàng)業(yè)項目,都直接在AWS上開發(fā)測試。同時AWS也提供了所謂的CodePipeline工具,其實是一種持續(xù)集成工具,但部署部分就默認結(jié)合在AWS上。雖然GAE也有各種開發(fā)工具,但直接以持續(xù)集成(CI)的面貌來提供服務(wù),并且結(jié)合云服務(wù),還是非常值得點贊的。畢竟現(xiàn)在在持續(xù)集成方面,大家都還是比較繁瑣的去設(shè)置各種服務(wù)器環(huán)境,結(jié)合上運維系統(tǒng),才能真正的“自動化集成”。而使用CodePipeline,開發(fā)者可以直接一鍵就把代碼部署到EC2虛擬機上,中間還經(jīng)過自動化測試等等集成任務(wù)。這樣就又省了折騰持續(xù)集成軟件的工夫了。
最后說說CloudWatch服務(wù),這和GAE的Analytics服務(wù)有一種重要不同,就是他主要面向的虛擬機的數(shù)據(jù),而不是具體的服務(wù)。這個系統(tǒng)另外一個特色,就是可以從日志生成、搜集、監(jiān)控、告警、報表一體化。可以說是一個通用的日志分析系統(tǒng)。用戶可以向CloudWatch發(fā)送自定義的指標,然后設(shè)置監(jiān)控閾值,這樣CloudWatch不但會在你設(shè)置的范圍內(nèi)進行監(jiān)控報警,而且還會存儲所有的這些日志,并用以生成統(tǒng)計報表和圖形。
所有的這些服務(wù),給我的感覺,就是雖說AWS服務(wù)看起來沒有GAE那么“有技術(shù)含量”,但由于其高度注重易用性,所以非常容易吸引人去使用。就是不管你是什么平臺或者架構(gòu),似乎都能用的上它的某幾個服務(wù)。而且所有的這些服務(wù)界面,都是統(tǒng)一接口模型、統(tǒng)一界面風格,讓人可以觸類旁通,學習起來一點不費勁。(當然這里也有可能因為本身沒有提供太過復雜的功能)
關(guān)聯(lián)配套
由于AWS的主力產(chǎn)品是IaaS的EC2虛擬機,所以其在線計算的云服務(wù)幾乎是沒有的。但是有豐富的其他配套服務(wù),一點不比GAE遜色。它們大體來看分為兩類:
存儲產(chǎn)品
•S3:對象存儲服務(wù),以二進制塊的方式直接存放。一些游戲開發(fā)商直接用來存用戶存檔數(shù)據(jù)。
•EFS:和古老的NFS標準兼容的分布式文件系統(tǒng)。
•CloudFront:具備全球節(jié)點的CDN服務(wù)。CDN國內(nèi)用戶是比較熟悉的,但AWS的優(yōu)勢在于其全球的機房和帶寬優(yōu)勢。
•RDS:這一塊就是“關(guān)系型數(shù)據(jù)庫”的服務(wù)類,包括了MySQL \ Orcale \ SQL Server \ PostgreSQL \ Aurora這些數(shù)據(jù)庫服務(wù)器。這個服務(wù)就非常典型的是PaaS平臺同的類型,但是AWS同樣也提供。而且最后這個Aurora數(shù)據(jù)庫,是AWS自己研發(fā)的,兼容MySQL的產(chǎn)品,據(jù)他自己說比MySQL快很多。
•DynamoDB:一種NoSQL數(shù)據(jù)庫,屬于Schemeless,也就是無需預建數(shù)據(jù)結(jié)構(gòu)的。可以使用Hash搜索(大概是等于號匹配),也可以使用Range搜索(大概是大于和小于號匹配),這一點是很多NoSQL都不具備的。
•ElastiCache:類似Memcached/Redis這樣的緩存服務(wù)器集群。這里AWS直接提供集群功能,就不需要自己去想辦法搭Redis集群了。這也是比較典型的PaaS服務(wù)商會提供的服務(wù)。
•SQS:分布式消息隊列服務(wù)。這個服務(wù)很特別,一般來說消息隊列服務(wù),是用于比較大規(guī)模的服務(wù)器系統(tǒng),需要把計算任務(wù)分布放在多個硬件(虛擬機)上運行,而彼此之間又需要互相通訊,所以需要這種消息隊列服務(wù)。如開源的有ActiveMQ或ZeroMQ這種,但直接做成分布式的,還是比較少見的。這樣不用自己維護消息隊列服務(wù)集群,只需要使勁買EC2來添加計算節(jié)點,還是比較爽的。問題是這個服務(wù)的接口是Restful的,也就是說基于HTTP協(xié)議的,所以其延遲性應(yīng)該是一個問題。如果在游戲里面使用,估計只有一些不太在乎延遲的,觸發(fā)量較少的操作,會適合用這個服務(wù),比如用戶從游戲大廳進入到游戲房間這種。
離線計算產(chǎn)品
•EMR:用來分析所有AWS提供的服務(wù)的日志。是一個強大的日志統(tǒng)計分析系統(tǒng)。
•Kinesis:一種流式計算,類似Storm/Spark Streaming這種系統(tǒng)。值得注意的是,它同樣是可以直接調(diào)用所有的AWS服務(wù)生成的日志。這是AWS離線計算產(chǎn)品的一個通用特征,就是“本系統(tǒng)”類的服務(wù),都可以直接調(diào)用,無需用戶自己去做各種接口或格式的轉(zhuǎn)換。
•Machine Learning:著名的機器學習服務(wù),同樣可以從AWS全線服務(wù)的日志中作為學習、測試數(shù)據(jù)集。秉承AWS的易用性設(shè)計目標,這個服務(wù)內(nèi)置了大量的學習模型,很多功能都不需要使用者去自己編寫各種學習公式。而只是需要開發(fā)者使用其交互式視覺工具,就可以完成對機器學習任務(wù)的配置和運行。
•Redshift:PB級別的
數(shù)據(jù)倉庫,屬于列式存儲系統(tǒng)(一般大容量的數(shù)據(jù)庫都是這種)
總結(jié)
PaaS作為一個“云”時代非常重要的概念,在實際的業(yè)務(wù)中應(yīng)用卻遠沒有IaaS和
SaaS的廣泛。究其原因,我覺得無非是其靈活性受限導致的。比如GAE這種教科書式的PaaS平臺,盡管提供了各種管理服務(wù)和多種語言框架,但最后還是受一個大的Web服務(wù)的框框所約束。而且后臺關(guān)聯(lián)服務(wù)和PaaS服務(wù)存于一個沙箱中,雖然提供了很好的自動化運維的能力,但也造成了很多不便。除了一些很簡單的、典型的互聯(lián)網(wǎng)業(yè)務(wù),很多其他的服務(wù),都多多少少可能需要突破這些限制。——不過話說回來,這種PaaS對于標準的Web服務(wù),確實是非常的方便,幾乎完全不需要自己去運維。
而以AWS為代表的,這種不太純正的PaaS,提供了大量的運維工具,實際上還是需要用戶自己去做很多運維的工作。但這樣也提供了極大的靈活性:你可以用IaaS的模式去使用AWS。同時AWS也提供了很多PaaS的配套管理服務(wù),使用者同樣可以不去自己部署、配置這些服務(wù)。可以說AWS同時IaaS的靈活性,和PaaS的強大功能。不過AWS也不是天衣無縫,其中Lambda服務(wù),就不屬于通用的業(yè)界標準,如果你把很多業(yè)務(wù)代碼用Lambda的方式來實現(xiàn),那么你就無法切換到別的云服務(wù)商上去了。加上AWS服務(wù)大部分都是Restful API,所以網(wǎng)絡(luò)造成的延遲和帶寬占用,都不適合大量交互的在線服務(wù)——網(wǎng)絡(luò)游戲。
最后展望一下PaaS的發(fā)展,個人覺得通用型PaaS應(yīng)該是沒前途的。因為業(yè)務(wù)模型千差萬別,模型上的通用必然帶來功能上的限制,以及易用性上的確實。所以PaaS還是應(yīng)該按不同的業(yè)務(wù)領(lǐng)域具體細分下去。現(xiàn)在互聯(lián)網(wǎng)業(yè)務(wù)比較大的業(yè)務(wù)領(lǐng)域有三類:一是
電子商務(wù)類,二是游戲類,三是資源社區(qū)類(如B站、今日頭條、各種FM、云音樂APP等)。這三類業(yè)務(wù)都有其非常明顯的模式和需求差異。
比如電商類服務(wù),一般所謂的“業(yè)務(wù)流”是一個重要需求,而且對于存儲安全性非常重視,但對于延遲要求就很低;而游戲類則無法接受單向的HTTP協(xié)議,而且多數(shù)都要和游戲客戶端引擎(Unity/Unreal什么的)結(jié)合,對于延遲的要求非常高,大多數(shù)不能忍受超過300ms,存儲只要可以無限擴容,安全性無需達到金融級都可以;社區(qū)類則對于大量的文件存儲很分發(fā)是硬需求,需要更廣的部署地點,但業(yè)務(wù)邏輯一般不會過于復雜。
因此我們很難通過簡單原始的一個Web App應(yīng)用框架,就把這三個方面的業(yè)務(wù)需求都框進去,而且除了處理HTTP請求,還有大量的業(yè)務(wù)通用功能,是可以作為服務(wù)做出來賣錢的,比如電商的訂單系統(tǒng)、游戲的同步服務(wù)、社區(qū)的基礎(chǔ)社區(qū)功能等等。
最后的總結(jié),就是PaaS服務(wù)必須要立足業(yè)務(wù)領(lǐng)域,面向業(yè)務(wù)中的通用邏輯,才能真正的做好一個PaaS云。
核心關(guān)注:拓步ERP系統(tǒng)平臺是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.guhuozai8.cn/
本文標題:PaaS 調(diào)研:GAE 與 AWS (下)
本文網(wǎng)址:http://www.guhuozai8.cn/html/consultation/10839621416.html