有關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的詳細描述[1]。與此類似,其他Serverless供應商也支持多個AvailabilityZone。

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

 

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技術並繼續着他們的創新之旅。

 

Serverless使用案例不僅上述這些,你可以找到更多關於AWS、Azure和IBM的使用案例。

Empowering Serverless Development

Serverless正在不斷吸引着軟件架構師們的注意,不過Serverless仍然存在很多Gaps需要填補,因此短期之類也不會立即跨入“Serverless即一切”的時代。目前雖然與Serverless相關的工具也在不斷改進,但是Gaps仍然還是存在的,之前曾提到過的Serverless Framwork提供了CLI工具,通過CLI工具,用戶可以與多個雲供應商集成。

亞馬遜在收購了基於雲計算的IDE供應商Cloud9後,將其開發部分集成到了AWS的Serverless棧中。但是,現在Cloud9開發環境的設置需要新的Amazon EC2實例或者自己的Linux服務器,因此很多用戶反饋新架構下的Cloud9開發環境啓用過程比原始Cloud9(c9.io)的更復雜了,要解決這個問題,可以嘗試下面這個巧妙的小技巧:本地構建一個自給自用的Lamada函數,從而避免上傳帶有第三方依賴項的bundle。Microsoft Azure由Visual Studio提供支持,Visual Studio是另一種功能強大、適合團隊協作的雲環境IDE。

 

Think Serverless

SLAppForge,一款全新播放器提供商,最近發佈了其Sigma測試版,Sigma是一款用於Serverless應用程序開發和部署的可定製編輯器,混合部署模式,Sigma既利用到了拖放式的優雅簡潔,又結合了源代碼的全部優勢。通過“very”Serverless架構,Sigma爲開發者隱藏了平臺底層複雜的架構,這意味着你再也無需爲了使用一個平臺而不得不去翻閱與之相關的大量手冊資料了。

 這款強大的IDE配備了直觀的代碼建議功能、代碼完整性上下文感知、預生成代碼片段等功能,但是目前僅只支持Node.js。同時,這款IDE還負責Serverless應用的持續開發與持續交付流程。如果你有一個瀏覽器、Github賬號和AWS賬號,那麼一切就已經緒了——因爲你無需安裝任何東西。現在,部署Serverless應用只需幾分鐘,不是幾個小時,也不是幾天。

 

Conclusion

軟件架構朝着Serverless轉變幾乎已成定局,就像傳統IT架構從數據中心轉到雲端一樣。多數應用走向Serverless的日子或許並不遙遠了,現在正是趕上趨勢,成爲Serverless開發人員的最佳時機,因爲與Serverless有關的一切都在使你的生產力和效率得到提高。拋開對基礎設施的擔憂,全身心投入業務邏輯,一切都在你的掌控中,立即開始你的Serverless之旅吧!

 

原文鏈接:

https://dzone.com/articles/seeking-new-horizons-of-serverless?utm_medium=feed&utm_source=feedpress.me&utm_campaign=Feed:%20dzone

 

 


[1] https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

[2] https://headmelted.com/serverless-showdown-4a771ca561d2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章