Categories
程式開發

五年時間,我們怎樣構建一個GraphQL API 組合?


工程師們都非常喜歡聽好故事。我們花5 年時間構建的由GraphQL 組合的API 現在上線了(峰值為每秒110 個請求,延遲100ms),這個過程應該是一個不錯的故事。

五年時間,我們怎樣構建一個GraphQL API 組合? 1

我們的需求

多年來,Pipedrive(在2020 年初已經10 年了)一直有針我們的webapp 的一個公開的REST API,以及隱藏的未記錄的端點——其中一個是/users/self,這個接口最初是用來加載用戶信息的,但是隨著時間的推移,它變成了一個頁面加載API,由30 種不同實體類型組成。它最初是在我們的PHP 單體應用中創建的,本質上的同步的。我們嘗試將它分離到並行線程中,但是結果並不太好。

五年時間,我們怎樣構建一個GraphQL API 組合? 2

針對現有流量的/users/self 的延遲分佈

從維護的角度來看,隨著每一個新的改動,它變得更加混亂,因為沒人想要負責這個巨大的端點。

直接數據庫訪問的概念驗證項目

讓我們回顧我們的開發人員剛接觸graphql 的時候。

大約3-4 年前,在marketplace 團隊,我開始從我們的全棧工程師Pavel 那裡聽到“elixir”和“graphql”之類的新術語。他參與了一個概念驗證(proof-of-concept,PoC)項目,該項目直接訪問MySQL 並暴露/graphql 端點來查詢核心的Pipedrive 實體。

原文鏈接:【https://www.infoq.cn/article/oKtOMtyXrpkRi5kU9J5u】。未經作者許可,禁止轉載。