2021 年 7 月 6 日

從 Sequelize 遷移到 Prisma 如何讓 Invisible 實現規模化發展

Invisible 是一家 B2B 生產力初創公司,它允許使用者透過 Worksharing 自動化和外包任何複雜的工作流程或業務流程。Prisma 在幫助 Invisible 確保其技術棧的未來可行性並支援其規模化發展方面發揮了關鍵作用。

How migrating from Sequelize to Prisma allowed Invisible to scale

Invisible:運營效率和自動化的解決方案

在過去一年中,許多公司越來越清楚地認識到,僅僅數字化以實現業務轉型是不夠的。企業需要建立一個專注於運營效率和自動化的數字化轉型戰略。這對於提高生產力和效率,並在一個要求越來越高客戶體驗的市場中保持競爭力至關重要。

Invisible 出現之前,企業依靠 BPO(業務流程外包)實現運營效率,並依靠 RPA(機器人流程自動化)及其他工具實現自動化。

然而,僅憑這兩種解決方案本身是不夠的。每個企業都有定製且複雜的業務流程,許多 RPA 的一刀切方法無法解決這些問題。同樣,外包給 BPO 可能會避免為內部資源建立新工作流程、培訓計劃等的需求,但它只適用於支援相對簡單、大規模的工業流程。

Invisible 透過 Worksharing 解決了這個問題。它結合了 BPO 和 RPA 的最佳元素,同時保留了人工判斷的關鍵組成部分。

Invisible 的基因中就包含卓越運營和自動化。我們正在將知識工作工業化,將所有事物分解為最小的組成部分,將一切轉化為流程,構建工具,並協調激勵機制。這透過 Invisible 的數字裝配線完成:客戶可以在 Invisible 線上門戶上選擇預構建的業務流程,或使用我們提供的可用“構建塊”構建自己的自定義流程。

Scott DownesScott Downes,Invisible 首席技術官

選擇 Prisma 提升內部效率

Invisible 透過確保內部遵循相同的原則來確保為其客戶提供運營效率和自動化:他們選擇能夠讓開發人員節省時間,同時也能確保其技術棧面向未來的技術。

這就是高階軟體工程師 Pieter Venter 在設計 Invisible 新技術棧時選擇 Prisma 的原因。當 Pieter 加入 Invisible 並評估其技術棧時,他認為需要進行一次全面的重構,以便為平臺未來多年的發展奠定堅實基礎。

使用 Prisma 將使 Invisible 團隊能夠

  • 根據市場需求快速演進其模式,新增新功能和流程
  • 靈活編寫後端所需的自定義邏輯
  • 對所使用的工具充滿信心,無需擔心持續的維護和故障排除

最初,Invisible 使用 Sequelize,它為他們提供了強大的 TypeScript 型別,但建立模型需要大量的樣板程式碼。此外,型別定義和型別不會根據查詢選擇而更新。他們還研究了 Hasura,但最終它沒有達到他們的預期,缺乏後端自定義邏輯所需的靈活性。

Prisma 是理想的解決方案

  • 它專為 GraphQL 實現而構建
  • 它在客戶端使用基於查詢選擇的推斷型別提供自動生成的型別
  • 流暢的 API 非常易於開發人員學習,從而實現了一種新的現代化查詢引擎開發方式

在實際應用中從 Sequelize 遷移到 Prisma

對於 Invisible 來說,從 Sequelize 遷移到 Prisma 的過程是輕鬆無痛的

該團隊建立了一個 Prisma 客戶端,與他們的 Sequelize 客戶端並行使用,該客戶端用於託管在 Heroku 上的 API 伺服器單體應用中。他們使用 Prisma introspect 根據他們的資料庫構建了一個新的 Prisma 檔案,該檔案最終與他們之前的模式非常相似。

與此同時,他們還建立了一個新的無伺服器 GraphQL API(託管在 Vercel 上並使用 Postgres),該 API 只使用 Prisma,沒有 Sequelize 的負擔。簡單的資料模型和業務邏輯被快速輕鬆地遷移到新的後端。

高併發請求也被轉移到新的無伺服器功能,以減輕舊 API 伺服器上 Heroku 舊 dynos 的負載,並允許他們在 Heroku 上進行縮減。

目前,所有新的核心資料模型都在新倉庫的 Prisma 模式和新的 Postgres 資料庫中構建,所有剩餘的舊查詢正在逐步從 Sequelize 和 Heroku 遷移,並計劃在年內完全棄用它們。

這種漸進式方法使 Invisible 能夠繼續讓數百名代理在全球範圍內 24/7 無縫、不間斷地工作,並確保他們的客戶沒有經歷任何停機時間

雖然他們可以選擇在一週內完成遷移,但他們決定逐步進行,以便能夠繼續開發新功能,並利用 Prisma 更快地釋出它們。

Invisible 的技術棧

Invisible 在所有地方都使用 TypeScript,這使他們能夠擁有從資料庫到前端的 100% 型別安全程式碼,而無需維護型別。他們的技術棧由一些 React 應用程式 (NextJS) 和 Node.js 後端 API 伺服器組成。他們使用 Prisma 和 Postgres 中的高度關係型資料模型。

他們目前的技術棧包括

與 Sequelize 甚至 TypeORM 相比,Prisma 在型別安全的 ORM 方面達到了一個新的水平。tRPC + Prisma 組合的上手難度極低!它提供了完全的型別安全,無需任何程式碼生成或編寫和維護繁瑣的型別和介面。Prisma 生成型別,tRPC 消費並傳遞它們,我們甚至不需要維護任何 API 伺服器。藉助 Next.js 和 Vercel,我們還能以通常執行自有有狀態伺服器所需成本的一小部分獲得出色的開發體驗 (DX) 和使用者體驗 (UX)。

Pieter VenterPieter Venter,Invisible 高階軟體工程師

目前,Invisible 團隊正專注於將 Heroku 單體 API 重構為託管在 Vercel 上的一系列無伺服器函式。此外,他們已用 tRPC 取代了 GraphQL 和 Apollo——tRPC 是 React Query 的一個輕量級包裝器,負責處理客戶端和伺服器的資料獲取邏輯。這大大簡化了他們的技術棧,並將實現更快的特性開發和更可靠的資料庫增量更改

Prisma 與他們新的微服務架構無縫協作,並已被抽象成一個獨立的庫,可在需要資料的服務之間共享。Prisma 會根據無伺服器函式的需求自動開啟和關閉資料庫連線。檢視 Martina Welander 關於此主題的演講:《世界上最糟糕的泳池派對:Prisma 的連線管理》!

Invisible's tech stack before and after Prisma

Invisible 的工程文化

Invisible 真正地在所有部門,尤其是工程團隊中,擁抱了主人翁文化。以下是 Invisible 首席技術官 Scott Downes 對團隊內部共享責任感的描述:

我們所有的合作伙伴(“員工”一詞被禁止!)都同意一個透明、精英化的模式,每個人隨著時間的推移都能獲得有意義的股權,我們的薪資和獎金與業務績效直接掛鉤。每個人的工作都直接影響並塑造著公司的發展方向和成功。

Scott DownesScott Downes,Invisible 首席技術官

這在 Pieter 的工作中尤為明顯:Pieter 獨自評估了以前技術棧的缺陷,並主導設計了一個新的、可擴充套件且面向未來的解決方案。

如果您想加入完全遠端的 Invisible 團隊,請在此處檢視所有空缺職位。

結論

在過去一年中,Invisible 的收入翻了兩番,因為越來越多的公司認識到提高效率和自動化的重要性。依靠 Prisma 這樣的技術使他們能夠保持敏捷和可擴充套件性,並確保他們能夠滿足客戶不斷增長的需求。

採用 Prisma 使 Invisible 能夠比以前更快地部署更改,確保他們可以繼續提高團隊效率,同時降低客戶成本。

要了解 Prisma 如何幫助您的團隊提高生產力,請加入Prisma Slack 社群

不要錯過下一篇文章!

訂閱 Prisma 新聞通訊

© . This site is unofficial and not affiliated with Prisma Data, Inc.