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