一、為什么要治理服務契約?
在日常工作中發現契約導致的溝通問題很多。另外由於契約定義不嚴謹,導致線上Bug的出現也時有發生。比如忽略字段長度,導致數據落庫失敗。由點到面梳理問題如下表:
| 問題 | 開發階段 | 測試階段 | 運行階段 | 后期迭代 |
|---|---|---|---|---|
| 契約不嚴謹 | 1.增加了開發人員的理解成本 2.增加了契約相關方的溝通成本 3.這種情況下,再缺少溝通的話,各相關方按照自己的理解開發導致后期聯調成本增加。 |
1.增加了測試人員的理解成本 2.增加了測試與開發的溝通成本 |
服務不健壯 | 1.增加了產品的理解成本 2.增加了產品與開發的溝通成本 |
| 服務契約與文檔契約不一致 | 1.增加了聯調成本 2.導致聯調時某一方的返工 |
1.增加測試與開發的溝通成本 2.導致測試用例的返工 |
服務不健壯 | 1.增加了產品的理解成本 2.增加了產品與開發的溝通成本 |
| 契約改動通知不到位 | 1.增加了聯調成本 2.導致聯調時某一方的返工 |
1.增加測試與開發的溝通成本 2.導致測試用例的返工 |
線上故障 | |
| 契約信任 | 1.契約驗證開發成本 2.契約驗證維護成本 |
契約相關的測試成本 |
另外,還存在職責問題,例如:
服務提供者的問題,被客戶端發現。而客戶端對這種非自身問題關注是不夠的,導致問題不被重視。
二、怎么治理服務契約呢?
服務契約的治理是一個工程性問題,本着規范流程,固化最佳實踐的目的,設計如下:

三、治理什么?
一個健壯契約的元數據:
- 協議
- 結構
- 基元類型
- 文本、數字、布爾、時間
- 約束
- 復雜類型
- 類、數組
- 基元類型
四、支撐該設計的原則
- 契約先行
- 問題盡早發現
- 誰的問題誰發現
架構思維修煉

