由于云服務(wù)提供商(如AWS、微軟和谷歌等)的激增,云原生已經(jīng)成為嵌入到現(xiàn)代應(yīng)用程序開發(fā)中的一個重要概念。簡而言之,云原生應(yīng)用程序就是為云構(gòu)建的應(yīng)用程序。
云原生應(yīng)用程序是基于云計(jì)算基礎(chǔ)設(shè)施設(shè)計(jì)的,云計(jì)算本身的應(yīng)用程序開發(fā)并不是圍繞內(nèi)部服務(wù)器、數(shù)據(jù)庫、連接等建立,而是依賴抽象出硬件和維護(hù)的服務(wù),在某些情況下還包括操作系統(tǒng)本身,因此開發(fā)人員可以專注于真正重要的產(chǎn)品。
這些抽象雖然對保持團(tuán)隊(duì)和基礎(chǔ)設(shè)施的可管理性非常好,但與標(biāo)準(zhǔn)的裸機(jī)和虛擬化解決方案相比,還有降低成本的空間:更少的開銷意味著更低的風(fēng)險(xiǎn)、更少的資源和更少的人員。但是,云原生應(yīng)用程序開發(fā)帶來了不同的挑戰(zhàn),最常見的是將所有輕量級基礎(chǔ)設(shè)施捆綁在一起。
首先,API優(yōu)先原則在傳統(tǒng)的應(yīng)用程序開發(fā)中,產(chǎn)品是圍繞代碼直接訪問所需資源的理解而構(gòu)建的。這導(dǎo)致了一個龐大的代碼庫,且非常難解耦。雖然云計(jì)算不再是像這樣運(yùn)行單一應(yīng)用程序的任務(wù),但它可能難以實(shí)現(xiàn)這種簡化、可擴(kuò)展和分布式基礎(chǔ)設(shè)施的優(yōu)勢。
這是API優(yōu)先開發(fā)可以作出的最大的改變。對不熟悉API的人來說,優(yōu)先開發(fā)API是在設(shè)計(jì)、記錄和構(gòu)建應(yīng)用程序的API之前進(jìn)行的。這意味著,在打開移動應(yīng)用程序、網(wǎng)站、Alexa技術(shù)或物聯(lián)網(wǎng)設(shè)備之前,API必須先存在。API優(yōu)先開發(fā)的優(yōu)勢在于它將業(yè)務(wù)邏輯從客戶端隔離并統(tǒng)一起來,同時為產(chǎn)品的工作方式建立單一的來源。
但在其他任何東西之前構(gòu)建API可能會感覺不可接受的限制,幸運(yùn)的是,得益于API文檔標(biāo)準(zhǔn)(如API Blueprint),可以創(chuàng)建一個完全符合文檔的模擬API服務(wù)器,允許您在API本身完成之前針對實(shí)際服務(wù)構(gòu)建和測試API集成。
優(yōu)先開發(fā)API的最大優(yōu)勢在于不是讓你避免重復(fù)開發(fā)或提供可靠的接口來處理業(yè)務(wù)邏輯,如果API優(yōu)先的原則每次都沒有意義,則完全可以放棄這一原則,而不會影響應(yīng)用程序的開發(fā)進(jìn)程。另一方面,如果在開發(fā)云原生應(yīng)用程序不堅(jiān)持API優(yōu)先的原則,可能會一腳踩進(jìn)技術(shù)的坑,需要數(shù)月的時間才能完成應(yīng)用開發(fā)。
使其無服務(wù)(Serverless)從表面上看,API優(yōu)先開發(fā)和云原生應(yīng)用程序開發(fā)不是相互排斥的。用戶可以構(gòu)建不帶API的云原生應(yīng)用程序,并且可以在不使用云的情況下構(gòu)建一個API優(yōu)先的應(yīng)用程序,這兩個概念完美協(xié)調(diào)的地方是在無服務(wù)器環(huán)境中。
在無服務(wù)器環(huán)境中,用戶不必處理服務(wù)器的環(huán)境,這意味著與其開發(fā)應(yīng)用程序或API作為服務(wù)在服務(wù)器上運(yùn)行,還不如將應(yīng)用程序抽象為運(yùn)行在指定運(yùn)行時的單個函數(shù),這是應(yīng)用程序開發(fā)中最高級別的抽象層次之一。
通過在API優(yōu)先開發(fā)策略中構(gòu)建無服務(wù)器API而不是傳統(tǒng)的代表性狀態(tài)轉(zhuǎn)移API,用戶可以充分利用任何云提供商提供的資源。當(dāng)用戶通過API把每個單獨(dú)的方式變成有效的微服務(wù)時,最終的結(jié)果就是形成了一個廣泛分布、無限擴(kuò)展且高度可靠的應(yīng)用程序后臺,可以處理任何事情。
開發(fā)一個應(yīng)用程序首先應(yīng)該回答三個問題:What、Where、Why,而不是How,云原生應(yīng)用程序開發(fā)使得用戶通過盡可能少的成本支出來處理這種情況,而API優(yōu)先的原則能夠?yàn)橛脩籼峁┗卮餡here和Why的工具,這是API優(yōu)先的云原生應(yīng)用程序開發(fā)的真正意義。