微服務手冊:API接口9個生命節點,構建全生命周期管理

2020-12-16 架構師修煉之道

網際網路應用架構:專注編程教學,架構,JAVA,Python,微服務,機器學習等領域,歡迎關注,一起學習。

對於API,在日常的工作中是接觸最多的東西,特別是我們軟體這一行,基本就是家常便飯了,在百度百科裡面的解釋:

API(Application Programming Interface,應用程式接口)是一些預先定義的函數,或指軟體系統不同組成部分銜接的約定。 用來提供應用程式與開發人員基於某軟體或硬體得以訪問的一組例程,而又無需訪問源碼,或理解內部工作機制的細節。

在不同系統之間,不同部門之間的各種對接,API就是研發人員的一個純粹性的溝通語言,雙方定義好規範、約束等進行系統之間的交互。

生命周期

在我們軟體行業的領域裡面,每一個軟體都是有生命周期的,從最開始的需求調研,需求設計,架構設計,軟體研發,測試,上線,試運行,運行到最後業務上,技術上跟不上時代的發展,被新來的技術人員嫌棄,後面的業務部門拋棄,至此開始結束最後到下線,這個系統就算結束了他們的生命周期。

API是一種應該性接口同樣具備了設計化、測試化的過程,這就顯性表明API其實也作為有生命周期的存在,在現有的設計中,API生命周期分為9種

設計構建/研發管理聯調/測試自動化文檔/發布授權開放監控下線

設計--見文知意

一個API的形成,設計是最根本的存在,因為他的存在不單單是自己使用,更重要的是讓多方可以使用,因此有一個規範的思想非常重要,這裡有個方法論就是--見文知意。每次看到API都能知道這個API是做什麼的,這是對開發者,使用者來說非常重要的一個方向,每一個API實際上對應的一個後端服務的方法,必須有限定的出參與入參,其中出參與入參必須有嚴格的定義。

入參:有一個重要的準則就是能快速進行參數的基礎屬性的校驗,例如是否為空,欄位長度等,目前一般採用hibernate valid或者java自帶的valid來實現。

出參:出參的規範化體現在錯誤碼上,針對錯誤碼的定義需要非常明確,讓調用者可以一眼就能看到問題的所在,目前很多API接口在進行設計的時候一般只有正確與錯誤兩個錯誤碼,平時用著沒問題,在業務發展到一定程度後會增加運維的難度,建議錯誤碼按照不同的類別,例如業務、技術等區分。

構建/研發--防範於未然

在進行了的第一步的規範化設計後,研發人員就要開始根據規範進行API接口的內部業務邏輯的設計,具體的業務邏輯由業務邏輯來做限定,這裡需要注意的就是非法參數儘可能排除的API之外,需要在入口處進行判斷並且匯集不合法的數據直接報錯,不允許出現在後續的業務代碼邏輯裡面去判斷合法性,如上面所說採用hibernate valid進行操作,這些都是一個API生成的過程。

管理--運籌帷幄

每一個API的誕生到最後的下線它都是可控可管理的。

版本管理:每一個API從最開始發布到後面不斷迭代發布更新,都需要一個版本號來做限定,做到每一個版本可查可追溯。

文檔管理:API裡面文檔是非常重要的存在,它是連接所有應用的橋梁裡面的中流砥柱,一份清晰可見的文檔是所有使用者的福報。在研發人員的世界中,最喜歡寫代碼,最痛苦寫文檔,但是如果把寫代碼變成一種寫代碼的方式呢,swagger可以幫你實現本地化文檔也可以實現離線文檔,還是直接導入到yapi進行mock測試。

質量審核:API並非寫完就完事,如果只是簡簡單單搞定並不按照規範走,入參map加上出參map的存在,那就要扯皮來,因此需要一個人來審核這些才能允許上線。

狀態碼管理:由於狀態碼是最常見的存在,因此它是微乎其微但是又是非常重要的東西,定義業務級別的狀態碼,定義系統級別的狀態碼,這些都需要進行管控起來。

迭代管理:迭代跟上面的版本有異曲同工之妙,版本更著重於版本號的定義及生成,迭代更側重於每一次迭代的跟進管理,等價於每一次的歷史記錄。

權限管理:API並非任何人都可以用的,需要進行授權。

服務管理:一個服務提供多個API,存在資料庫級別的1對N關係,需要這些進行分配及管理。

變更管理:API並非一成不變的,除了版本號的變更,經常涉及到裡面的內容的管理,這些內容需要做記錄及對比。

聯調/測試--微察秋毫

一個好的API除了規範設計清晰及業務邏輯清晰,更重要的是一定也是便於測試的,對應的業務是否能完成,對應的系統對接是否有足夠集成,是否提供了足夠的詳細的文檔,確保了API的質量是有非常高的維護性的,這些通通在測試層進行驗證,本地化測試,MOCK測試,測試用例儘可能完整。

自動化--進退有度

相比於上面的人工測試,自動化測試是標準化的一種設計。按照約定設定好一定的標準閾值對接口進行測試,檢驗接口是否滿足我們最基礎的性能等要求,但是自動化測試並不是萬能的,何時介入,怎麼介入,什麼樣的項目適合自動化測試,這些都需要我們進行思考。

何時介入:在項目的剛開始的時候不適合自動測試的介入,業務穩定性,需求變更快導致接口隨時隨地都在變化,代碼變動率非常高,維護成本非常高;到了後期後項目穩定了項目進入維護階段,此時自動化開始介入並為回歸測試做好準備。

怎麼介入:從自動化程度及自動化率來做切入點,雖然前期的項目並不適合做自動化測試,但是可以選用一些穩定的,公用的進行測試。

適合項目:有意做回歸測試,並且需要長期做支持維護的項目;壓力測試的項目;覆蓋率測試的項目。

文檔/發布--十年磨一劍

這裡用十年磨一劍有點誇張了,但是相對於開發者來說,每一個接口的誕生都是我都認為那是一項偉大的存在。在經歷了前面的各種更改,測試,壓力考驗後可以正式發布了。每一個接口在發布後就直接跟網關對接,網關幫我們實現統一的鑑權,過濾,熔斷,限流等操作來保護我們每一個接口的安全。

授權開放--首肯心折

不是所有人都可以訪問API接口的,不是每個接口都是免費的,在必要的時刻需要我們對特定的接口做授權管理,規定哪些人可以訪問,哪些接口需要收費。

監控--運籌帷幄

在API運行期間,最重要的也是最重點的工作就是對接口進行監控,包括性能監控、可用率監控、調用量監控等,並生成監控報告。這些監控都可以幫助我們從技術層面,業務層面進行分析接口的詳情情況及指標,確保每一個接口都儘可能實現價值,實現接口的性能達標跟可用率達標。

下線--功成名就

到了這裡,接口基本上就是已經功成名就完成它的使命,我們需要結束它的生命周期,有種莫名的傷感,夕陽西下,斷腸人在天涯,下線吧。

--END--

作者:@網際網路應用架構

原創作品,抄襲必究

如需要源碼或請轉發,關注後私信我

部分圖片或代碼來源網絡,如侵權請聯繫刪除,謝謝!

相關焦點

  • 演講實錄|基於雲原生的敏態微服務全生命周期支撐平臺
    針對這些問題,龐玉海分享了博雲在雲原生「基建」之上落地細節思考,包括公共組件的選擇、公共組件的運維、協議不同如何互訪、微服務元數據如何管理、容器安全如何防護、跨服務框架如何訪問、多雲環境如何部署、DevOps平臺如何與資源平臺打通實現資源快速交付等等。這些都是關於落地細節的思考。而博雲推出的基於雲原生的敏態微服務全生命支撐平臺,目的就是為了解決這些難題問題,讓客戶更好的轉型。
  • 詳解API網關核心功能和API管理擴展
    本文將詳細講解API網關的基礎概念,使用場景和核心功能,以及基於API網關核心引擎做的API全生命周期管理功能擴展等,最後介紹當前主流的開源API網關引擎。API網關概述在微服務架構體系裡面,我們一般會使用到微服務網關或叫API網關。
  • 管理數據資產就是管理數據生命周期
    12原則第10條,數據管理就是數據全生命周期管理。數據資產全生命周期管理模型是設計良好的用於組織數據資產的框架,有許多工作要根據數據資產全生命周期管理模型來提出新的數據管理要求。截止目前,國內外還沒有數據資產全生命周期管理的相關模型,如同任何其它資產一樣,數據資產也具有生命周期,管理數據資產就是管理數據全生命周期。
  • 全生命周期健康管理 任重而道遠
    人民網上海12月2日電  11月28日,正值紅楓妖嬈、黃葉飄灑多彩的季節,由中國婦幼保健協會主辦、全生命周期健康管理專業委員會和上海市婦幼保健中心共同承辦的「全生命周期健康學術交流分論壇」在山城重慶舉行。
  • 「政策扶持+平臺撮合」 構建全生命周期融資服務體系
    原標題:「政策扶持+平臺撮合」 構建全生命周期融資服務體系   9月11日,泰州市「創贏未來·
  • 管理家庭財富的生命周期
    一邊是越來越多的財富積累,另一邊卻是對家庭財富管理生命周期的薄弱認知。財富的生命周期基本上是一個宿命論:第一代是創造,第二代是停滯,第三代是消逝。這樣的宿命是很公平的,因為沒有這樣的宿命,財富的階層就會固化,社會的進步就更加困難。但是也有很多人一直想跳出這個宿命,想把財富宿命從財富的生命周期中解放出來。而這種努力即可稱之為財富管理。
  • 我市印發《濟南市工業用地全生命周期管理辦法》
    近日,市政府辦公廳下發《濟南市工業用地全生命周期管理辦法》的相關通知,引起各界關注。市委、市政府《關於加快建設工業強市的實施意見》更明確提出,「加強工業用地(包括物流倉儲,不包括採礦用地)出讓全生命周期管理。」
  • 河南國基:建築行業全生命周期的管理與實踐
    當下,業內企業為了應對環境的改革帶來的生存壓力,都在尋求一條更新的更精細化的經營管理之路。。。本文所介紹的河南國基建設集團——以一個地方民營建築企業的視角,來展示位了應對行業大環境變化,所探索的企業全生命周期的管理與實踐之路。
  • Rainbond v5.1.2 發布,微服務架構應用便捷管理和交付
    Rainbond v5.1.2發布,微服務架構應用便捷管理和交付Rainbond是開源的企業應用雲作業系統,支撐企業應用的開發、架構、交付和運維的全流程,通過無侵入架構,無縫銜接各類企業應用,
  • 北京經開區試點土地全生命周期管理
    為深入推進「放管服」改革,加快轉變政府職能,12月10日,北京市人民政府行政審批制度改革辦公室和北京經開區管委會聯合印發了《北京經濟技術開發區產業用地標準化管理暫行辦法(試行)》(以下簡稱《暫行辦法》),探索土地全生命周期管理新機制,推進土地資源要素高效配置,推動亦莊新城高質量發展
  • 基於生命周期的應急情報體系理論模型構建
    ,本文運用生命周期的理論和方法,探討了應急情報體系的基礎理論,構建了應急情報體系的理論模型。南京 211800  內容提要:為了更好地發揮情報體系在突發事件應急決策中的作用,本文運用生命周期的理論和方法,探討了應急情報體系的基礎理論,構建了應急情報體系的理論模型。
  • 人民銀行採購全生命周期管理流程和模式探索
    【摘  要】採購全生命周期管理是採購領域未來的發展趨勢,但該理論及實踐在人民銀行系統目前尚處於探索初期。本文擬從採購全生命周期管理定義、適用範圍、目前人民銀行採購現狀以及採購全生命周期管理實施難點等方面出發,提出採購管理模式優化建議,梳理人民銀行系統全生命周期管理採購流程,希望對人民銀行各級機構思考及實踐採購全生命周期管理工作起一定參考作用。
  • Indigo電子保單全生命周期管理系統
    現有的網上保單電子商務模式多是網上投保、網下送單,投保客戶不僅無法享受到方便、快捷的保險服務,也直接導致保險公司網上營銷成本的增加、管理效率降低。同時,線下送單易發生單證遺失以及非法用印等單證管理風險。如何使客戶更好地感受到保險電子商務的便捷服務,如何有效節約電子商務運營成本、降低單證管理風險,在激烈的保險市場競爭中處於領先地位,已成為保險企業普遍關注的問題。
  • 中寰衛星車聯網助力商用車全生命周期管理
    會上,中寰衛星導航通信有限公司企業發展部總經理李泓辰分享了《車聯網助力商用車全生命周期管理》案例。根據中寰平臺數據統計,商用車日均行駛時長約為8個多小時,三四百公裡,平均每年車後消費大概70萬元左右。相對於乘用車,作為一個生產經營工具,商用車車聯網可為司機、車隊和企業帶來實際的降本增效,挖掘商用車潛在全生命周期(TCO)價值。
  • 產品生命周期管理
    為何做產品生命周期的管理?現狀分析-----貨品未能正常的流轉舊貨沒有在品牌的通路消化新貨沒有及時上架銷售新貨喪失最佳銷售時間,舊貨銷售依舊疲軟,銷售額無法提升,倉庫滯銷率不斷攀升。給倉儲帶來極大壓力,以及財務成本的損失。
  • 再談Spring中Bean的生命周期
    網上大部分都是驗證的Bean 在面試問的生命周期,其實查閱JDK還有一個完整的Bean生命周期,這同時也驗證了書是具有片面性的,最fresh 的資料還是查閱原始JDK!!!一、Bean 的完整生命周期在傳統的Java應用中,bean的生命周期很簡單,使用Java關鍵字 new 進行Bean 的實例化,然後該Bean 就能夠使用了。一旦bean不再被使用,則由Java自動進行垃圾回收。
  • 全生命周期管理助力綠色工廠改造
    覆蓋著太陽能光伏板的車間,低煙無滷的原材料,安全、環保、綠色、節能的新產品,剝線、分揀、分門別類後搖身一變成為新材料的廢料,廠區內的LED照明燈,空壓機餘熱產生的熱水……遠東電纜綠色工廠的生命周期管理,實現了資源有效利用,將遠東人的生產與生活完美地串聯了起來
  • 濟南出臺新政:對工業用地「全生命周期」管理
    齊魯晚報·齊魯壹點記者 夏侯鳳超日前,濟南市政府辦公廳印發《濟南市工業用地全生命周期管理辦法》。進一步促進土地節約高效利用,健全工業用地「準入—供給—監管—退出」管理機制。《辦法》所稱工業用地全生命周期管理,是指以提高土地利用質量和效益為目的,對工業用地實施全過程監管。通過建立產業準入、「畝產效益」評價、土地使用權退出等機制,將項目建設投入、產出、節能、環保等經濟、社會、環境各要素納入綜合監管,實現工業用地管理系統化、精準化、動態化。
  • 「健康廚房」開啟全生命周期健康服務
    12月16日,淄博市張店區婦幼保健院兒童保健科主任王梅正在演示「健康廚房」的操作流程,從健全提升婦幼健康服務能力著手,開啟區域全生命周期健康服務。兒童出生後的第6個月是母乳餵養轉變到輔食添加的重要膳食餵養過渡期,餵養不當將會對孩子的生長發育造成極大的損害。「孩子瘦得跟皮包骨一樣!」
  • API快速開發平臺設計思考
    在我頭條談API網關的時候曾經談到過快速開發平臺,即將API快速開發的一些內容放入到API網關中,實際來看圍繞API全生命周期管理,本身包括了開發態,運行態,運維態。