天天看點

有關Serverless的一切:你知道和不知道的有關Serverless的一切:你知道和不知道的

有關Serverless的一切:你知道和不知道的

翻譯:山金孝

譯者注:文中部分觀點略有偏頗,優多劣少,但對于了解和了解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的一切:你知道和不知道的有關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

繼續閱讀