2023 年 5 月 6 日 星期六 ·8分鐘閱讀

在 Remote 使用 JSON Schema 來擴展表單和數據驗證

挑戰

表單。法律表單、雇用表單、薪資表單,所有表單!從許多不同國家雇用員工會產生許多不同的要求,而 Remote 必須處理所有這些要求。僅僅一個國家不斷變化的法律和法規就足以應付,更不用說將近 100 個國家了!

「想像一下,您想在阿根廷、德國和奈及利亞雇用員工。這些都是非常不同的國家,有不同的法律和要求,而我們必須處理所有這些。」- Remote.com 的前端工程師 Sandrina Pereira 說。

荷蘭的其中一份入職表單,以及所有國家/地區超過 500 份獨特表單中的一份。

當 Remote 剛開始時,該公司僅涵蓋少數幾個國家/地區,每個國家/地區只有幾個特定的表單。擴展到數百個具有複雜要求的國家/地區表單令人印象深刻。您是否甚至意識到各個國家/地區和雇用類型的工時和週末天數都不同?在某些國家/地區,週末是星期五和星期六。除了傳統的朝九晚五之外,還有許多其他類型的時間表。如果某人的薪資付款搞錯,可能會產生巨大的影響。

以完整的 HTML 格式(甚至前端元件)管理和維護硬編碼的表單,對於 Remote 想要擴展的規模來說,並不可行。

「我們的硬編碼解決方案阻礙了我們業務的擴展。重複的程式碼、不一致的伺服器/客戶端驗證、龐大的 JavaScript 套件……」Sandrina 解釋說。

Remote 需要一種在伺服器端配置表單的方法,以便 Remote API 使用,包括可以在伺服器和客戶端之間共享的集中式驗證。

解決方案

JSON Schema 專門為 JSON 數據驗證而設計,但這並沒有阻止新興的用例。雖然有幾個表單生成庫將 JSON Schema 作為其輸入,但 Remote 希望擁有完全的控制權,並且需要根據需要自由發展解決方案。

「現在所有這些問題都透過 JSON Schema 解決了。」Sandrina 繼續說道。他們最初在開發基礎團隊中處理用於表單和驗證的 JSON Schema,後來成為公司「入職」垂直領域的一部分。他們的入職流程需要大量數據,必須提供最佳體驗,以避免資料不完整,同時又不損害數據安全或準確性。

Remote 決定建立他們自己的表單產生工具,讓他們可以根據需要將與表單欄位呈現相關的其他自訂關鍵字分層到 JSON Schema 中。「經過深入研究和概念驗證,並考慮到表單在我們核心產品中的關鍵性質,我們決定放手一搏……」這個函式庫的第一個版本最近已開源,因此您今天就可以嘗試!去看看 @remoteoss/json-schema-form

JSON Schema 如何與伺服器和客戶端整合的圖表。

數據不僅透過表單傳遞,也透過 API 傳遞,通常包括第三方。「我們將此旅程作為 Remote API 的一部分開始,它本身就是一個橫向工具。它將逐步影響 Remote 的每個領域。我們最終的願景是讓每個與我們 API 通訊的表單都由基於 JSON Schema 之上的『無頭表單』提供支援。」Sandrina 解釋道。正確設定數據邊界可能很困難,但這項工作是值得做的。伺服器上的驗證在客戶端重複使用,不僅簡化了開發,也降低了安全方面的攻擊面。

與將任何新技術加入您的堆疊一樣,您必須批判性地評估它是否在長期內可行,以及它對於您現有堆疊中的任何變更有多大的彈性。Sandrina 和她的同事們進行了研究…

「雖然 JSON Schema 不是『官方標準』,但看到大型企業採用並為其成熟做出貢獻,這對我們來說是一個重要的信任點。JSON Schema 由其強大的社群積極開發,許多公司(包括我們使用的 JavaScript 和 Elixir 等多種語言的成熟函式庫)採用率很高。」

「當尋找一種描述和驗證 JSON 物件的方法時,沒有其他可靠的替代方案。JSON Schema 被放心地採用。」- Remote.com 的前端工程師 Sandrina Pereira 說。

影響

使用 JSON Schema 作為 SSoT(單一事實來源)釋放了很多潛力。「JSON Schema 是解決 Remote 各個層面的數據驗證和表單產生問題的第一步。」Sandrina 解釋道。

一旦您開始使用 JSON Schema,就會發現多種用途是很常見的。Remote 在伺服器上建立 JSON Schema,並使用它們來驗證 API 酬載、執行定期驗證報告(根據法律要求)和在程式碼中自動完成。此外,客戶端會使用這些 Schema 來產生視覺表示,例如表單和表格。

有了 SSoT,Remote 發現建立和維護表單的時間縮短了,而且與不一致的數據和不正確的驗證相關的支援票券也顯著減少。最重要的是,對於 Remote 而言,他們也縮短了新國際員工和承包商的入職時間。雖然在整合 JSON Schema 的同時也進行了其他改進,但他們確信 JSON Schema 至關重要。

主要影響成果

大規模適應和發展,更快地提供服務,並將入職時間從幾週縮短到幾天。以下是迄今為止最大的成果列表

  • 伺服器和客戶端之間共享的驗證
  • 減少了 JS 套件和程式碼重複,取而代之的是 API 請求
  • 減少了回報不一致驗證的票券數量。
  • 更快地結束票券
  • 更輕鬆地建立和維護表單
  • 開啟了大門,讓內部營運團隊能夠自行建立表單

「JSON Schema 是保持我們大規模數據準確性的連接器,加快了我們為客戶提供的許多服務。在某些情況下,為新國家/地區實作表單所需的時間從幾週減少到僅僅幾天。」

Remote - 公司

Remote 讓您輕鬆入職並支付國際員工和承包商的費用。Remote 是一家全球性的全部分散式人力資源行業公司,沒有實體辦公室。「我們的員工可以自由地在他們選擇的世界各地工作!」

Sandrina Pereira:「我是一名在入職垂直領域工作的前端工程師,我們擁有最大且更動態的表單,其中攜帶了雇用新人員所需的所有數據。」毫無疑問,這是實現 Remote 提供的價值主張的關鍵職位。

由於許多公司都必須提供盡可能遠端工作的手段,為什麼要將人才庫限制在一個地理位置?

Remote 也希望賦予員工權力:「人才無處不在,但機會卻不是。Remote 使雇主能夠從任何地方雇用任何人,讓任何人都有機會,最終為他們自己創造更好的生活。」這些不僅僅是 Remote 的口號。

2021 年,Remote 推出了他們的難民計畫,使雇主能夠以具成本效益的方式進行投資,同時幫助難民重建生活。Remote 還為流離失所的烏克蘭人設立了專門資源

Remote 在 2022 年籌集了 3 億美元的 C 輪融資,估值超過 30 億美元。

進一步的優勢

「JSON Schema 為我們帶來了數據一致性(註解)和數據安全性(伺服器驗證)。」- Remote.com 的前端工程師 Sandrina Pereira 說。

在遷移了業務的一些核心部分之後,Remote 接著建立了一個介面,允許營運團隊自行編輯表單,並以 JSON Schema 格式儲存,以受益於驗證。靜態 JSON Schema 檔案對他們有很好的幫助,但最終他們需要能夠更快地對變更做出反應。

由 JSON Schema 提供支援,建立國家/地區表單的後端辦公室工具。

知識共享也受益於 JSON Schema,Remote 正在改造他們的知識庫。國家/地區的特定數據(例如支援的 VISA 選項和入職時間表)可以編碼到數據結構中,而數據結構又可以在伺服器和客戶端上進行驗證。

最初不確定 JSON Schema 能走多遠,儘管 Remote 推動了 JSON Schema 能做什麼的障礙,但它已被證明對 Remote 的擴展能力產生了重要影響。

「JSON Schema 已證明其價值,它是我們核心工具生態系統的一部分,用於驗證數據並產生其視覺表示,例如表單和表格,這是以大規模提供我們的服務而不會損害準確性、速度,最重要的是客戶滿意度的基本要素!」我們很高興您在 JSON Schema 中找到了價值 Sandrina!願它繼續下去。

感謝前端工程師 Sandrina PereiraRemote.com 允許並使我們能夠與您分享此案例研究。Sandrina 也想感謝她的同事,他們在一年前啟動了此旅程:André AlbuquerqueAntónio CapeloAntónio SilvaLivia BarbosaJoão Almeida