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