歡迎光臨
每天分享高質量文章

遷移到Serverless之前應該想清楚的幾件事

這篇文章是Serverless系列的第三篇文章,這一系列文章是為了探索Serverless的本質。
第一篇:Serverless的本質是什麼?
第二篇:Serverless是如何改變公司業務、開發流程以及文化的?
Serverless技術承諾說可以消除IT運維相關的大部分繁重工作,第三方服務商會承擔起更多伺服器維護相關的管理工作,而不像企業組織為容器編排和微服務平臺所做的那樣。使用Serverless平臺可以節省資源,其中部分原因是因為Serverless允許組織透過“按使用量付費”的樣式來使用伺服器。
遷移到Serverless資源有許多方法,有對的也有錯的。在遷移之前,請記住以下幾點。

不要被Serverless這個詞迷惑

DevOps的團隊成員可能已經聽說過Serverless,並希望知道遷移後這個平臺可能為他們的組織提供哪些功能,但他們可能一開始就會對Serverless這個詞產生疑惑,Serverless意思是無伺服器的。但實際上,”Serverless“應用程式仍在伺服器上執行。
“Serverless”這個詞的使用可以追溯到至少2012年,當時Ken Fromm在一篇ReadWrite論文“為什麼軟體和應用程式的未來無伺服器[1]”中使用了這個術語。一個更精確,合適的定義出現在2016年一篇開創性的部落格文章中,由Symphonia的合作伙伴兼聯合創始人Mike Roberts在Martin Fowler的網站上提出。他寫到Serverless架構是“將第三方’後端即服務’(BaaS,Backend as a Service)服務,和包含自定義的服務程式碼的容器整合在一起的應用,並將應用執行在‘功能即服務(Function as a Service,FaaS)’平臺上。”
Roberts寫道:“透過整合實踐這些想法以及相關的類似於單頁面應用程式(SPA)的想法,這種架構消除了傳統的對永遠線上伺服器元件的大部分需求。Serverless架構幫助企業降低運營成本,複雜性和工程準備時間,但代價是增加了對供應商的依賴和相對不成熟的支援服務的依賴。”
以上定義概括了許多供應商提供的Serverless產品,包括亞馬遜網路服務(AWS)的Lambda,它被廣泛使用並提供BaaS(Backend as a Service)和FaaS(Function as a Service)服務。其他Serverless產品包括 Cloud Functions(Google),IronWorker(Iron.io),Manta Functions(Joyent),OpenWhisk(IBM),PubNub BLOCKS(PubNub)以及Serverless Docker(Docker)。


瞭解Serverless的優缺點

Serverless的優點在於它能夠透過將伺服器和相關的基礎架構管理任務外包給第三方來幫助公司節省資源。例如,開發人員團隊只需要開發應用程式,而Serverless提供商則在異地伺服器上完成所有資料維護工作。
Cloud Academy的產品營銷經理Albert Qian表示: “Serverless的易用性可以提高開發人員的效率,Serverless計算使開發人員不用接觸基礎設施,他們可以完全只專註開發單一功能”。
Serverless供應商允許組織根據他們的需求進行擴充套件或縮小,不再擔心冗餘的伺服器容量。 
“Serverless架構讓雲服務供應商管理伺服器以及伺服器的擴充套件以滿足需求。將Serverless視為平臺即服務(PaaS)的抽象,您需要做的就是上傳程式碼,當您需要向上或向下擴充套件某個功能時,您只需擴充套件這個單一功能,”Qian說。 “因此,您無需擴充套件整個系統,容器或應用程式。另一個好處是無伺服器具有內建的容錯能力和設計的的高可用性。”
因此,企業可以透過依賴第三方執行操作和資料管理任務來節省資金。 “Serverless的最大優勢之一是它可以降低成本。使用FaaS作為您的計算層,您只需為正在執行的功能付費,”Qian說。 “尤其是對於利用率較低的工作負載,您會節省很多支出。因為您只需支付處理請求所需的計算資源,而不是為等待請求進入的空閑伺服器付費。”
但是,透過將伺服器管理移交給第三方,您的組織也失去了對伺服器的大部分控制權, 這一點在您確定是否以及何時遷移到Serverless時是需要慎重考慮的。
“由於Serverless解決了資源管理問題,它正在迅速發展。對於不想維護伺服器的小公司來說,這是完美的解決方案,”Raygun的高階開發人員Jeremy Scott說。 “您可以在幾乎完全不用關心運維問題的前提下將工作完成,並且比使用自己搭建的伺服器架構更便宜。但是Serverless也有其侷限性,當你交出責任時,你同時也交出控制權和訪問權,這樣一來,對你的服務的監控和分析會變得非常困難。”
透過這種方式,對在Serverless平臺上執行的微服務和容器進行分析可能成為一個問題。 “你必須瞭解你的軟體,否則就有可能在沒有資料支援的情況下做出商業決策,”Scott說。 “因此,如果您使用Serverless,那麼在某些情況下您可能需要在客戶端(例如App或者瀏覽器)新增監控,或者您可以嘗試為Serverless Function新增異常處理。”
雖然具有挑戰性,但將分析軟體應用於Serverless部署仍然是可行的。如果為Serverless Function添加了異常處理,可以將Function包裝在try-catch中然後傳送https API請求,那麼錯誤資訊就會被記錄在錯誤報告客戶端(例如:Raygun[2])。然而,如果是基於API的服務,將無法被監控,另一種解決辦法就是觀察API的行為方式”,Scott說。
在決定哪些功能可以移植到Serverless架構時,需要考慮到Serverless部署的缺點——不太強大的計算效能。 “Serverless Function有很多限制。任何需要超過3GB記憶體的功能都必須重新設計否則無法執行,”Cloud Academy的Qian說。 “要確保團隊瞭解這些限制,並確保他們有足夠的知識,經驗和培訓,來決定適合特定工作負載的最佳技術,這一點非常重要。Serverless或任何新技術的‘酷’因素在架構方面有時會籠罩批判性思維,結果可能導致的鬆散的Function的組合,而不是整體一致的應用程式。”


安全清單

就像監控和分析一樣,在Serverless架構上保護你的資料也十分困難。畢竟伺服器的管理和控制都被轉移給了第三方。
“例如,Serverless執行時環境不是標準化的,並且被執行的雲服務隱藏起來,這使得我們更難以保護雲上的資料”,Aqua Security營銷副總裁Rani Osnat表示。“對於無伺服器,我覺得有幾個關鍵的安全問題,”Osnat說。在進行遷移時,某些安全檢查尤其重要。 例如,如果在Serverless Functions中使用了潛在的易被攻擊的程式碼,那麼需要在使用之前解決這個問題”,同時對於那些違反政策的FaaS Functions, 我們必須使用強制控制來阻止這些功能的部署。
Osnat說道:“儘管Serverless架構如此具有挑戰性,企業組織們仍需要確保他們的Serverless平臺在執行時會被監控,以便監測異常。”
Cloud Academy的Qian表示,當遷移到無伺服器時,同時也會面對多使用者的挑戰。 “即使客戶的工作負載在虛擬機器或容器中是被隔離的,也可能存在安全問題,特別是如果應用程式使用敏感資料。 一個客戶程式碼中的潛在的bug可能會影響另一個應用程式的效能,從而影響客戶服務和應用程式的質量。”
相關連結:
  1. https://readwrite.com/2012/10/15/why-the-future-of-software-and-apps-is-serverless/

  2. https://raygun.com/

原文連結:https://thenewstack.io/serverless-migration-strategies-what-to-know-before-making-the-leap/
Kubernetes專案實戰訓練營

Kubernetes專案實戰訓練將於2018年8月17日在深圳開課,3天時間帶你係統掌握Kubernetes本次培訓包括:Docker介紹、Docker映象、網路、儲存、容器安全;Kubernetes架構、設計理念、常用物件、網路、儲存、網路隔離、服務發現與負載均衡;Kubernetes核心元件、Pod、外掛、微服務、雲原生、Kubernetes Operator、叢集災備、Helm等,點選下方圖片檢視詳情。

贊(0)

分享創造快樂