跳至內容

技術

我們怎樣建,以及為甚麼這樣建

這頁講的是工程決定,不是 framework 清單。工具會按項目而變;這些原則不會。

工程原則

我們守住的五件事

每項都有代價。我們接受這個代價,因為另一邊通常會在上線之後、更差的時間才出現。

Reliable by Design

錯誤處理、輸入驗證、監察與還原,與功能一齊設計,而不是出事後才補。系統失敗時,應該失敗得看得見、預料得到。

API-first

其他系統要取用的,都經明確介面與既定合約暴露,接駁不依賴內部實作細節。

Security-conscious

Secrets、認證、授權與驗證放在伺服器。Client 程式當公開看待,權限給到剛夠用的最小範圍。

Maintainable

零件少、做法常見、程式可讀。只有問題需要時才加複雜度,因為之後會由別人維護。

Measurable

對運作重要的系統帶有 logging、分析與健康檢查,行為與成本用數據回答,而不是靠估計。

架構

架構原則

這是我們的起點。有理由就可以偏離,但要把理由寫下來。

  1. 01 可以靜態就靜態
  2. 02 實際可行就 serverless
  3. 03 API 界線清楚
  4. 04 Secrets 最小權限
  5. 05 結構化數據
  6. 06 服務可觀察

套用在這個網站

你正在看的網站也按同一套規則。頁面預先產出靜態 HTML,由 Cloudflare 的 edge network 派發,一次瀏覽不需 server-side rendering,也不查資料庫。真正在請求時執行的,只有 /api 底下少量 API:健康檢查、服務目錄、聯絡表格,以及預留作日後收款的 payment endpoints。

  • Frontend 靜態 HTML 與 CSS,只有互動需要時才用 JavaScript
  • API Serverless functions,在伺服器端驗證,JSON 格式一致
  • 儲存 查詢記錄存在 managed SQL database,不經第三方表格服務
  • Secrets 按環境存放,不會出現在 client bundle 或程式庫

你可以自行檢查 health endpoint: /api/health.

能力範圍

技術範圍

我們日常做的範圍。超出範圍的,會直接說明,而不是用你的項目來學。

AI / LLM Integration

針對具體工作使用 model,並有驗證、後備做法與成本可見度。

APIs

有版本的 HTTP 介面、webhook,以及經認證的服務界線。

Automation

按時間或事件執行的工作,有重試、logging 與例外隊列。

Data Processing

對結構化與文字數據做正規化、驗證與轉換。

Cloud Infrastructure

Serverless 與 edge 部署、環境分隔、managed secrets。

Web Applications

可及、適應不同畫面的介面,全程在伺服器端驗證。

System Integration

營運系統之間的接駁,每個欄位的擁有權寫清楚。

Analytics

營運報表與量度,建基於系統本身使用的同一份數據。

常用工具

Languages
TypeScript, Python, SQL
Interfaces
REST APIs, Webhooks, Server-side rendering
Data
Relational databases, Object storage, Structured logging
Platform
Cloudflare, Serverless runtimes, CI-based deployment
AI
Hosted AI APIs, Prompt versioning, Output validation

已有系統要檢視?

如果已有軟件在用,多數情況評估比重建有用。我們可以檢視現況,說明哪些值得保留。