透過 Serverless 架構構建更好的軟體

我們軟體工具行業為開發者提供的支援還很不到位,無法幫助他們構建更好的軟體。

儘管在過去 30 年中,我們開發軟體的方式已經發生了巨大變化。就可用的技術和工具而言,我們確實已經取得了巨大進步。

但這些發展對開發者的生產效率實際上有什麼作用呢? 使構建軟體變得更容易了嗎? 更便宜了嗎? 更迅速了嗎?

在過去 6 年的職業生涯中,我一直在嘗試構建能提高開發者生產效率的工具(先是在一家初創公司,後來在 CircleCI,如今在 Serverless)。在尋找這些問題答案的過程中,我發現答案基本上是

否定

的。

雖然既有的一些工具確實有助於我們開發更強大的軟體,但它們只是在漸進式地提高生產效率。作為一個行業,我們仍然面臨著同樣的基本問題:軟體開發極其困難,成本高昂。

雲服務即是明證

一個典型的例子就是「雲」。「雲」的一個重要特點是讓其他人管理我們的伺服器,而讓開發人員能夠更加專注於程式碼。

這是一個非常好的想法。正是由於該價值主張,過去十年間湧現了大量的雲服務,而 Amazon 的市值也已達到 1。19 萬億美元(截至 2020。04)。

透過 Serverless 架構構建更好的軟體

然而,儘管雲服務將軟體開發人員從處理物理伺服器的工作中解放了出來,卻沒有消除處理伺服器中令人頭疼的許多根本因素,例如預配、縮放、維護和除錯等。

對於我們這個行業(包括我自己)所創造的許多技術,同樣如此。

雖然 CI/CD 平臺有助於簡化軟體的測試和部署(尤其是對於團隊協作的情況),但是它們仍然需要編寫測試、配置環境以及處理出錯的生成容器。GitHub 為我們提供了更好的軟體協作開發使用者體驗,但它並沒有從根本上消除團隊在複雜程式碼基礎上進行協作時所面臨的問題。

總之,我們行業取得的大多數進步都是漸進式的。

我們未能顯著地讓軟體開發變得更容易、更便宜和更迅速,而這是我們希望實現的最終狀態。

構建更優軟體的途徑

透過 Serverless 架構構建更好的軟體

答案很簡單,即 Serverless(無伺服器);或者更確切地說,在 Serverless 技術的穩健性方面繼續投入。

Serverless 是在應用開發過程中儘可能將底層結構抽象出來,當前主要的體現形式是雲函式 等函式即服務 (FaaS) 產品/服務。

這些產品/服務以及更廣泛的 Serverless 服務非常有趣,因為它們能顯著地提高生產效率。

也就是,使建立高度自定義式工具的能力大眾化、透過程式碼複用消除工作冗餘、使資料訪問更加容易。

1。簡化工具定製

就軟體開發工具而言,我們和任何潛在的 SaaS 客戶都面臨著相同的問題:自行構建還是購買?

投資構建完全滿足我們需求的工具,然後再花大量精力進行維護?或者採用第三方產品/服務,但不可避免地會包含一些並非我們期望的附帶工作流?這兩種辦法都不理想;兩種方案都會導致脆弱、昂貴且易出錯的問題,並且不能幫助我們高效地開發高質量軟體。

最理想的情況是,我們能夠採用一種有強大開放原始碼社群或者商業公司提供支援的工具,而且這種工具可以輕鬆實現高度自定義。

該答案似乎顯而易見,但我們現階段仍然無法做到。不斷增長的開放式 API 雖然打下了一定的基礎,但距輕鬆自定義大多數工具還非常遙遠。

不過,Serverless 具有讓這種理想狀態變成現實的潛力。

如果您的源管理、CI/CD 和專案管理系統全都能統一地公開事件,使您能夠透過部署到任何所選平臺的 Serverless 函式輕鬆處理這些事件,那真的是一種非常理想的情況。

雖然距離這一目標還很遙遠,但 Auth0 Extend 和 CNCF CloudEvents 等專案正在朝著這個目標努力。

2。簡化程式碼複用

作為開發人員,最令人沮喪的事莫過於日復一日地編寫重複程式碼。

透過 Serverless 架構構建更好的軟體

要是我們能夠重複利用一條條程式碼來構建不同的應用,然後將編碼的時間集中到可以帶來獨特價值的業務邏輯上,那該有多好啊!

如今,Serverless 架構本質上是微服務架構:具有常見功能的函式組。這些函式組一起部署,並共享 API 閘道器等基礎結構資源。

我相信,隨著 Serverless 工具的發展,這些服務將變得更小更具體,並且涵蓋更廣泛的用例(例如,一個函式可用於部署和配置特定基礎結構,或執行負載測試)。隨著這些服務變得更小更具體,除原始開發人員以外的其他人也可以更容易地共享、配置和使用這些服務。

這最終將使我們步入一個新的時代:那時,公開和在組織內部私下共享、部署和複用微服務將變得十分容易。

這會大大降低我們重複工作的時間,使我們能夠更專注於獨特的功能和業務價值。

當前已有一些專案向這方面努力,例如 Standard Lib。未來這方面的發展值得期待!

3。簡化資料訪問

如今,所有數字業務都會產生和收集海量的資料。這些資料是非常寶貴的資源。尤其值得注意的是,我們可以使用這些資料來為使用者構建更強大的功能。

透過 Serverless 架構構建更好的軟體

這種海量資料伴隨著一個問題:這些資料以各種不同的格式存放在各種不同的地方,難以得到利用。

事件驅動架構(Serverless 架構通常構建於該類架構之上)能夠以事件形式公開所有資料。而這些事件可以直接透過 Serverless 函式得到利用。

儘管這種通用架構模式還不成熟,但如果所有資料都能以事件的形式存在,且能夠透過託管在任意位置的函式進行處理,我們就能夠解決如今面臨的資料可移植性和訪問方面的諸多挑戰。

最終,我們的開發效率將顯著提高。

總結

對於開發人員來說,當下是一個激動人心的時代。我們很有可能會見證到我們目前可用的工具實現前所未有的根本改進。

我們每個人都有責任繼續追求並推動這一改變。