企业内部的API
也許還有很多人不太了解API,簡單來說,API就是實(shí)現(xiàn)兩個網(wǎng)站或者數(shù)據(jù)庫之間通過互聯(lián)網(wǎng)通訊的接口代碼。例如,一家在線電影租賃網(wǎng)站希望與Facebook合作,讓你的Facebook好友能隨時知道你瀏覽過的影片。而在沒有API的時代,實(shí)現(xiàn)這個功能需要在線電影租賃網(wǎng)站把你每天瀏覽過的電影制成列表,通過Excel文件格式發(fā)給Facebook??梢韵胂?#xff0c;這個過程是多么緩慢且容易出錯。有了API,在線電影租賃網(wǎng)站就能將這個流程完全自動化,在核實(shí)Facebook的對應(yīng)帳號后,網(wǎng)站的API就能向Facebook實(shí)時發(fā)送他們感興趣的賬戶相關(guān)數(shù)據(jù)。
如今API在企業(yè)內(nèi)部也得到大量普及,尤其是部分公司隨著業(yè)務(wù)的發(fā)展,規(guī)模會日益擴(kuò)大,公司的業(yè)務(wù)也會越來越豐富,公司內(nèi)部的部門也會越來越多,不同的業(yè)務(wù)將會由不同的部門來負(fù)責(zé),每個部門都有自己的一畝三分地。同時,公司的每個部門或多或少會將一些能力對外開放,然而這些能力都會以API的形式提供給外部。
截止到目前,軟件行業(yè)普及“API”也已經(jīng)有幾年了,“API”通常指的是作為技術(shù)服務(wù)公開給開發(fā)人員使用的業(yè)務(wù)功能。與以前通常由企業(yè)架構(gòu)團(tuán)隊來制定正規(guī)的IT架構(gòu)和SOA治理實(shí)踐驅(qū)動的繁重任務(wù)相比,更靈活、輕量地使用API來提供業(yè)務(wù)能力是一個巨大的理念躍遷。
2009年,Gartner集團(tuán)的Anne Thomas-Manes高調(diào)的宣稱“SOA已死”,盡管在市場上表現(xiàn)的形式有所不同,但實(shí)際上SOA仍非?;钴S?,F(xiàn)在回顧這一歷程才發(fā)現(xiàn),我們已經(jīng)完成了一個輪回,API正在迅速成為企業(yè)實(shí)現(xiàn)SOA優(yōu)勢的一種方式。
幾年前,行業(yè)的大部分人認(rèn)為API只是Web服務(wù)的別稱,因此提出了各種關(guān)于REST與SOAP,JSON與XML等的爭論。如今,這種說法已被人們廣泛接受,開發(fā)者不再注重協(xié)議的特殊性,而是更關(guān)注API如何滿足廣泛業(yè)務(wù)的需求。雖然最初使用術(shù)語“API”意味著RESTful服務(wù),但在過去幾年中,實(shí)用主義已經(jīng)勝過純粹主義,因此盡管大多數(shù)API使用HTTP作為傳輸,但純粹的RESTful服務(wù)只占小部分。大多數(shù)人現(xiàn)在都接受 “API”可以指代多種協(xié)議,例如HTTP、AMQP、JMS上的服務(wù),這些協(xié)議具有廣泛的交換模式(RESTful,RPC,同步,異步)以及廣泛的內(nèi)容形式,最常見的仍然是JSON,XML和特定的XML變體,如SOAP,Accord,HL7等。
不過,API除了是服務(wù)的一項別稱之外,更是一種技術(shù)立場。不同類型的服務(wù)之間存在一定的區(qū)別,可以將服務(wù)分成三個部分(也許未來會更多):
1.SOA服務(wù)(通常是SOAP):以提供者為中心,通常以“如果我構(gòu)建它,它就會出現(xiàn)”的思路進(jìn)行,目的就是通過促進(jìn)資產(chǎn)重用來減少IT開銷;
2.APIs (通常是REST/JSON):以消費(fèi)者為中心,通常以產(chǎn)品管理方法驅(qū)動,目標(biāo)是通過與合作伙伴及外部開發(fā)人員共享業(yè)務(wù)功能以驅(qū)動新的業(yè)務(wù)機(jī)會;
3.微服務(wù):以應(yīng)用程序為中心,以大規(guī)模可伸縮且完全獨(dú)立的方式為應(yīng)用程序賦予特定的功能。馬丁?福勒(Martin Fowler)和詹姆斯?劉易斯(James Lewis)在其文章中就對此進(jìn)行了很好的解釋。
實(shí)際上,沒有任何證據(jù)能夠證明在技術(shù)層面上,這三個“定義”指的是服務(wù)的這一種或者另一種,雖然有一些特定的要求可能導(dǎo)致一種技術(shù)成為實(shí)現(xiàn)某一種定義服務(wù)的常用方法,但是任何服務(wù)都可以通過可用的技術(shù)實(shí)現(xiàn)。
我們再次回到本文的主題:企業(yè)內(nèi)部的API。如今,我們可以看到一些公司采用了一些概念和技術(shù),這些概念和技術(shù)使得API作為企業(yè)內(nèi)的業(yè)務(wù)構(gòu)造非常流行。
觀察這種趨勢最好的方法就是,檢查舊式SOA計劃進(jìn)展中的成功與不足的方面,并查看以消費(fèi)者為中心的技術(shù)和思想的應(yīng)用程序是如何改進(jìn)這些方面?,F(xiàn)在,讓我們再了解一下企業(yè)為什么希望在其內(nèi)部使用API。換句話說,讓我們重溫一下SOA背后一些令人激動的元素,這一次采用更現(xiàn)代的實(shí)現(xiàn)方法:
1)成本和時間效率
公司的IT部門開展SOA活動的主要原因之一是,通過提供應(yīng)用程序團(tuán)隊可以利用的共享資產(chǎn)(業(yè)務(wù)服務(wù))庫,最大限度的減少一些重復(fù)工作,避免不斷重新發(fā)明輪子。 但是SOA批評者經(jīng)常指出這些計劃未能真正起到重用,特別是與實(shí)現(xiàn)這些計劃的重要流程和基礎(chǔ)架構(gòu)相比。SOA計劃沒有兌現(xiàn)承諾的原因有很多,部分與技術(shù)有關(guān),但無論成敗結(jié)果如何,通過良好管理的重用程序以實(shí)現(xiàn)節(jié)省成本和時間的承諾不容忽視。
也許通過將以現(xiàn)代消費(fèi)者和應(yīng)用程序為中心的概念與IT驅(qū)動的以提供商為中心的理念相結(jié)合,公司就可以有意識地挖掘這一潛力,通過使用現(xiàn)有服務(wù)而不是每次從頭開始構(gòu)建所有內(nèi)容,使新的應(yīng)用程序開發(fā)更快、更便宜。
2)數(shù)據(jù)的一致性
每當(dāng)開發(fā)人員在不同的應(yīng)用程序中構(gòu)建相同的功能時,都有得到不同結(jié)果的風(fēng)險。舉一個簡單且很常見的客戶數(shù)據(jù)庫示例:每家公司至少有一個管理所有客戶的數(shù)據(jù)庫,但每次出現(xiàn)新的應(yīng)用程序時,設(shè)計師都認(rèn)為現(xiàn)有的客戶數(shù)據(jù)庫不適合他們的需要,所以他們會建立一個新的數(shù)據(jù)庫,有時會嘗試同步數(shù)據(jù),有時會從頭開始。如果可以輕松擴(kuò)展數(shù)據(jù)事實(shí)來源以滿足新應(yīng)用程序的要求,公司就只需在一個位置不斷更新數(shù)據(jù),客戶便可以輕松地訪問并合并信息。
這里的挑戰(zhàn)有兩個方面:
1.說服新的應(yīng)用程序開發(fā)人員,告訴他們現(xiàn)有的服務(wù)足以滿足需求;
2.足夠迅速地擴(kuò)展現(xiàn)有服務(wù)以滿足不斷變化的需求
3)應(yīng)用程序組合合理化
技術(shù)可能會過時,但永遠(yuǎn)不會消失。大型機(jī)就是一個典型的例子,在接近千年蟲的幾個月里,我們都相信將見證大型機(jī)的終結(jié),然而奇怪的是現(xiàn)在幾乎每個大型企業(yè)在大型機(jī)上的花費(fèi)都與上世紀(jì)90年代持平,甚至更多。
部分原因是替換舊的應(yīng)用程序會比較困難。系統(tǒng)開始依賴它們,并使用高度專有的機(jī)制與它們集成,因此再很難替換核心系統(tǒng)。ESB(企業(yè)服務(wù)總線)背后的最初意圖就是通過在消費(fèi)應(yīng)用程序和后端應(yīng)用程序之間放置一個服務(wù)層來抽象后端實(shí)現(xiàn)。盡管與許多SOA計劃一樣,ESB在操作和管理上變得過于復(fù)雜,并且成為遺留系統(tǒng),就像它們被設(shè)計成為抽象的后端應(yīng)用程序一樣。
我們現(xiàn)在看到的結(jié)果是,更多的后端系統(tǒng)正在呈現(xiàn)基于標(biāo)準(zhǔn)的接口(服務(wù)),這些接口可以很容易地被現(xiàn)代應(yīng)用程序使用,從而減少了直接依賴關(guān)系,使得替換(或至少使原始應(yīng)用程序現(xiàn)代化)變得更容易。這其中的奧秘就是讓開發(fā)人員更容易的使用這些服務(wù),而不是直接與后端集成。
4)治理
關(guān)于“治理”就變得有些棘手了。許多開發(fā)人員和架構(gòu)師在聽到“治理”這個詞時都會感到害怕,但是對于企業(yè)架構(gòu)師和CIO來說,治理卻有很多價值。治理變得失控是一件糟糕的事情,它使得所有的SOA活動都失敗,如何有效的治理程序決定著成功和失敗,其核心就是有效的治理程序可以幫助大家構(gòu)建正確的服務(wù),并正確地運(yùn)行它們。
治理不僅適用于SOA計劃,也同樣適用于API計劃。隨著企業(yè)開始使用API,就必須要確保正確地管理API擴(kuò)散。在外部API活動中,公司讓產(chǎn)品經(jīng)理負(fù)責(zé)他們的API,并為新的API構(gòu)建以及對API的更改提供有效建議,這些原則同樣適用于企業(yè)內(nèi)部。
轉(zhuǎn)載于:https://juejin.im/post/5cffa208f265da1bd42476ef
總結(jié)
- 上一篇: Spark学习之路 (二十二)Spark
- 下一篇: CIKERS Shane 2019061