?作者 | Allen Helton
策劃 | 云昭
Serverless的定義正在改變,似乎沒有人能對它的實際含義達成一致。
一位經常發表AWS Serverless架構相關演講的老手Allen說道:“我已經不知道什么是Serverless了。”
過去,Allen對Serverless有著堅定清晰的把握,但最近好像他有所動搖。
也許是越來越多的人在他們的項目、服務和回購上紛紛使用“Serverless”一詞,削弱了我們過去對“Serverless”的定義。
Allen寫道:“現在的Serverless,上手相當困難了。僅僅開始使用,就需要許多開發人員從習慣的思維方式進行重大轉變。再加上還需要學習如何在AWS控制臺中構建的數十個教程,簡直讓人有些發憷。”
根源在于現在技術圈沒有對“Serverless”的實際含義達成一致。甚至更進一步,我們需要就什么是“Serverless開發”達成一致。二者是完全不同的故事。
1、Serverless到底為何?
在ChatGPT上提問:“什么是Serverless?”,你會得到如下的回答:
ChatGPT上Serverless的解釋
無須在巨型計算機上部署應用程序,你可以使用堪比魔法空間的云來自動保證應用程序的使用。無須擔心是否有足夠的空間,可以省去大量的時間和金錢……
Momento博客上有一個很好的試金石測試,Allen認為它切中了真正Serverless服務的定義。
- 無需規定,無需管理
- 基于使用量的計費定價,無最小值
- 只需一次API調用即可
- 無計劃停機
- 沒有實例
也就是說,開發人員應該能夠選擇并使用Serverless服務,且這些服務得真正work。好比之前創建Lambda函數的時候,開發者對CreateFunction端點進行了一次調用(最好在IaC中聲明),然后立即就可以開始調用它。
而Neptune Serverless卻不可以,我需要配置VPC,選擇容量單位,并選擇多AZ部署設置。體驗相當差。
除了影響Serverless服務的開發人員體驗之外,還會影響組織。服務的彈性擴展程度如何?如果有了突發流量,基礎設施是否會自動擴展以處理它,而不需要內部SRE團隊?
當應用程序不在使用狀態呢?它是否會縮減到0?沒有人愿意為過度調配的資源買單。無最低付款的“按需付費”模式是一個重大的指標,因為它表明你正在使用Serverless服務。
Serverless是一種模式,消費者只需為他們所使用的服務來付費。服務由可靠、可擴展的基礎設施支持,這些基礎設施可以自動擴展和收縮傳入的流量,從而完全減輕了消費者的負擔。這些服務使用起來很簡單,只需很少的配置即可啟動。
接下來,讓我們來談談成為Serverless開發人員意味著什么。
2、什么是Serverless開發?
那些使用Serverless服務構建應用程序的人正在進行Serverless開發。但這并不像聽起來那么簡單。
Serverless開發人員以Serverless第一的心態構建。這意味著他們在開發過程中尋求利用Serverless服務的優勢,如基礎設施管理、可用性和可擴展性(等等)。這并不意味著他們必須為每個工作負載使用Lambda或Step函數。
這與組成應用程序的特定服務無關;這是一個組織在利用共享責任模式時獲得的利益。
開發者中的許多人都陷入了Serverless開發的細節中。例如,在構建應用程序時,知道如何通過使用Lambda上的Step函數來構建直接集成或優化性能是一個重要的細節,但這并不是Serverless開發核心所在。
Serverless是一個關于集中精力全面有效地解決業務的問題,目的在于為了在創紀錄的時間內將穩定的軟件推向市場,在一定的前提下找到合適的產品市場。
3、到底怎么做?
正如無服務器精英Sheen Brisals在最近的AWS re:Invent 2022中提到的,Serverless開發的核心概念已經存在了很長時間。AWS等云供應商正在使其更容易利用。
的確,Serverless是令軟件更快、更可持續、更健壯的墊腳石,但前提是需要讓讓世界范圍內的人們明白,作為構建現代應用程序的方式的Serverless,究竟為何。
我們現在需要推動的是不僅采用云,而且還要采用云最佳實踐。使用事件驅動架構,設計NoSQL數據模型,并在可能的情況下實現異步。
4、IfC不是Serverless?
隨著代碼基礎設施(IfC)大舉進軍云市場,Serverless服務被完全從開發者那里抽象出來。沒有構建Lambda函數、SQS隊列或DynamoDB表。相反,對分布式系統架構模式的了解來構建應用程序。
如果我們認為這完全不同呢?所有這些關于Serverless或非Serverless的“扯皮”討論最終可能會變得毫無意義,我們將整個范例稱為原生云開發。
5、寫在最后
隨著Aurora Serverless、Neptune Serverless和OpenSearch Serverless的發布,AWS開始模糊其對Serverless的定義。
也許正是云計算之旅的一部分。
Serverless開發人員將轉變為“云原生”開發人員。我們將設計依賴于已建立的體系結構模式而不嚴重依賴于特定的托管服務的軟件。
IT行業是一個快速迭代的行業,它會產生多種意見,多種軟件,多種運動。一切都變化得如此之快。因而,我們需要重新定義Serverless,不然就會苦了開發人員和企業。
原文鏈接:https://link.medium.com/ulWeXinUBvb?