它來了!它來了!它帶著第四代應用程序模型來啦!



  我在微軟最先看到了前兩代應用程序模型的轉變。早期的大型機和微型計算機系統是一體式的,數據存儲、應用程序代碼和終端服務都在一個機箱裡。20世紀80年代出現了微處理器和以太網,使得成本較低的計算機能夠在局域網上協同工作和通信。PC和Unix工作站開始連接到服務器,在業務應用程序上採用了一種新的多機器、客戶端-服務器編程模型。客戶端-服務器應用程序出現時,圖形用戶界面與後端SQL數據庫(通常是Oracle數據庫或者SQL服務器)結合在了一起。

  客戶端-服務器應用程序的構建與單片應用程序的構建完全不同,呈現代碼運行在客戶端計算機上,業務邏輯在服務器上運行,通常封裝在SQL存儲過程中:

  30多年前,我在開發我的第一款微軟產品Ashton Tate/Microsoft OS/2 SQL Server時,就目睹了客戶端-服務器之旅的開始。

  客戶端-服務器應用程序的蓬勃發展雖然只持續了很短的一段時間,但它們創造了新一代易於使用的圖形化應用程序,第一次為成千上萬的小型企業提供了計算能力。調用SQL Server存儲過程的Visual Basic客戶端的組合應用程序構建了微軟服務器業務,並創建了一個由軟件供應商和增值分銷商組成的整個行業。雖然客戶端-服務器這種老方法已經存在20多年了,但很多企業仍在繼續運行這些相同的客戶端-服務器應用程序的更新版本。


  客戶端-服務器由於互聯網和網絡的出現而成為一種老模型。客戶端-服務器應用程序是針對局域網而構建的,使用的是適用於在局域網中工作但不適合互聯網要求的遠距離工作的專用會話協議。

   互聯網和三層應用

  1995年春天,比爾·蓋茨以他著名的“互聯網浪潮備忘錄”將微軟的業務重心轉移到了互聯網上。當時,我正在運行WindowsNT Program Management,所以我參加了很多“Billg互聯網規劃”會議。這是微軟動盪時期的開始,我目睹並參與了所有一切——有好的,壞的,也有醜陋的。和微軟一起,我從互聯網的經歷和隨之而來的反壟斷事件中得到了很多經驗教訓。其中最重要的一點是,技術革命怎樣為所有人創造新的雙贏機會。

  全球互聯網革命帶來了新一代開放標準協議和格式。這些新技術需要不同的基礎設施。最初,簡單的Web服務器提供靜態網站。但商業和其他應用程序迅速推動了一種新的三層應用程序模型的出現:

  三層應用程序模型將使用互聯網協議的Web服務器與用於事務邏輯和數據庫的應用服務器結合在了一起。數據庫、應用服務器和Web服務器位於一個數據中心或者雲區域內。它們一起創建完整的網頁,然後將其呈現在客戶端的瀏覽器中。實際上,客戶端JavaScript通常提供本地客戶端的交互,至少會用於字段驗證。隨著時間的推移,本地瀏覽器的交互水平不斷提高,JavaScript推動了關鍵的行業標準,例如用於遠程API的REST和用於數據格式的JSON。


  與客戶端-服務器不同,三層應用程序模型已經過時了,現在除了網頁外,還用於提供API服務。基於REST標準API接口的發展使得複雜的業務邏輯能夠封裝在全局可用的服務中,任何具有一定安全憑證的應用程序都可以調用這些服務。三層應用程序模型通常用於提供REST API服務。

   無服務器API海洋中的瀏覽器

  當服務以API的形式交付、在雲中自動擴展並根據使用情況進行定價時,它們被稱為無服務器服務。使用無服務器服務,客戶不需要管理服務器基礎設施。無服務器服務可用於任何地方的任何經過一定身份驗證的設備,而且是根據相關的使用指標來計費的。

  今天,我們發現自己身處一個有著各種功能強大的移動和便攜式計算設備的互聯世界中。所有這些設備現在都支持兼容的瀏覽器,這些瀏覽器提供的最終用戶體驗接近甚至在某些方面超過了該設備上本機應用程序的用戶體驗質量。Google Docs就是一個例子,它使用瀏覽器來提供跨設備的無縫協作體驗。

  與此同時,新的SaaS應用正在被重新設想為與互聯網兼容的一套完整的API,它們採用基於使用情況的定價方式來提供不斷擴展的各種不同服務。支付、內容管理、物流、訂單管理、3D打印等等,只要你能想到的,都在成為可以從任何地方(其他服務器、移動應用程序和瀏覽器)調用的API。雲通過支持無服務器計算加速了這種應用,而像Stripe、Twilio和Algolia這樣的新技術公司成為這類基於使用情況新服務的領導者。


  經過長時間的發展,瀏覽器已經成為無處不在的可編程的客戶端,存在於由無服務器API組成的全球互聯世界中。無處不在的客戶端與大量無服務器API相結合,使新的客戶端-無服務器應用程序模型得以實現:

  在客戶端-無服務器模型中,最終用戶應用在客戶端上運行,並調用各種各樣的服務。客戶端處理呈現,而業務邏輯封裝在可調用服務中。本機iOS和Android應用便是客戶端-無服務器的例子,瀏覽器是其關鍵所在,而Jamstack正在迅速發展。隨著客戶端-無服務器的成熟,它將逐漸支持任何規模和複雜度的消費類和業務應用程序。

  客戶端-無服務器還適用於編排業務流程的服務器和微服務。在這種情況下,服務器應用程序或者工作流引擎充當使用無服務器API調用遠程服務的客戶端。

   Jamstack和客戶端-無服務器數據庫

  Jamstack中的JAM代表JavaScript、API和標記。在Jamstack應用程序中,瀏覽器標記是靜態HTML,很容易從附近的CDN進行訪問。應用程序在瀏覽器中由JavaScript實例化,而呈現邏輯作為JavaScript瀏覽器應用程序運行。客戶端應用程序調用遠程服務API。Jamstack為任何地方的任何客戶端提供了非常好的體驗,實現了高效的開發人員工作流程。


  Jamstack方法支持開發功能非常強大的客戶端應用程序。與所有應用程序一樣,Jamstack客戶端-無服務器應用程序創建的數據要求提供安全、可靠、業務一致的數據庫存儲。但與三層架構不同,Jamstack應用需要可以在互聯網上任何地方使用的安全數據庫。現有的SQL和NoSQL數據庫都位於應用服務器後面,因此Jamstack客戶端應用不能直接訪問它們。現有的數據庫都不能滿足新一代無服務器-客戶端應用程序的要求。

  Jamstack需要為客戶端-無服務器環境而構建的數據庫。在無服務器API的海洋中,Jamstack需要的是無服務器數據API。

  Fauna不同於其他數據庫。Fauna旨在為任何客戶端提供可隨時隨地訪問的安全數據庫服務。它具有嚴格的順序一致性,這種最高級別的業務一致性保證了應用程序的正確,並且它使用一種受最先進的Calvin算法啟發的協議,以一種全局性的、無處不在服務的形式來提供這種一致性。與客戶端-服務器存儲過程類似,使用Fauna的業務會話過程由數據庫中的用戶定義函數執行。Fauna UDF取代了存儲過程,雖然Fauna是一個關係數據庫,但它不使用SQL。相反,它公開了適合JavaScript開發人員的靈活的文檔模型,並使用業界標準GraphQL API高效地返回數據。

  無服務器API為當今應用程序開發人員創造了新的可能。正在對其當前系統進行現代化改造的企業,以及那些構建全新的客戶端-無服務器應用程序的企業都將受益於這種可能。例如,Nextdoor和Hannon Hill等Fauna客戶正在使用無服務器後端來擴展其現有的基礎設施,以實現全球覆蓋。像Matter Supply和Bejamas這樣的精品工作室,以及Faros這樣的初創公司,都在利用無服務器、Jamstack和Fauna生態系統來打造全新的體驗。


  應用程序體系結構的每一次革命都催生了一種新數據庫,使開發人員能夠開發出以前不可能實現的應用程序。我很高興能幫助Fauna團隊交付為客戶端-無服務器環境構建的數據庫。Fauna是客戶端-無服務器應用程序的數據API。

  我們剛剛開始進入一個客戶端-無服務器應用程序的新世界,在這一新世界中,服務無處不在而且可隨時訪問。正如客戶端-服務器和三層體系結構那樣,客戶端-無服務器應用程序模型將為業界每一類客戶和供應商創造巨大的機會,當然也可能是顛覆。新一代開發人員正在藉助Jamstack引領潮流。

作者:Bob Muglia是一位業務主管和研發專家。從2014年5月開始,他擔任Snowflake公司首席執行官長達5年。在加入Snowflake公司之前,他在瞻博網絡工作了2年,在微軟工作了23年。在其職業生涯的早期,Bob幫助啟動了SQL Server業務,並管理過包括Visual Studio, Office和Windows Server在內的微軟部門。從2007年到2011年,Bob擔任服務器和工具部門的總裁,在他的管理下,業務增長至170億美元以上。
編譯:Charles
原文網址:https://www.infoworld.com/article/3564264/client-serverless-is-the-4th-generation-application-model.html


分享到:


相關文章: