我們可以推斷,亞馬遜的一些成功是來來自于其首席執(zhí)行官杰夫?貝佐斯十年前宣布的API策略。
你是否在內(nèi)部使用API?在2003年工員通知中,亞馬遜CEO杰夫?貝索斯發(fā)布這些逐客令(亞馬遜一名前雇員回憶,因其簡潔性,作了修改): 所有團(tuán)隊(duì)從此要通過服務(wù)接口發(fā)布他們的數(shù)據(jù)和功能 團(tuán)隊(duì)之間必須使用這些接口進(jìn)行溝通。
不允許其它的進(jìn)程通信。唯一允許的通信是使用網(wǎng)絡(luò)中調(diào)用的服務(wù)接口。
所有服務(wù)接口,沒有意外的話,必須從頭開始設(shè)計(jì)并外部化。也就是說,團(tuán)隊(duì)必須計(jì)劃并設(shè)計(jì)能夠向外部世 開發(fā)人員公開的接口,無一例外。
十年前,亞馬遜就已經(jīng)是一家龐大的公司,市值為72億美元。截至2014年1月,這一數(shù)字增加到1830億美元。當(dāng)然,并非所有的成功都要?dú)w于公共API。然而,API是亞馬遜在基礎(chǔ)設(shè)施和云服務(wù)領(lǐng)域占有統(tǒng)治地位的基礎(chǔ)。
開發(fā)API策略的考慮因素
如果其它公司的CEO復(fù)制、粘貼了貝佐斯的模式,是否也能在十年內(nèi)增長25倍?很不幸不會(huì)的,但確有幾個(gè)問題需要思考,什么時(shí)候起草API策略。
第一件需要了解的事情是,API策略并不是必要的產(chǎn)品策略。雖然亞馬遜最終能夠利用它龐大的基礎(chǔ)設(shè)施做為新收入來源的基礎(chǔ),他們最初的目的是使公司在高速發(fā)展中構(gòu)建的系統(tǒng)更具有可伸縮性和可維護(hù)性。貝佐斯只在最后一條中談到了服務(wù)必須要擴(kuò)展。明顯的迫切需要是減少架構(gòu)復(fù)雜性和集成黑客。教訓(xùn)是,在關(guān)注外部API使用前,把內(nèi)部API使用做為首要任務(wù)。換句話說,吃你自己的狗糧。
看這一問題的另一種方法是,認(rèn)識(shí)到大多數(shù)面向外部API補(bǔ)充或支持現(xiàn)有的應(yīng)用程序。Ebay的為了散裝產(chǎn)品清單的API,和Netflix的電影發(fā)現(xiàn)API(可悲的是,在計(jì)劃退出)是兩主要的例子。他們擴(kuò)展了服務(wù)的主要功能,而不是暴露根本性的新產(chǎn)品。
在亞馬遜的進(jìn)一步對比中,我認(rèn)識(shí)到大多數(shù)公司不是初創(chuàng)企業(yè)。這些公司已經(jīng)有了成熟的商業(yè)模式,這可能是由在一個(gè)漫長的時(shí)期建立的數(shù)百或數(shù)千個(gè)應(yīng)用程序支持的。
決定把資源轉(zhuǎn)移到一個(gè)基于服務(wù)的架構(gòu)上,將造成巨大的時(shí)間和成本影響。讓所有服務(wù)外部化的概念并不是對所有行業(yè)都現(xiàn)實(shí)。安全與保密性因素正篡奪公共API的概念。
如果組織已經(jīng)有大量的應(yīng)用要維護(hù),并有某些專有或機(jī)密數(shù)據(jù)要保護(hù),那么關(guān)于API的當(dāng)前討論是否應(yīng)該忽略?是的,但只有當(dāng)重新發(fā)明輪子、開發(fā)脆弱集成和不必要的拖延開發(fā)時(shí)間時(shí)。
公司不會(huì)全體都重新設(shè)計(jì)其整個(gè)應(yīng)用投資組合,但當(dāng)一個(gè)系統(tǒng)需要修正或改進(jìn)時(shí),把這作為一個(gè)機(jī)會(huì),問問下面的問題: 信息是否暴露了其它地方面可用的數(shù)據(jù)的復(fù)本/子集/父集?是否具有規(guī)范的系統(tǒng)記錄?如果有,是否有辦法公開這些信息,以一種更普遍的、更安全,同時(shí)可能會(huì)簡化內(nèi)部環(huán)境的方法?可能沒有立即消化的欲望,但如果沒有現(xiàn)成的API,就沒有人會(huì)采用。
系統(tǒng)是否滿足了客戶信息的需求?如果人們把數(shù)據(jù)與其它來源的信息結(jié)合,那么應(yīng)用程序可能就是“轉(zhuǎn)椅”集成的一個(gè)附件。減少工作和潛在的人為錯(cuò)誤足以證明需要?jiǎng)?chuàng)建新的API。
客戶是如何消化數(shù)據(jù)的?應(yīng)用程序可能有一個(gè)胖或瘦客戶機(jī)、轉(zhuǎn)儲(chǔ)數(shù)據(jù)到數(shù)據(jù)庫,或創(chuàng)建文件后由不同的系統(tǒng)傳輸和解析。這是否將創(chuàng)建出基礎(chǔ)設(shè)施或協(xié)議的依賴?它是否限制了靈活性?信息是否可以用更易訪問,從而促進(jìn)快速原型的創(chuàng)建?
API是最近受到了很多的關(guān)注,這是一件好事。API本身并不總是最終產(chǎn)品。最先成為內(nèi)部消化者,即吃自己的狗糧,可能并不會(huì)使用公司成為下一個(gè)亞馬遜,但卻可以幫助減少風(fēng)險(xiǎn)和復(fù)雜性。這把公司放到了一個(gè)有利的位置,應(yīng)該決定把基礎(chǔ)設(shè)施暴露的部分外部化。