新科技速遞
公有雲AWS推出了「無伺服器LAMP堆疊」(Serverless LAMP stack),迅速引起不少關注。AWS是最早推動雲原生技術的公有雲,LAMP又廣泛用於建立網站,雲原生可大大減低管理難度,甚至是營運成本。
以往建立LAMP,包括有4大組件,Linux作業系統、HTTP伺服器Apache、MySQL數據系統、PHP語言處理器, 所以稱為LAMP。不少流行應用框架,例如WordPress就利用了LAMP。
近年,PHP開發框架也大行其道,包括Laravel和Symfony,主要是出現了Composer的PHP函式庫管理技術,管理函式庫依存性,提供相依函式庫管理功能,結果建立極複雜PHP框架,以物件導向(Object Oriented)建立應用。不少人甚至認為,Composer為PHP注入了新生命。
LAMP堆疊潛力無限
全球有大量Web應用,均以LAMP開發堆疊,如果變成雲原生的應用,商機之大,可想而知,也解決不少日常維護難題。目前,用戶在雲端配置LAMP的虛擬機器(以公有雲技語,或稱為Instance),必須選擇配置地點、處理器種類、記憶體數量等。不過,公有雲不負責資源配置,缺乏足夠記憶體,MySQL數據庫有可能無聲無息就停頓了。
管理人員須監察用量。假如用量太高,須加負載平均器,以確保可用性。當然,配置工作閣下自理,額外費用自付。
有人誤以為,公有雲就毋須管理基建,實際上大錯特錯。除了公有雲「雲原生」服務,「基建即服務」的雲服務,管理基建仍是客戶責任。「無伺服器LAMP堆疊」的優點,可讓LAMP建立應用,具備無限橫向的擴充能力,自動隨連線需求,自動置配額外資源。
AWS具備推出的本錢,仍是擁有Lambda服務和Aurora數據庫。原理為Apache和處理PHP生成的動態內容,改由Lambda和API Gateway負責。Lambda可透過虛擬方式,執行任何類型的應用或後端服務,全部毋須管理,上傳程式碼之後,Lambda 運用其高可用性來處理執行程式碼及擴充各項工作。
Aurora則是AWS專門開發取代MySQL數據庫,據說性能比MySQL快5倍,Aurora也具備出伺服器版本,與MySQL完全兼容,MySQL應用毋須更改,直接在Aurora執行。
Lambda收費標準,分別為程式碼執行時間 (每100毫秒加計一次費用),以及程式碼的觸發次數;由於以用量收費,用量低的話,幾乎毋須太大開支。如果網站有季節性變化,以Lambda按需收費,比部署多部VM成本要低。
Lambda簡易部署
Lambda是無伺服器技術,只是按觸發而執行程式碼,不必佈建或管理伺服器,只需為使用的運算時間支付費用。Lambda是公有雲首個無伺服器的技術,然後各公有雲推出以Functions命名的無伺服器運算。上述性能相當吸引,不少應用相繼使用,結果變成AWS忠實用戶。
AWS的「無伺服器LAMP堆疊」也跟開源的LAMP有出入,網上從外間的HTTP請求,先經CloudFront全球內容交付網絡(CDN),靜態部分由負責Simple Storage Service讀寫,或Amplify Console回應;動態的PHP就經API Gateway送向Lambda執行,然後從Aurora讀寫數據,再回傳給CloudFront。
小題:雲原生各有利弊
本港不少機構亦利用CloudFront作為CDN,媒體庫和網站內容也分開,CDN可加快向網頁傳送靜態內容反應。上述的部署,一舉可解決LAMP擴充的各項難題。
當然,各公有雲各師各法,具備不同雲原生方案,例如LAMP可變成Docker容器,然後再以Google雲原生Cloud Run方案,變成容器化運行,既保留LAMP開放性,又具備了雲原生的各種優點。
不少批評「無伺服器LAMP堆疊」,指用戶被鎖死在AWS,但AWS開發便於部署的雲原生,原意就是想留住用戶。
從開發和配置角度,AWS的「LAMP堆疊」簡潔易明。相對而言,用戶包裝LAMP堆疊成為容器後,再上載至GitHub,配置Cloud Run上,過程可能出錯的機會,肯定大得多。最後AWS技術支援和生態,亦較其他公有雲積極和進取,所以「無伺服器LAMP堆疊」亦可能
https://aws.amazon.com/blogs/compute/introducing-the-new-serverless-lamp-stack/