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