咱們軟件工具行業爲開發者提供的支持還很不到位,沒法幫助他們構建更好的軟件。git
儘管在過去 30 年中,咱們開發軟件的方式已經發生了巨大變化。就可用的技術和工具而言,咱們確實已經取得了巨大進步。github
但這些發展對開發者的生產效率實際上有什麼做用呢?
使構建軟件變得更容易了嗎?
更便宜了嗎?
更迅速了嗎?數組
在過去 6 年的職業生涯中,我一直在嘗試構建能提升開發者生產效率的工具(先是在一家初創公司,後來在 CircleCI,現在在 Serverless)。在尋找這些問題答案的過程當中,我發現答案基本上是 否認 的。服務器
雖然既有的一些工具確實有助於咱們開發更強大的軟件,但它們只是在漸進式地提升生產效率。做爲一個行業,咱們仍然面臨着一樣的基本問題:軟件開發極其困難,成本高昂。架構
一個典型的例子就是「雲」。「雲」的一個重要特色是讓其餘人管理咱們的服務器,而讓開發人員可以更加專一於代碼。less
這是一個很是好的想法。正是因爲該價值主張,過去十年間涌現了大量的雲服務,而 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 應用的開發!