這一章先整理 Go 常見會被用到的服務場景。對剛從 PHP 或 Python 轉來的讀者來說,先知道 Go 最常做哪些事,會更容易理解前面那些語言特性為什麼重要。

本章目標

學完本章後,你將能夠:

  1. 看出 Go 常見的服務落點
  2. 理解每種場景通常需要哪些核心能力
  3. 判斷哪些場景值得進一步用 Go 實作
  4. 把後續的實戰章節放回正確脈絡
  5. 分辨即時服務、背景 worker 與 API service 的不同責任

【觀察】Go 很常出現在服務邊界

Go 最常出現在需要長時間運行、協調 I/O、維持清楚邊界的服務層:

場景Go 常扮演的角色
WebSocket service長連線、事件傳遞、訂閱與廣播
background worker背景處理、批次同步、事件消費
API gateway路由、聚合、驗證與轉送
notification system推播、排程與重試
event processor事件解碼、去重、派送與狀態更新

這些場景共通點都是:工作量大多是 I/O 與協調,CPU 單點重運算通常只占一小部分。

【判讀】即時服務需要穩定的生命週期

WebSocket、SSE 或其他長連線服務,通常需要處理:

  • 連線建立與關閉
  • heartbeat
  • 事件路由
  • 慢 client
  • backpressure

這些都和 goroutine、channel、context、timeout 直接相關,所以 Go 很自然會出現在這裡。

【判讀】背景 worker 需要明確的停止條件

queue consumer、cron worker、event relay 或同步流程,通常都需要:

  • 可取消
  • 可重試
  • 可觀測
  • 可限流

這類工作很適合 Go,因為 runtime、context 與標準庫已經把這些邊界鋪好了。

【策略】API 聚合與服務編排

有些 Go 服務的主要角色是協調與整合:

  • 把多個下游資料聚合成一個 response
  • 在多個服務之間轉送 command
  • 在進入 domain 前先做 request normalization

這類工作通常會出現在微服務環境裡,Go 的清楚邊界與簡單部署會很有價值。

小結

Go 的常見場景很少是「單純做一個頁面」,更多是即時、背景、事件、聚合與服務邊界。先知道 Go 常被放在哪裡,後面的實戰章節就會更容易理解。