我們已經一步一步從 go mod init 到 連上 Elasticsearch,完成了 Golang Phase 的基礎。今天的目標是:
回顧學到的重點,用架構圖總結專案全貌,為下一階段鋪路
回頭看每天任務都有明確目的,但這不是一條直線前進的路,而是在疊積木,每一塊都在為後面鋪路。
我們先建立專案骨架:加一個 healthz API、寫 table-driven 單元測試。
接著建立系統基礎保護:加入 logging 作為未來 debug 依據、加入 recovery 跟 timeout 在系統接觸外部服務時處理錯誤跟延遲。
然後加上穩定系統的細節:加上錯誤處理的 context 跟退避與抖動的重試策略。
接著加 benchmark 作為以後優化的判斷基準,加入 worker pool 控制併發,讓系統在面對壓力或異常變得更可預期。
我們也加入 pprof 和 metrics 找到最消耗系統效能的點,修改程式碼降低業務邏輯的耗能。
最後加入業務核心:搜尋。我們先定義了 SearchService,搭 Fake ES 來跑整合測試,然後打通真實 ES。實現解耦,我們的搜尋邏輯不應該綁死在 ES 的實作上,讓測試更容易,迭代更靈活,降低第一次接入真實後端的風險。
每一天背後其實都有清楚的目標:有些是為了確保系統基礎運作,有些是為了避免系統失控,有些則是為了鋪路到核心功能。
「API → Middleware → Service → Elasticsearch」的架構:

這張圖說明:
到目前為止:
這些都是未來進入 Elasticsearch Phase 的基石。因為我們已經把 API flow 抽象化,接下來只要換掉 SearchService 的實作,就能開始各種 ES 的查詢、mapping 與效能調優。
今天我們完成了 Recap:
明天我們將切入 Elasticsearch Phase,先從安裝與 mapping 開始,逐步打造搜尋核心。