提問 | 它來了!它來了!它帶著第四代應(yīng)用程序模型來啦!

Bob Muglia
當服務(wù)以API的形式交付、在云中自動擴展并根據(jù)使用情況進行定價時,它們被稱為無服務(wù)器服務(wù)。使用無服務(wù)器服務(wù),客戶不需要管理服務(wù)器基礎(chǔ)設(shè)施。無服務(wù)器服務(wù)可用于任何地方的任何經(jīng)過一定身份驗證的設(shè)備,而且是根據(jù)相關(guān)的使用指標來計費的。

導(dǎo)語

應(yīng)用程序模型不會經(jīng)常改變,但一旦改變,就會創(chuàng)造出很多機會。

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

客戶端-服務(wù)器應(yīng)用程序的構(gòu)建與單片應(yīng)用程序的構(gòu)建完全不同,呈現(xiàn)代碼運行在客戶端計算機上,業(yè)務(wù)邏輯在服務(wù)器上運行,通常封裝在SQL存儲過程中:

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

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

客戶端-服務(wù)器由于互聯(lián)網(wǎng)和網(wǎng)絡(luò)的出現(xiàn)而成為一種老模型??蛻舳?服務(wù)器應(yīng)用程序是針對局域網(wǎng)而構(gòu)建的,使用的是適用于在局域網(wǎng)中工作但不適合互聯(lián)網(wǎng)要求的遠距離工作的專用會話協(xié)議。

互聯(lián)網(wǎng)和三層應(yīng)用

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

全球互聯(lián)網(wǎng)革命帶來了新一代開放標準協(xié)議和格式。這些新技術(shù)需要不同的基礎(chǔ)設(shè)施。最初,簡單的Web服務(wù)器提供靜態(tài)網(wǎng)站。但商業(yè)和其他應(yīng)用程序迅速推動了一種新的三層應(yīng)用程序模型的出現(xiàn):

三層應(yīng)用程序模型將使用互聯(lián)網(wǎng)協(xié)議的Web服務(wù)器與用于事務(wù)邏輯和數(shù)據(jù)庫的應(yīng)用服務(wù)器結(jié)合在了一起。數(shù)據(jù)庫、應(yīng)用服務(wù)器和Web服務(wù)器位于一個數(shù)據(jù)中心或者云區(qū)域內(nèi)。它們一起創(chuàng)建完整的網(wǎng)頁,然后將其呈現(xiàn)在客戶端的瀏覽器中。實際上,客戶端JavaScript通常提供本地客戶端的交互,至少會用于字段驗證。隨著時間的推移,本地瀏覽器的交互水平不斷提高,JavaScript推動了關(guān)鍵的行業(yè)標準,例如用于遠程API的REST和用于數(shù)據(jù)格式的JSON。

與客戶端-服務(wù)器不同,三層應(yīng)用程序模型已經(jīng)過時了,現(xiàn)在除了網(wǎng)頁外,還用于提供API服務(wù)。基于REST標準API接口的發(fā)展使得復(fù)雜的業(yè)務(wù)邏輯能夠封裝在全局可用的服務(wù)中,任何具有一定安全憑證的應(yīng)用程序都可以調(diào)用這些服務(wù)。三層應(yīng)用程序模型通常用于提供REST API服務(wù)。

無服務(wù)器API海洋中的瀏覽器

當服務(wù)以API的形式交付、在云中自動擴展并根據(jù)使用情況進行定價時,它們被稱為無服務(wù)器服務(wù)。使用無服務(wù)器服務(wù),客戶不需要管理服務(wù)器基礎(chǔ)設(shè)施。無服務(wù)器服務(wù)可用于任何地方的任何經(jīng)過一定身份驗證的設(shè)備,而且是根據(jù)相關(guān)的使用指標來計費的。

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

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

經(jīng)過長時間的發(fā)展,瀏覽器已經(jīng)成為無處不在的可編程的客戶端,存在于由無服務(wù)器API組成的全球互聯(lián)世界中。無處不在的客戶端與大量無服務(wù)器API相結(jié)合,使新的客戶端-無服務(wù)器應(yīng)用程序模型得以實現(xiàn):

在客戶端-無服務(wù)器模型中,最終用戶應(yīng)用在客戶端上運行,并調(diào)用各種各樣的服務(wù)??蛻舳颂幚沓尸F(xiàn),而業(yè)務(wù)邏輯封裝在可調(diào)用服務(wù)中。本機iOS和Android應(yīng)用便是客戶端-無服務(wù)器的例子,瀏覽器是其關(guān)鍵所在,而Jamstack正在迅速發(fā)展。隨著客戶端-無服務(wù)器的成熟,它將逐漸支持任何規(guī)模和復(fù)雜度的消費類和業(yè)務(wù)應(yīng)用程序。

客戶端-無服務(wù)器還適用于編排業(yè)務(wù)流程的服務(wù)器和微服務(wù)。在這種情況下,服務(wù)器應(yīng)用程序或者工作流引擎充當使用無服務(wù)器API調(diào)用遠程服務(wù)的客戶端。

Jamstack和客戶端-無服務(wù)器數(shù)據(jù)庫

Jamstack中的JAM代表JavaScript、API和標記。在Jamstack應(yīng)用程序中,瀏覽器標記是靜態(tài)HTML,很容易從附近的CDN進行訪問。應(yīng)用程序在瀏覽器中由JavaScript實例化,而呈現(xiàn)邏輯作為JavaScript瀏覽器應(yīng)用程序運行??蛻舳藨?yīng)用程序調(diào)用遠程服務(wù)API。Jamstack為任何地方的任何客戶端提供了非常好的體驗,實現(xiàn)了高效的開發(fā)人員工作流程。

Jamstack方法支持開發(fā)功能非常強大的客戶端應(yīng)用程序。與所有應(yīng)用程序一樣,Jamstack客戶端-無服務(wù)器應(yīng)用程序創(chuàng)建的數(shù)據(jù)要求提供安全、可靠、業(yè)務(wù)一致的數(shù)據(jù)庫存儲。但與三層架構(gòu)不同,Jamstack應(yīng)用需要可以在互聯(lián)網(wǎng)上任何地方使用的安全數(shù)據(jù)庫?,F(xiàn)有的SQL和NoSQL數(shù)據(jù)庫都位于應(yīng)用服務(wù)器后面,因此Jamstack客戶端應(yīng)用不能直接訪問它們?,F(xiàn)有的數(shù)據(jù)庫都不能滿足新一代無服務(wù)器-客戶端應(yīng)用程序的要求。

Jamstack需要為客戶端-無服務(wù)器環(huán)境而構(gòu)建的數(shù)據(jù)庫。在無服務(wù)器API的海洋中,Jamstack需要的是無服務(wù)器數(shù)據(jù)API。

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

無服務(wù)器API為當今應(yīng)用程序開發(fā)人員創(chuàng)造了新的可能。正在對其當前系統(tǒng)進行現(xiàn)代化改造的企業(yè),以及那些構(gòu)建全新的客戶端-無服務(wù)器應(yīng)用程序的企業(yè)都將受益于這種可能。例如,Nextdoor和Hannon Hill等Fauna客戶正在使用無服務(wù)器后端來擴展其現(xiàn)有的基礎(chǔ)設(shè)施,以實現(xiàn)全球覆蓋。像Matter Supply和Bejamas這樣的精品工作室,以及Faros這樣的初創(chuàng)公司,都在利用無服務(wù)器、Jamstack和Fauna生態(tài)系統(tǒng)來打造全新的體驗。

應(yīng)用程序體系結(jié)構(gòu)的每一次革命都催生了一種新數(shù)據(jù)庫,使開發(fā)人員能夠開發(fā)出以前不可能實現(xiàn)的應(yīng)用程序。我很高興能幫助Fauna團隊交付為客戶端-無服務(wù)器環(huán)境構(gòu)建的數(shù)據(jù)庫。Fauna是客戶端-無服務(wù)器應(yīng)用程序的數(shù)據(jù)API。

我們剛剛開始進入一個客戶端-無服務(wù)器應(yīng)用程序的新世界,在這一新世界中,服務(wù)無處不在而且可隨時訪問。正如客戶端-服務(wù)器和三層體系結(jié)構(gòu)那樣,客戶端-無服務(wù)器應(yīng)用程序模型將為業(yè)界每一類客戶和供應(yīng)商創(chuàng)造巨大的機會,當然也可能是顛覆。新一代開發(fā)人員正在借助Jamstack引領(lǐng)潮流。

作者:Bob Muglia是一位業(yè)務(wù)主管和研發(fā)專家。從2014年5月開始,他擔(dān)任Snowflake公司首席執(zhí)行官長達5年。在加入Snowflake公司之前,他在瞻博網(wǎng)絡(luò)工作了2年,在微軟工作了23年。在其職業(yè)生涯的早期,Bob幫助啟動了SQL Server業(yè)務(wù),并管理過包括Visual Studio, Office和Windows Server在內(nèi)的微軟部門。從2007年到2011年,Bob擔(dān)任服務(wù)器和工具部門的總裁,在他的管理下,業(yè)務(wù)增長至170億美元以上。

編譯:Charles

原文網(wǎng)址:https://www.infoworld.com/article/3564264/client-serverless-is-the-4th-generation-application-model.html

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論