API對(duì)于云計(jì)算服務(wù)來(lái)說(shuō)是很關(guān)鍵的,無(wú)論是公有云、私有云還是混合云。許多開(kāi)發(fā)者不慎重考慮他們開(kāi)發(fā)的API應(yīng)該如何工作,結(jié)果導(dǎo)致許多內(nèi)核很好的云服務(wù)不能提供很好地訪問(wèn)接口,有很多私有云、社區(qū)云和混合云的提供者都面臨著這樣的問(wèn)題。
任何云和云服務(wù)API都是不同的,它們之間缺乏標(biāo)準(zhǔn)和統(tǒng)一的方法已經(jīng)導(dǎo)致云計(jì)算的使用很混亂。結(jié)果是,徒然的云計(jì)算部署以及云管理者趕不上API的變化。
API的設(shè)計(jì)應(yīng)該是有目的性的、簡(jiǎn)單的。Damian Conway曾經(jīng)給出了一些很好的關(guān)于API設(shè)計(jì)的建議。
1. Do one thing really well.
2. Design by coding.
3. Evolve by subtraction.
4. Declarative trumps imperative.
5. Preserve the metadata.
6. Leverage the familiar.
7. The best code is no code at all.
將上面的觀點(diǎn)總結(jié)起來(lái)就是要注意一下三點(diǎn):
第一,簡(jiǎn)單最重要。許多API在設(shè)計(jì)時(shí)就面向一切事物,往往這樣高要求的設(shè)計(jì),使得API變得在實(shí)際應(yīng)用中一無(wú)是處。我的簡(jiǎn)單規(guī)則就是:如果猶豫不決的話,就打破他們??紤]一個(gè)更好的方法。
第二,考慮性能。這一點(diǎn)通常在設(shè)計(jì)完了之后才考慮到,API的性能不好似乎已經(jīng)成為一個(gè)很常見(jiàn)的問(wèn)題。這就要求在編碼的時(shí)候要盡可能的多做性能測(cè)試。
第三,顧全大局。API重要的是要能夠很好地相互通信和工作,因此他們需要有共同的數(shù)據(jù)結(jié)構(gòu)和使用模型。API不是獨(dú)立的,他們是系統(tǒng)的一部分。他們需要遵循相同的設(shè)計(jì)原則和支撐基礎(chǔ)架構(gòu),包括管理方法、安全性和數(shù)據(jù)等等。