2020年,iopool 意識到他們的架構正在拖慢他們的速度並阻礙創新。他們決定轉向 Lambda 函式和由 Prisma 支援的關係型資料庫。繼續閱讀,瞭解這如何幫助他們快速且自信地前進,並極大地簡化了他們的開發流程。

在炎熱的夏日,沒有什麼比跳進美麗的藍色泳池中降溫更愜意了。同樣,也沒有什麼比想跳進去卻看到泳池泛著黏膩的綠色、長滿藻類、根本不適合游泳更糟糕的了。更令人煩惱的是,還需要手動檢測、瞭解如何調整 pH 值、校準所需新增的化學品量等等。
這就是 iopool 的用武之地。他們為私人泳池、按摩浴缸和熱水浴缸提供完整的泳池管理解決方案,從精密的泳池感測器和移動應用程式開始,幷包括保持泳池清潔和安全所需的所有產品。
技術債務
2020年,iopool 的工程師們意識到他們面臨著嚴峻的技術債務挑戰,這使得公司技術棧的未來岌岌可危。iopool 的首席軟體工程師 Luc Matagne 認識到這些技術挑戰的嚴重性。用他的話來說,“那簡直是開發人員的噩夢”。
專案中共有16個微服務。檔案結構、程式碼結構和工具都存在很多差異。所有資料都儲存在帶有“假關係”的 NoSQL 資料庫中。錦上添花的是,你無法在自己的機器上本地執行所有服務。每個服務都需要部署到雲端進行測試。
Luc 意識到這種架構將阻礙 iopool 未來的發展,於是他提出了一系列徹底的變革,以構建 iopool 後端的新版本。這包括移除獨立的微服務、切換到關係型資料庫,以及最核心的,實施 Prisma。
Prisma 之旅
Luc 並沒有將 iopool 的1.0版本視為失敗。相反,它展現了他們對 LIT(學習、迭代、測試)方法的承諾,使他們能夠將此視為一次學習,並開始從頭重構應用程式設計、後端和程式碼。
許多開發團隊聽到“重構”都會感到畏縮,考慮到所需的時間和精力,這是理所當然的,但 iopool 還有一個額外的障礙:他們需要在不到六個月的時間內重構一個耗時兩年完成的產品。他們還必須及時完成,以迎接將於六月開始的下一個旺季。

iopool 在選擇 ORM 時有五個要求
-
速度 → 學習曲線應該很短或幾乎沒有,並且應該儘快實現。在一週內,他們就擁有了一個執行中的資料庫,並可以型別安全地訪問所有資料。透過使用 Prisma Schema 來構建資料庫,他們能夠快速地在不同結構之間迭代,從而從一開始就獲得最佳資料庫。“如果沒有 Prisma,我們不可能及時準備好 iopool 2.0。”
-
靈活性 → 他們必須釋出許多新功能以保持競爭力。Prisma 和 Nexus 的結合使得解析器(resolvers)的管理變得輕而易舉。所有內容始終易於訪問。
-
易用性 → 他們移除了微服務之間複雜的路徑,這些路徑曾用於理解資料流向(或不流向)何處。Prisma 在以他們所需的方式輕鬆獲取資料方面非常有幫助。
-
可靠性 → 在最初兩年的開發中,他們遺漏了一件事:單元測試。他們最終能夠為後端每個過程新增單元測試。將 Prisma Client 引入測試過程非常容易,這使得程式碼庫更加可靠。“現在每次新提交後我們都能安然入睡,有了 Prisma,錯誤率非常小。”
-
舒適性 & 生產力→ 他們現在能夠使用本地伺服器即時測試他們的功能,這在 Prisma 中是開箱即用的。這對他們來說是巨大的生產力提升。
新版技術棧
在明確了需求之後,iopool 開始著手使用全新的技術棧開發其後端的2.0版本。
新的技術棧依賴於流行的技術,例如 React Native、GraphQL(使用 Apollo)、Postgres 和 DynamoDB。在2.0版本中,Prisma 扮演著關鍵角色。

iopool 大幅升級的2.0版本廣泛使用了透過 AWS Lambda 實現的無伺服器函式。Nexus 用於提供一個由 React Native 應用程式呼叫的 GraphQL API。Prisma Client 用於訪問 iopool 除了水質資料之外所有資料所使用的 Postgres 資料庫。對於收集到的海量水質資料,選擇 DynamoDB 是因為它能夠輕鬆處理這種大規模資料。
在2.0版本中採用 TypeScript,特別是 Prisma 和 Nexus,帶來了豐厚的回報。與之前微服務架構下每兩到三週釋出一次相比,iopool 現在每週能夠釋出兩次或更多次。以前需要數週開發時間的功能已縮短到數天。
因為我們發現了 Prisma,所以我們決定開始對整個專案進行重構。我們知道 Prisma 會幫助我們更快、更有信心地進行,尤其是在我們重構時間有限的情況下。
開發週期的改進,很大程度上歸功於 Prisma 提供的型別安全。iopool 的開發人員在使用 Prisma Client 進行資料庫訪問呼叫時,能夠獲得智慧感知、自動補全和型別檢查,這對速度提升至關重要。
Prisma Migrate 在 iopool 的2.0版本升級中也起到了關鍵作用。Migrate 讓團隊對資料庫 Schema 變更的方法充滿信心,允許多個開發人員在一箇中心 Schema 上協作,並使更改在不同環境中無縫應用。
當我們編輯或更改 Schema 時,我們知道如果使用 Prisma,它就能正常工作。
結論
iopool 在開發後端2.0版本時體驗非常順暢,這在很大程度上歸功於 Prisma 處於核心地位。Prisma 使他們的開發人員能夠更快地行動,實現1.0版本難以實現的新功能,併為公司的未來帶來了新的可能性。
要了解更多關於 iopool 如何成功使用 Prisma 的資訊,以及關於 Prisma 本身,請查閱以下資源
不要錯過下一篇文章!
訂閱 Prisma 新聞郵件