Topics

在 Supabase 與 Cloudflare 上打造專用 Web 應用程式的經過

  • column

大家好,我是 Liberogic 的 CTO 大塚。

近來針對企業網站與系統的網路攻擊接連發生,前天 PHP 的重大漏洞也成為話題。

本次要談的 Web 應用程式開發,可以說是盡可能減輕這類資安對策與營運負擔的架構,不過資安的話題我想另外找機會再談。


申請與審核、會員專屬頁面、供合作夥伴使用的入口網站、工時管理等,依照各家公司的業務量身打造的客製化 Web 應用程式,我們常用的組合就是 Supabase 與 Cloudflare。

過去需要在 AWS 上個別建置 EC2、RDS、S3、Cognito 等元件,或是架設 Linux 伺服器,再自行安裝 Web 伺服器、中介軟體與框架,資料庫 / 驗證 / API / 檔案儲存各自都要耗費建置與營運的心力。
使用 Supabase 與 Cloudflare 後,這些基礎部分交由服務端處理,就能專注於開發該應用程式真正需要的功能。

本文將簡要介紹,結合 Supabase 與 Cloudflare 可以打造出什麼樣的專用 Web 應用程式。

什麼是專用 Web 應用程式

這裡所說的「專用 Web 應用程式」,指的是依照公司與業務需求量身打造的 Web 應用程式。
例如像這樣的系統。

  • 內部申請與審核系統
  • 會員專屬頁面
  • 供貨商專用入口網站
  • 工時與出勤管理
  • 專案管理
  • 諮詢管理
  • 門市與據點適用的管理系統
  • 檔案共享與審核系統
  • 問卷與診斷結果管理
  • 各類業務用的管理畫面

當您向我們諮詢這類需求時,我們會先確認現有的 SaaS 或套裝產品能否實現。一般業務而言,採用既有產品往往更快速、成本也更低。

不過實際把需求逐一列出後,就會發現真正符合「正是我們想要的功能」的產品其實不容易找到。
例如公司專屬的審核流程、各部門或據點需顯示的資訊不同,或是需要與既有系統串接等情況。

這麼一來,與其configure業務流程去配合SaaS、靠日常維運來彌補落差,往往更好的提案是打造一套貼合業務的專用Web應用程式,讓客戶的業務運作更順暢。實際上,我們判斷這樣做的案例相當多。

Supabase 可一次提供 Web 應用程式所需的資料基礎

Supabase 是一項服務,可一次整合運用 Web 應用程式所需的後端功能。

這項服務在全球也頗具成長動能,使用的開發者已超過 1,000 萬人。據美國知名新創加速器 Y Combinator 公布,其最近一期的批次中有 55% 採用了 Supabase,正逐漸成為新服務後端的標準選擇。

這些實績主要來自擁有大量 B2C 使用者的服務,但我們認為此機制同樣適用於公司內部或合作夥伴使用的「內部型業務 Web 應用程式」,因此予以採用。

主要功能包括:

  • Database(託管的 PostgreSQL 資料庫)
  • Auth(使用者驗證與登入)
  • 自動生成 API(定義資料表後,即可直接使用 REST API)
  • RLS(Row Level Security:列級權限控制)
  • Storage(檔案儲存)
  • Realtime(即時通訊)
  • Edge Functions(無伺服器運行的 API 處理)

等功能。

若是企業應用程式,可以在 Supabase 的資料庫中管理使用者資訊、專案資訊、申請資料與操作紀錄等內容。

此外,只要使用 Supabase Auth,就能直接加入登入功能。這套 Auth 之所以適合企業應用程式,是因為它支援以 Microsoft 帳戶或 Google 帳戶登入。

若公司已在使用 Microsoft 365 或 Google Workspace,員工就能直接以平時使用的帳戶登入。無需另外發放應用程式專用的 ID 與密碼,入職與離職時的帳戶管理也能沿用既有的機制。

過去,將資料庫與驗證分別建置、再加以串接的架構並不少見。而使用 Supabase,則能將資料與驗證整合在同一個基礎上。

透過 RLS(Row Level Security),

  • 即可只顯示使用者本人的資料
  • 只顯示同一據點的資料
  • 管理員可以檢視所有資料

這類權限控制也可以在資料庫端進行。

在業務應用程式中,這類權限控制相當重要。

使用 Cloudflare 發布前端

不過,光靠 Supabase 無法完成一件事,那就是「網站(前端)的託管」。
資料庫與 API 可以交由 Supabase 負責,但使用者透過瀏覽器存取的畫面本身,則必須由其他地方發布。

其中最具代表性的前端發布平台是 Vercel 與 Cloudflare。我們選擇了 Cloudflare,理由有以下幾點。

  • 可在 Cloudflare 上統一管理從 DNS、CDN、WAF 到應用程式發布的所有項目
  • 透過 Cloudflare Workers,不僅能發布前端,還能整合 API 處理與外部服務連接
  • 提供 R2(儲存空間)與 Access(存取限制)等周邊服務,與業務應用程式十分契合
  • 計費方式以流量為準,概念簡單,預算也容易掌握。

提到 Cloudflare,多數人可能會先聯想到 CDN 或 DNS,但如今它也已經是足以用來執行 Web 應用程式的完善平台。

從製作公司的角度來看 Cloudflare

換句話說,在這個架構中,Cloudflare 負責接收使用者的存取請求,並回傳畫面與 API;而其背後的資料、驗證與權限控管則由 Supabase 負責,兩者各司其職。

結合 Supabase 與 Cloudflare

例如可以採用以下架構。

運行於 Cloudflare Workers 上的應用程式接收使用者的存取請求,回傳畫面與 API;其後端則由 Supabase 負責資料與驗證。

視需要,還可以透過 SendGrid 寄送郵件、將檔案儲存至 Box 等外部儲存空間,或與其他業務系統進行 API 整合。

這個架構的優點在於,整體皆由標準技術組合而成,且不侷限於特定的整合對象。
只要支援 API 整合,無論是既有的核心系統,還是目前已在使用的 SaaS,都能自由串接。不會像一般套裝產品那樣,出現「此產品只能與○○連接」之類的限制。

例如可以打造以下這類業務應用程式

內部申請・審核應用程式

可讓各據點與負責人員登錄申請,再由主管或管理者進行審核的應用程式。
依登入使用者的不同,

  • 僅顯示自己的申請
  • 顯示據點內的申請
  • 管理者可檢視全部申請

等權限控管也能實現。
簡單來說,就是把原本透過電子郵件與 Excel 處理的業務,直接轉為網頁應用程式。

客戶專用入口網站

為每位客戶發放登入 ID,

  • 檔案瀏覽
  • 檔案上傳
  • 進度確認
  • 聯絡我們
  • 確認合約資訊

也能建置可進行等操作的入口網站。
依合作對象調整顯示內容等控制方式,也相對容易實作。

工時與出勤管理

讓員工逐一輸入工時與工作量,並依專案、負責人彙總的應用程式。
若有一般考勤 SaaS 難以處理的獨特規則,或公司專屬的彙總方式,專用的 Web 應用程式會更加適合。

這類業務若硬要套用現成產品,反而常常變得更麻煩。

據點管理系統

也很適合由全國各門市或營業所登錄資訊、由總部統一管理的 Web 應用程式。

從只有幾人使用的內部工具,到跨多個據點使用的業務應用程式,都能應對。
並不是說「因為使用 Supabase 所以只適合小規模」。
視設計而定,可以用於相當廣泛的用途。

例如,本公司協助開發的應用程式如下。

豐田汽車 SNS 營運管理系統「TOYOTA Social Hub」UI/UX 設計與系統開發

判斷應採用 SaaS 還是客製網頁應用程式的標準

前面介紹了許多客製網頁應用程式的優點,但客製網頁應用程式並非永遠都是正確解答。
那麼,該在什麼時候判斷「應該自行開發比較好」呢?以下根據實際接到的諮詢經驗,列出一些參考依據。

  • 長期依賴人工補足作業
    審核流程因部門而異、例外處理很多等,業務流程已偏離 SaaS 的設計假設,光靠設定無法完全吸收
  • 權限與顯示內容的控管需要非常細緻
    希望依部門、據點或交易對象變更顯示的資訊,但 SaaS 的權限功能粒度不足
  • 業務需要在多個工具之間來回切換
    在 Excel、電子郵件與多個 SaaS 之間往返,重複手動輸入與複製貼上已成為日常
  • 自訂管理項目與彙總規則眾多
    硬把公司獨有的資料塞進 SaaS 的通用欄位中
  • 現場覺得功能過多或不足
    因為是通用型 SaaS,畫面複雜而無人使用,或是真正需要的功能反而缺少

若只符合一、兩項,通常透過調整 SaaS 的設定或作業方式就能解決。
但如果符合多項,且日常中「一點小麻煩」不斷累積,我們認為就是考慮配合業務量身打造客製網頁應用程式的時機。

事實上,「想把用 Excel 管理的資訊網頁化」「想把透過電子郵件處理的申請系統化」「想把在多個 SaaS 之間往返的業務整合為一個」這類客製網頁應用程式的討論,往往就是從這樣的諮詢開始的。

小規模開始製作,邊使用邊逐步成長

說明到目前為止的技術架構,最後想跟您分享的,與其說是 Supabase 或 Cloudflare 本身的功能,不如說是專案的推進方式。

「該做什麼」,其實很難從需求定義書中看出來

一般的軟體開發通常從需求定義開始。先將現有業務整理成文件,再據此設計能滿足需求的系統,這是常見的推進方式。

不過,這種方式也有其弱點。文件上雖然已經涵蓋了業務內容,但往往缺少「實際使用起來順不順手」以及「這個功能真的需要嗎」這樣的檢視,需求就這樣一項項累積下來。
尤其是對負責推動 DX、但並非系統開發專家的人來說,光靠文字和表格來判斷需求是否合理,相當困難。

因此,Liberogic 並不是先花大量時間完成厚厚的需求定義書,而是使用 Figma、v0、Claude Code 等工具製作原型(可實際操作的畫面草稿),邊讓客戶實際操作邊推進討論。

與純文字的需求定義不同,實際操作畫面時,能以極高的真實感體驗「用起來會怎樣」。有趣的是,客戶的關注點往往會從「確認文件」轉向「改善業務」,例如「如果有這個畫面,業務的某個部分會輕鬆很多」、「說到這個,另外進行的那項作業是不是也能自動化?」。

在專用 Web 應用程式開發中,真正重要的往往正是「該做什麼」這個部分。我們認為,這並不是在文件中決定的,而是在透過原型共享想像的過程中逐漸浮現的。

先實作基本功能並率先上線

我們不會一開始就決定所有需求、一次性做完,也就是所謂的瀑布式開發。待原型確定方向後,會先實作登入、資料登錄、清單顯示、管理畫面等基本功能,然後率先上線。

上線後,一邊讓您實際使用,一邊確認使用感受與現場的回饋,再逐步新增審核功能、郵件通知、檔案管理、外部 API 串接等。
Supabase 與 Cloudflare 的架構,與這種循序漸進的推進方式非常契合。

依預算與業務價值逐步擴充

「小規模開發,再依需求擴充」也關乎預算層面。舉例來說,

  • 依照每年預先編列的預算,逐步開發功能
  • 先小規模上線,待業務價值逐漸顯現後,再追加投資擴充應用程式

等方式都可行。不必一開始就一次編列大筆開發費用,也能擁有並逐步培養業務應用程式。我們認為,業務應用程式與其一開始就把需求定得十全十美,不如邊使用邊改善,通常效果更好。

總結

結合Supabase與Cloudflare,即可以相對精簡的架構,打造具備身分驗證、資料庫、權限控管、API 與檔案發佈功能的專用 Web 應用程式。從公司內部的小型業務工具,到面向合作夥伴的入口網站,以及跨多個據點使用的業務系統,都能依用途逐步擴展。

不過,真正重要的並非Supabase或Cloudflare等工具本身,而是推進的方式。

  • 先透過原型圖分享「實際使用的情境」,找出真正應該開發的功能
  • 先只開發基本功能,盡快上線
  • 邊使用、邊依預算與業務價值逐步擴充

這樣的推進方式過去並不切實際。因為軟體實作的成本與基礎設施建置的成本都很高,必須在事前把所有細節都定案,才能開始動手製作。

如今,藉由 Supabase 與 Cloudflare 等現代技術堆疊,以及運用 AI 代理的開發與原型製作,我們已能以更接近理想的方式推進專案:先做出可以實際操作的東西,再一邊使用、一邊持續培育。Liberogic 最擅長的,正是這樣的推進方式。

「這項業務目前用 Excel 和郵件處理,能不能改成網頁版?」「試過 SaaS,但總覺得不太符合我們的業務」,即使是這樣的初步諮詢也沒問題。我們會和您一起思考符合業務需求的架構,歡迎您隨時與我們聯繫。

關於撰寫本文的人

Liberogic 技術部門的支柱。聽到「要是有這種東西就好了」、「有這個就方便了」這類話,就會憑著過人的智慧加上附加價值,轉眼間就完成實作。溝通能力高、深受客戶喜愛,是公司的寶貝,也是個超愛貓的人。

大塚 翔

董事 CTO / 首席工程師 / 合同會社貓穴 代表 / 年輕得很沒道理

查看此員工的文章

我們的優勢在於穩健的團隊體制與快速的應對能力

Liberogic 由經驗豐富的資深人員積極推動專案,因此獲得客戶的高度評價。
我們會妥善指派專案經理與總監,致力於順利推進整體專案。 我們採取依據專案需求適才適所分配資源的方式,避免因全程投入而增加不必要的成本,並且在掌握業務內容、製作與提交估價方面的速度也廣受好評。

注: 本公司不積極承接類似 SES 的駐點業務等,敬請事先諒解。

可搭配 Slack、Teams、Redmine、Backlog、Asana、Jira、Notion、Google Workspace、Zoom、Webex 等幾乎所有主要的專案管理工具與聊天工具使用。

歡迎諮詢您的 Web 相關問題。

案例分析