iT邦幫忙

2025 iThome 鐵人賽

DAY 16
0

我們已經一步一步從 go mod init連上 Elasticsearch,完成了 Golang Phase 的基礎。今天的目標是:

回顧學到的重點,用架構圖總結專案全貌,為下一階段鋪路


Step 1:回顧學到什麼?

回頭看每天任務都有明確目的,但這不是一條直線前進的路,而是在疊積木,每一塊都在為後面鋪路。

我們先建立專案骨架:加一個 healthz API、寫 table-driven 單元測試。

接著建立系統基礎保護:加入 logging 作為未來 debug 依據、加入 recovery 跟 timeout 在系統接觸外部服務時處理錯誤跟延遲。

然後加上穩定系統的細節:加上錯誤處理的 context 跟退避與抖動的重試策略。

接著加 benchmark 作為以後優化的判斷基準,加入 worker pool 控制併發,讓系統在面對壓力或異常變得更可預期。

我們也加入 pprof 和 metrics 找到最消耗系統效能的點,修改程式碼降低業務邏輯的耗能。

最後加入業務核心:搜尋。我們先定義了 SearchService,搭 Fake ES 來跑整合測試,然後打通真實 ES。實現解耦,我們的搜尋邏輯不應該綁死在 ES 的實作上,讓測試更容易,迭代更靈活,降低第一次接入真實後端的風險。

每一天背後其實都有清楚的目標:有些是為了確保系統基礎運作,有些是為了避免系統失控,有些則是為了鋪路到核心功能。


Step 2:專案全貌架構圖

「API → Middleware → Service → Elasticsearch」的架構:

https://ithelp.ithome.com.tw/upload/images/20250930/20138331rDQZcUyvid.png

這張圖說明:

  • Handler 只處理 HTTP request
  • Middleware 提供橫切功能(logging, recovery, timeout)
  • Service 是抽象層,可接入 Fake 或 ES,這樣我們就能方便地切換「假資料」或「真資料庫」

Step 3:我們站在什麼位置?

到目前為止:

  • 程式碼基礎:乾淨、有測試、有觀測
  • 心態基礎:先假資料,再打通真路徑
  • 工程習慣:benchmark、pprof、metrics 先就位

這些都是未來進入 Elasticsearch Phase 的基石。因為我們已經把 API flow 抽象化,接下來只要換掉 SearchService 的實作,就能開始各種 ES 的查詢、mapping 與效能調優。


Step 4:小結

今天我們完成了 Recap

  1. 整理目前學到的知識
  2. 畫一張架構圖,總結整個 API flow
  3. 檢查基礎是否穩固,為 Elasticsearch Phase 做準備

明天我們將切入 Elasticsearch Phase,先從安裝與 mapping 開始,逐步打造搜尋核心。



上一篇
Day 15 - 整理專案:清理目錄、補測試、寫 README
下一篇
Day 17 - 安裝:Docker 單節點、固定 mapping
系列文
用 Golang + Elasticsearch + Kubernetes 打造雲原生搜尋服務30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言