我們軟體工具行業為開發者提供的支持還很不到位,無法幫助他們構建更好的軟體,
盡管在過去 30 年中,我們開發軟體的方式已經發生了巨大變化,就可用的技術和工具而言,我們確實已經取得了巨大進步,
但這些發展對開發者的生產效率實際上有什么作用呢?
使構建軟體變得更容易了嗎?
更便宜了嗎?
更迅速了嗎?
在過去 6 年的職業生涯中,我一直在嘗試構建能提高開發者生產效率的工具(先是在一家初創公司,后來在 CircleCI,如今在 Serverless),在尋找這些問題答案的程序中,我發現答案基本上是 否定 的,
雖然既有的一些工具確實有助于我們開發更強大的軟體,但它們只是在漸進式地提高生產效率,作為一個行業,我們仍然面臨著同樣的基本問題:軟體開發極其困難,成本高昂,
云服務即是明證
一個典型的例子就是「云」,「云」的一個重要特點是讓其他人管理我們的服務器,而讓開發人員能夠更加專注于代碼,
這是一個非常好的想法,正是由于該價值主張,過去十年間涌現了大量的云服務,而 Amazon 的市值也已達到 1.19 萬億美元(截至 2020.04),

然而,盡管云服務將軟體開發人員從處理物理服務器的作業中解放了出來,卻沒有消除處理服務器中令人頭疼的許多根本因素,例如預配、縮放、維護和除錯等,
對于我們這個行業(包括我自己)所創造的許多技術,同樣如此,
雖然 CI/CD 平臺有助于簡化軟體的測驗和部署(尤其是對于團隊協作的情況),但是它們仍然需要撰寫測驗、配置環境以及處理出錯的生成容器,GitHub 為我們提供了更好的軟體協作開發用戶體驗,但它并沒有從根本上消除團隊在復雜代碼基礎上進行協作時所面臨的問題,
總之,我們行業取得的大多數進步都是漸進式的, 我們未能顯著地讓軟體開發變得更容易、更便宜和更迅速,而這是我們希望實作的最終狀態,
構建更優軟體的途徑

答案很簡單,即 Serverless(無服務器);或者更確切地說,在 Serverless 技術的穩健性方面繼續投入,
Serverless 是在應用開發程序中盡可能將底層結構抽象出來,當前主要的體現形式是云函式 等函式即服務 (FaaS) 產品/服務,
這些產品/服務以及更廣泛的 Serverless 服務非常有趣,因為它們能顯著地提高生產效率,
也就是,使創建高度自定義式工具的能力大眾化、通過代碼復用消除作業冗余、使資料訪問更加容易,
簡化工具定制
就軟體開發工具而言,我們和任何潛在的 SaaS 客戶都面臨著相同的問題:自行構建還是購買?
投資構建完全滿足我們需求的工具,然后再花大量精力進行維護?或者采用第三方產品/服務,但不可避免地會包含一些并非我們期望的附帶作業流?這兩種辦法都不理想;兩種方案都會導致脆弱、昂貴且易出錯的問題,并且不能幫助我們高效地開發高質量軟體,
最理想的情況是,我們能夠采用一種有強大開放源代碼社區或者商業公司提供支持的工具,而且這種工具可以輕松實作高度自定義,
該答案似乎顯而易見,但我們現階段仍然無法做到,不斷增長的開放式 API 雖然打下了一定的基礎,但距輕松自定義大多數工具還非常遙遠,
不過,Serverless 具有讓這種理想狀態變成現實的潛力,
如果您的源管理、CI/CD 和專案管理系統全都能統一地公開事件,使您能夠通過部署到任何所選平臺的 Serverless 函式輕松處理這些事件,那真的是一種非常理想的情況,
雖然距離這一目標還很遙遠,但 Auth0 Extend 和 CNCF CloudEvents 等專案正在朝著這個目標努力,
簡化代碼復用
作為開發人員,最令人沮喪的事莫過于日復一日地撰寫重復代碼,

要是我們能夠重復利用一條條代碼來構建不同的應用,然后將編碼的時間集中到可以帶來獨特價值的業務邏輯上,那該有多好啊!
如今,Serverless 架構本質上是微服務架構:具有常見功能的函陣列,這些函陣列一起部署,并共享 API 網關等基礎結構資源,
我相信,隨著 Serverless 工具的發展,這些服務將變得更小更具體,并且涵蓋更廣泛的用例(例如,一個函式可用于部署和配置特定基礎結構,或執行負載測驗),隨著這些服務變得更小更具體,除原始開發人員以外的其他人也可以更容易地共享、配置和使用這些服務,
這最終將使我們步入一個新的時代:那時,公開和在組織內部私下共享、部署和復用微服務將變得十分容易,
這會大大降低我們重復作業的時間,使我們能夠更專注于獨特的功能和業務價值,
當前已有一些專案向這方面努力,例如 Standard Lib,未來這方面的發展值得期待!
簡化資料訪問
如今,所有數字業務都會產生和收集海量的資料,這些資料是非常寶貴的資源,尤其值得注意的是,我們可以使用這些資料來為用戶構建更強大的功能,

這種海量資料伴隨著一個問題:這些資料以各種不同的格式存放在各種不同的地方,難以得到利用,
事件驅動架構(Serverless 架構通常構建于該類架構之上)能夠以事件形式公開所有資料,而這些事件可以直接通過 Serverless 函式得到利用,
盡管這種通用架構模式還不成熟,但如果所有資料都能以事件的形式存在,且能夠通過托管在任意位置的函式進行處理,我們就能夠解決如今面臨的資料可移植性和訪問方面的諸多挑戰,
最終,我們的開發效率將顯著提高,
總結
對于開發人員來說,當下是一個激動人心的時代,我們很有可能會見證到我們目前可用的工具實作前所未有的根本改進,
我們每個人都有責任繼續追求并推動這一改變,
傳送門:
- GitHub: github.com/serverless
- 官網:serverless.com
歡迎訪問:Serverless 中文網,您可以在 最佳實踐 里體驗更多關于 Serverless 應用的開發!
推薦閱讀:《Serverless 架構:從原理、設計到專案實戰》
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/24835.html
標籤:其他
