微服务手册:API接口9个生命节点,构建全生命周期管理
互聯(lián)網(wǎng)應(yīng)用架構(gòu):專注編程教學(xué),架構(gòu),JAVA,Python,微服務(wù),機(jī)器學(xué)習(xí)等領(lǐng)域,歡迎關(guān)注,一起學(xué)習(xí)。
對(duì)于API,在日常的工作中是接觸最多的東西,特別是我們軟件這一行,基本就是家常便飯了,在百度百科里面的解釋:
API(Application Programming Interface,應(yīng)用程序接口)是一些預(yù)先定義的函數(shù),或指軟件系統(tǒng)不同組成部分銜接的約定。用來提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問的一組例程,而又無需訪問源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。
在不同系統(tǒng)之間,不同部門之間的各種對(duì)接,API就是研發(fā)人員的一個(gè)純粹性的溝通語言,雙方定義好規(guī)范、約束等進(jìn)行系統(tǒng)之間的交互。
生命周期
在我們軟件行業(yè)的領(lǐng)域里面,每一個(gè)軟件都是有生命周期的,從最開始的需求調(diào)研,需求設(shè)計(jì),架構(gòu)設(shè)計(jì),軟件研發(fā),測(cè)試,上線,試運(yùn)行,運(yùn)行到最后業(yè)務(wù)上,技術(shù)上跟不上時(shí)代的發(fā)展,被新來的技術(shù)人員嫌棄,后面的業(yè)務(wù)部門拋棄,至此開始結(jié)束最后到下線,這個(gè)系統(tǒng)就算結(jié)束了他們的生命周期。
API是一種應(yīng)該性接口同樣具備了設(shè)計(jì)化、測(cè)試化的過程,這就顯性表明API其實(shí)也作為有生命周期的存在,在現(xiàn)有的設(shè)計(jì)中,API生命周期分為9種
設(shè)計(jì)
構(gòu)建/研發(fā)
管理
聯(lián)調(diào)/測(cè)試
自動(dòng)化
文檔/發(fā)布
授權(quán)開放
監(jiān)控
下線
設(shè)計(jì)--見文知意
一個(gè)API的形成,設(shè)計(jì)是最根本的存在,因?yàn)樗拇嬖诓粏螁问亲约菏褂?,更重要的是讓多方可以使用,因此有一個(gè)規(guī)范的思想非常重要,這里有個(gè)方法論就是--見文知意。每次看到API都能知道這個(gè)API是做什么的,這是對(duì)開發(fā)者,使用者來說非常重要的一個(gè)方向,每一個(gè)API實(shí)際上對(duì)應(yīng)的一個(gè)后端服務(wù)的方法,必須有限定的出參與入?yún)?,其中出參與入?yún)⒈仨氂袊?yán)格的定義。
入?yún)ⅲ河幸粋€(gè)重要的準(zhǔn)則就是能快速進(jìn)行參數(shù)的基礎(chǔ)屬性的校驗(yàn),例如是否為空,字段長(zhǎng)度等,目前一般采用hibernate valid或者java自帶的valid來實(shí)現(xiàn)。
出參:出參的規(guī)范化體現(xiàn)在錯(cuò)誤碼上,針對(duì)錯(cuò)誤碼的定義需要非常明確,讓調(diào)用者可以一眼就能看到問題的所在,目前很多API接口在進(jìn)行設(shè)計(jì)的時(shí)候一般只有正確與錯(cuò)誤兩個(gè)錯(cuò)誤碼,平時(shí)用著沒問題,在業(yè)務(wù)發(fā)展到一定程度后會(huì)增加運(yùn)維的難度,建議錯(cuò)誤碼按照不同的類別,例如業(yè)務(wù)、技術(shù)等區(qū)分。
構(gòu)建/研發(fā)--防范于未然
在進(jìn)行了的第一步的規(guī)范化設(shè)計(jì)后,研發(fā)人員就要開始根據(jù)規(guī)范進(jìn)行API接口的內(nèi)部業(yè)務(wù)邏輯的設(shè)計(jì),具體的業(yè)務(wù)邏輯由業(yè)務(wù)邏輯來做限定,這里需要注意的就是非法參數(shù)盡可能排除的API之外,需要在入口處進(jìn)行判斷并且匯集不合法的數(shù)據(jù)直接報(bào)錯(cuò),不允許出現(xiàn)在后續(xù)的業(yè)務(wù)代碼邏輯里面去判斷合法性,如上面所說采用hibernate valid進(jìn)行操作,這些都是一個(gè)API生成的過程。
管理--運(yùn)籌帷幄
每一個(gè)API的誕生到最后的下線它都是可控可管理的。
版本管理:每一個(gè)API從最開始發(fā)布到后面不斷迭代發(fā)布更新,都需要一個(gè)版本號(hào)來做限定,做到每一個(gè)版本可查可追溯。
文檔管理:API里面文檔是非常重要的存在,它是連接所有應(yīng)用的橋梁里面的中流砥柱,一份清晰可見的文檔是所有使用者的福報(bào)。在研發(fā)人員的世界中,最喜歡寫代碼,最痛苦寫文檔,但是如果把寫代碼變成一種寫代碼的方式呢,swagger可以幫你實(shí)現(xiàn)本地化文檔也可以實(shí)現(xiàn)離線文檔,還是直接導(dǎo)入到y(tǒng)api進(jìn)行mock測(cè)試。
質(zhì)量審核:API并非寫完就完事,如果只是簡(jiǎn)簡(jiǎn)單單搞定并不按照規(guī)范走,入?yún)ap加上出參map的存在,那就要扯皮來,因此需要一個(gè)人來審核這些才能允許上線。
狀態(tài)碼管理:由于狀態(tài)碼是最常見的存在,因此它是微乎其微但是又是非常重要的東西,定義業(yè)務(wù)級(jí)別的狀態(tài)碼,定義系統(tǒng)級(jí)別的狀態(tài)碼,這些都需要進(jìn)行管控起來。
迭代管理:迭代跟上面的版本有異曲同工之妙,版本更著重于版本號(hào)的定義及生成,迭代更側(cè)重于每一次迭代的跟進(jìn)管理,等價(jià)于每一次的歷史記錄。
權(quán)限管理:API并非任何人都可以用的,需要進(jìn)行授權(quán)。
服務(wù)管理:一個(gè)服務(wù)提供多個(gè)API,存在數(shù)據(jù)庫級(jí)別的1對(duì)N關(guān)系,需要這些進(jìn)行分配及管理。
變更管理:API并非一成不變的,除了版本號(hào)的變更,經(jīng)常涉及到里面的內(nèi)容的管理,這些內(nèi)容需要做記錄及對(duì)比。
聯(lián)調(diào)/測(cè)試--微察秋毫
一個(gè)好的API除了規(guī)范設(shè)計(jì)清晰及業(yè)務(wù)邏輯清晰,更重要的是一定也是便于測(cè)試的,對(duì)應(yīng)的業(yè)務(wù)是否能完成,對(duì)應(yīng)的系統(tǒng)對(duì)接是否有足夠集成,是否提供了足夠的詳細(xì)的文檔,確保了API的質(zhì)量是有非常高的維護(hù)性的,這些通通在測(cè)試層進(jìn)行驗(yàn)證,本地化測(cè)試,MOCK測(cè)試,測(cè)試用例盡可能完整。
自動(dòng)化--進(jìn)退有度
相比于上面的人工測(cè)試,自動(dòng)化測(cè)試是標(biāo)準(zhǔn)化的一種設(shè)計(jì)。按照約定設(shè)定好一定的標(biāo)準(zhǔn)閾值對(duì)接口進(jìn)行測(cè)試,檢驗(yàn)接口是否滿足我們最基礎(chǔ)的性能等要求,但是自動(dòng)化測(cè)試并不是萬能的,何時(shí)介入,怎么介入,什么樣的項(xiàng)目適合自動(dòng)化測(cè)試,這些都需要我們進(jìn)行思考。
何時(shí)介入:在項(xiàng)目的剛開始的時(shí)候不適合自動(dòng)測(cè)試的介入,業(yè)務(wù)穩(wěn)定性,需求變更快導(dǎo)致接口隨時(shí)隨地都在變化,代碼變動(dòng)率非常高,維護(hù)成本非常高;到了后期后項(xiàng)目穩(wěn)定了項(xiàng)目進(jìn)入維護(hù)階段,此時(shí)自動(dòng)化開始介入并為回歸測(cè)試做好準(zhǔn)備。
怎么介入:從自動(dòng)化程度及自動(dòng)化率來做切入點(diǎn),雖然前期的項(xiàng)目并不適合做自動(dòng)化測(cè)試,但是可以選用一些穩(wěn)定的,公用的進(jìn)行測(cè)試。
適合項(xiàng)目:有意做回歸測(cè)試,并且需要長(zhǎng)期做支持維護(hù)的項(xiàng)目;壓力測(cè)試的項(xiàng)目;覆蓋率測(cè)試的項(xiàng)目。
文檔/發(fā)布--十年磨一劍
這里用十年磨一劍有點(diǎn)夸張了,但是相對(duì)于開發(fā)者來說,每一個(gè)接口的誕生都是我都認(rèn)為那是一項(xiàng)偉大的存在。在經(jīng)歷了前面的各種更改,測(cè)試,壓力考驗(yàn)后可以正式發(fā)布了。每一個(gè)接口在發(fā)布后就直接跟網(wǎng)關(guān)對(duì)接,網(wǎng)關(guān)幫我們實(shí)現(xiàn)統(tǒng)一的鑒權(quán),過濾,熔斷,限流等操作來保護(hù)我們每一個(gè)接口的安全。
授權(quán)開放--首肯心折
不是所有人都可以訪問API接口的,不是每個(gè)接口都是免費(fèi)的,在必要的時(shí)刻需要我們對(duì)特定的接口做授權(quán)管理,規(guī)定哪些人可以訪問,哪些接口需要收費(fèi)。
監(jiān)控--運(yùn)籌帷幄
在API運(yùn)行期間,最重要的也是最重點(diǎn)的工作就是對(duì)接口進(jìn)行監(jiān)控,包括性能監(jiān)控、可用率監(jiān)控、調(diào)用量監(jiān)控等,并生成監(jiān)控報(bào)告。這些監(jiān)控都可以幫助我們從技術(shù)層面,業(yè)務(wù)層面進(jìn)行分析接口的詳情情況及指標(biāo),確保每一個(gè)接口都盡可能實(shí)現(xiàn)價(jià)值,實(shí)現(xiàn)接口的性能達(dá)標(biāo)跟可用率達(dá)標(biāo)。
下線--功成名就
到了這里,接口基本上就是已經(jīng)功成名就完成它的使命,我們需要結(jié)束它的生命周期,有種莫名的傷感,夕陽西下,斷腸人在天涯,下線吧。
--END--
作者:@互聯(lián)網(wǎng)應(yīng)用架構(gòu)
原創(chuàng)作品,抄襲必究
如需要源碼或請(qǐng)轉(zhuǎn)發(fā),關(guān)注后私信我
部分圖片或代碼來源網(wǎng)絡(luò),如侵權(quán)請(qǐng)聯(lián)系刪除,謝謝!
總結(jié)
以上是生活随笔為你收集整理的微服务手册:API接口9个生命节点,构建全生命周期管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高温下的石墩子能治好痛经?医生:看情况
- 下一篇: linux tomacat 之部署 wa