當前位置:
首頁 > 最新 > 關於「Serverless」的完整指南:你知道和不知道的

關於「Serverless」的完整指南:你知道和不知道的

譯者註:文中部分觀點略有偏頗,優多劣少,但對於了解和理解Serverless,還是相對較為客觀的文章,僅供參考!

是否你已溺亡在Serverless開發中?

Introduction

多年前,有人覺得Serverless就是瞎扯。然而,最近兩年,Serverless已被成功實現並成為了家喻戶曉的新技術。過去,你可能會問Serverless是否還需要Server的存在,毫無疑問,答案是肯定的!現在,你關心的問題,可能是個數百萬美元的問題,那就是,是否有必要擁抱Serverless。

回顧過去,在很早之前,IT架構全是裸金屬伺服器,並且全部交由組織結構自己管理,隨後來到了基於硬體模擬的虛擬化伺服器時代,再後來就是由分散式計算平台衍生出來的雲計算時代,最後容器技術(OS-level的虛擬化技術)開始登場並大獲成功。不過,由於雲計算的迅猛發展和普及,現在的IaaS其實也覆蓋了很多領域,隨著PaaS成為IaaS的下一代,Server的供給也在平台上被自動化實現了。

就如身邊的一切,不論喜歡與否,技術正在不停的演變。在過去的十年里,我們看到了太多技術的變化,網路、計算、存儲等領域都發生了極大變化。隨著業務開發部門地位的不斷提升,Serverless 被不斷提及,同時Serverless的出現也加速了人們對PaaS概念的理解和應用的根本性改變。自從2014年AWS在Reinvent大會上發布Lamada Serverless服務以來,Serverless已成為技術轉變的必然。直到今天,Serverless仍是軟體架構領域最熱門的技術趨勢。

Diving into Severless

Serverless是一種應用和服務可以被編譯和運行,同時又無需管理任何裸機或虛機伺服器的雲計算模式。在Serverless雲計算模式中,伺服器的配置、擴展和管理完全被屏蔽,操作員無需任何干預。Serverless整合了兩個不同但重疊的領域,BaaS(Backend as a Service)和FaaS(Function as a Service)。

很多人誤以為Serverless是個新發明的概念,實際上,它早已存在,而且也不是什麼新玩意了。Zimki 在2006年就提供付費執行代碼的平台服務了,但是在2007年底他們取消了這項服務,Salesforce的Heroku自2007年便開始默默地運行其Web應用部署模式了,Google在2008年就發布了功能有限的GAE平台,GAE最初是一個自定義的Python執行框架,現在成為了Web應用程序開發和託管最受歡迎的雲平台之一。

Brave new wave

隨著事件驅動(event-driven)類應用需求的普及,臨時性、無狀態的容器計算服務的優勢開始體現。與傳統架構不同,容器計算引擎由第三方事件觸發和終止,同時Function as a Service的概念也開始出現,聰明的開發者們開始利用這類服務,以便更好的實現和專註於自己的特定事件觸發業務邏輯。對開發者而言,FaaS對底層基礎架構設施進行了完全抽象,使用者僅需按使用時間進行付費,無需關注任何基礎架構,借用AWS Lamada的話,就是「運行代碼時無需考慮伺服器,只需支付你的計算時間即可」。從行業發展來看,DevOps向無伺服器計算的需求轉變是Serverless市場主要推力,Global forecasts預測Serverless市場將以32.7%的速度增長,行業專家對Serverless的發展也持積極正面的觀點。

Serverless, the Hero

Serverless的出現消除了伺服器集群管理和過去必須事先準備伺服器的繁瑣工作,基於適當的雲計算基礎設施,Serverless底層伺服器集群可以自行擴展,甚至可滿足突發的流量高峰。Serverless服務由雲計算供應商提供監控和管理,包括安全補丁以及各種防禦攻擊軟體等都由供應商負責,這對用戶而言,預算成本得到極大削減,因為Serverless使得用戶自身運營成本顯著降低,更不用說配置管理基礎架構時的各種麻煩事了。

在Serverless中,你只有在真正使用了計算力時才需付費,計費以秒為單位。使用Serverless服務,從起初的產品Idea到成品實現輸出將是一個極快的過程。過去,開發者總是在內部各種軟體棧的配置使用上苦苦掙扎,使用Serverless,開發者頭次使用即可獲得極佳體驗,AWS和多數Serverless供應商都提供免費語言套餐(除Google Cloud外,大多數供應商都提供了運行時/開發環境),這些使得首次使用的開發者即可獲得極佳的體驗。

Serverless, the Villain

Serverless也並非向神一樣十全十美,只不過有些成本費用被隱藏了。通常,Serverless中的成本仍然還是要落到CPU和RAM上的,不僅如此,像API請求、存儲和網路其實都是隱式成本。有些時候,根據特定的業務需求,可能需要多個函數,而與單容器相比,多函數實現顯然要困難得多。由於業務邏輯在全局上的分布特性,Serverless中多函數實現帶來的代碼維護可能會佔據你全部工作時間,因此對於複雜的使用案例,使用更為成熟的kubernets可能會更有優勢。

缺乏本地主機測試工具是目前Serverless供應商的一大缺陷,因此要在本地模擬是很困難的。目前,通過Serverless Framework 和aws-sam-local在一定程度上可進行本地模擬實現。由於Serverless中的Server層是無形的,因此Serverless上的手工伺服器配置調整從而適應你在本地開發的程序代碼幾乎是不現實的。

在遷移升級時候,Serverless廠商鎖定將會是個巨大挑戰,因為每個Serverless平台由於自身的獨特性和局限性,彼此之間相距甚遠。由此而造成的冷啟動,可能會使應用程序在啟動階段經歷較長的延時。

Serverless Competition

AWS並非市場上唯一的FaaS供應商,其他幾家雲計算巨頭也在磨刀霍霍。Microsoft Azure通過Azure Function增強了事件驅動的Serverless體驗,基於開源的OpenWhisk項目,IBM Cloud也在提供Serverless服務,而Google Cloud Functions正是Google的Serverless Beta產品。

不同的提供商在其Serverless平台中提供了一堆完全可直接使用的產品,這些產品無需供給、維護和管理,下圖是各個主流Serverless平台提供的服務組件及其描述。

主流Serverless平台的組件描述

另外,Firebase是由Google Cloud Platform支持,並由多個服務組件集成的移動和Web應用程序開發平台。目前,大多數Serverless供應商都展示了其對物聯網框架、移動後端和認知應用程序開發的支持。

AWS的大多數服務都是通過Availability Zone的特定入口來彌補全球範圍內的應用延時,開發人員自由選擇是使用AWS默認的Region還是使用自己指定的Region入口,AWS官網有其Region的詳細描述。與此類似,其他Serverless供應商也支持多個AvailabilityZone。

AWS 的Lambda和其他服務都有支持多種編程語言進行Serverless開發的SDK,AWS最近(2018年1月)宣布Go支持。注釋中的這篇文章描述了關於不同Serverless供應商所提供服務的詳細對比。

Many Faces of Serverless

Serverless服務讓你無需配置和管理伺服器即可運行代碼,Serverless賦予了無數應用新的機會,以下是Serverless的應用場景和案例:

1、Real-time data processing

Serverless在Real-time data processing領域具有廣泛應用,例如,「西雅圖時報」使用AWS Lambda實現圖像大小調整,以便在台式電腦、智能手機和平板電腦等不同設備上進行查看。SiteSpirit使用IBM Cloud的數據服務來構建其實時處理的雲媒體庫。

2、Real-time stream processing

Localytics使用Lambda處理數十億的歷史和實時社交媒體趨勢數據,供業務用戶查詢。 IBM Cloud Functions通過與支持IBM Message Hub的Apache Kafka集成,以處理流數據。 Plexure是紐西蘭一家從事新零售業務的公司,它使用Azure Serverless技術將客戶體驗提升到了一個新的層次——藉助Azure Functions和Azure Logic Apps,Plexure的客戶現在可以接收到和店內情況相關的數字警報。

3、Extract, Transform, Load (ETL)

Zillow是全球最大的房地產品牌之一,利用AWS Serverless 服務,Zillow在房屋估價方面為客戶提了近乎實時流暢體驗。

4、IoT Backends

在IoT領域,使用Serverless平台的應用程序不斷增長。作為一家智能住宅廢棄物收集公司,GreenQ利用IBM Bluemix技術,通過IoT與Serverless的結合,為客戶提供了快速、高效的服務。

5、Mobile Backends

Bustle.com是一個專為婦女提供新聞、時尚等資訊的網站,他們的iOS和網站後端使用了AWS的Lambda和API Gateway服務。Bustle.com的應用和網站遷移到Serverless架構後,開發人員再也不再擔心管理和配置基礎架構了,他們所關注的僅是如何創新。移動應用APP WeatherGods使了IBM Cloud Functions(原IBM OpenWhisk)通知用戶特定的天氣事件(例如佛羅里達州的颶風),並根據客戶偏好進行天氣定製推送。

6、Serverless web applications

用Eric Hammond的話來說,TimerCheck.io是一個「看似簡單又超級強大的web服務」,TimerCheck.io的服務完全基於Amazon API Gateway和AWS Lambda,提供了無數可無限次運行的定時器服務。

7、SaaS event processing

San Joaquin Valley College (SJVC)是加利福尼亞州一所私立大專學院,為了簡化IT管理並為學生提供更好的體驗,他們將學習管理系統遷移到Microsoft Azure和Office 365上,在Microsoft FastTrack的幫助下,SJVC使用了Serverless技術並繼續著他們的創新之旅。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲技術實踐 的精彩文章:

谷歌發布:Kubernetes引擎中的GPU發布beta版
將在2018年帶來「顛覆性」的12項科技技術?

TAG:雲技術實踐 |