跳至主要内容

API 優先的資料存取

一份資料一個擁有者 · 其餘走契約 · 路線圖項目 30

應用程式直接存取不屬於自己的資料庫。一個需要訂單的應用,開一條連線到訂單資料庫,對它的資料表下 SQL。這樣做行得通 —— 而這正是那些資料表什麼都改不了的原因。

取而代之的做法不是「多加幾個 API」,而是一條關於誰能寫什麼的規則,API 只是它的結果:每一份資料恰好有一個擁有者服務,其餘所有應用都走那個服務的契約。 一份資料的遷移,在直連授權被收回時才算完成 —— 不是在 API 發布時。

現況app Aapp Bapp CDB共用資料庫直連 SQL每個應用碰得到每張表目標app Aapp Bapp Csvc擁有者服務DB契約自己的資料表一個寫入者,其餘走契約 應用程式擁有者服務資料庫直連 — 要移除的走契約

現在付的代價​

每一項在下一頁都配一個具體場景展開。

代價一句話版本
01schema 就是對外 API不先找出所有讀方就改不了一個欄位名,所以最後就是不改。
02授權的單位是資料表一組憑證給的是一張表而不是一個操作,稽核軌跡記的是連線而不是呼叫方。
03耦合是隱形的沒有任何地方回答得了「這張表壞掉會影響誰」。
04連線數隨實例數成長每個副本各開自己的連線池直通資料庫 —— 而項目 26 正要讓副本數變成彈性的。
05它擋住底下的平台讀方不明,項目 06 就改不了複製架構,項目 27 也做不出站點獨立。

這裡定義了什麼​

頁問題
02 · 為什麼不要直連直連實際上付出什麼代價?
03 · 擁有權擁有者是什麼意思,由誰決定?
04 · 契約契約是什麼,什麼算破壞性變更?
05 · 遷移一份資料怎麼切換過去,什麼時候算完成?

方向來自平台路線圖的項目 30;有日期的工作在應用程式現代化里程碑。