6.7 Go 常見服務場景總覽
6.7 Go 常見服務場景總覽
這一章先整理 Go 常見會被用到的服務場景。對剛從 PHP 或 Python 轉來的讀者來說,先知道 Go 最常做哪些事,會更容易理解前面那些語言特性為什麼重要。
本章目標
學完本章後,你將能夠:
- 看出 Go 常見的服務落點
- 理解每種場景通常需要哪些核心能力
- 判斷哪些場景值得進一步用 Go 實作
- 把後續的實戰章節放回正確脈絡
- 分辨即時服務、背景 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 常被放在哪裡,後面的實戰章節就會更容易理解。