iT邦幫忙

鐵人檔案

2025 iThome 鐵人賽
回列表
Software Development

Go Clean Architecture API 開發全攻略 系列

本系列文章將帶領讀者從零開始,使用 Go 語言打造一個完整、可維護、可測試的生產級 API 服務。我們將深入探討現代後端開發中的各個環節,從專案的架構設計、核心功能實現,到最終的測試、部署與維運。專案將採用六角形架構(Clean Architecture)思想,並整合 Gin、GORM、Docker、Swagger、golangci-lint 等業界常用工具與技術。

鐵人鍊成 | 共 30 篇文章 | 3 人訂閱 訂閱系列文 RSS系列文
DAY 21

[Day 21] 優雅地處理錯誤(二):定義自己的錯誤類型

在上一篇文章中,我們介紹了如何在六邊形架構中優雅地處理錯誤,並建立了一套從資料庫層到 HTTP 回應的完整錯誤處理流程。這一篇,我們將進一步探討如何定義自己的錯...

2025-09-21 ‧ 由 nick_forever 分享
DAY 22

[Day 22] Go 單元測試:如何 Mock 資料庫與外部依賴

什麼是單元測試?為什麼要寫單元測試?如何在 Go 中撰寫單元測試?這些問題的答案,網路上已有大量的資源可以參考,這裏就不再贅述。 然而,當我們的程式碼依賴外部系...

2025-09-22 ‧ 由 nick_forever 分享
DAY 23

[Day 23] 為何 `internal` 目錄對你的 Go 專案至關重要

在我們整個專案的目錄結構中,internal 目錄佔據了核心地位,我們幾乎所有的業務程式碼都存放在其中。你可能會想,這僅僅是一個命名約定嗎?我能把它命名為 pr...

2025-09-23 ‧ 由 nick_forever 分享
DAY 24

[Day 24] 從 MVC 到六角形架構:一個後端工程師的思考轉變

對於絕大多數後端工程師而言,MVC(Model-View-Controller)是我們學習 Web 開發時接觸的第一個,也是最經典的架構模式。無論是 Ruby...

2025-09-24 ‧ 由 nick_forever 分享
DAY 25

[Day 25] 快取服務(一):使用 Redis

當一個資料很少變動、但讀取頻繁的 API(例如「獲取使用者個人資料」)被大量呼叫時,每一次都去查詢資料庫會造成巨大的浪費和壓力。快取,就是將這些熱點資料暫時存放...

2025-09-25 ‧ 由 nick_forever 分享
DAY 26

[Day 26] 快取服務(二):最佳實踐與注意事項

我們這裡會以銀行的分行資料為例,來說明快取服務的最佳實踐與注意事項。 第三步:用「裝飾者模式」整合快取邏輯 在上一篇中,我們已經完成了快取服務的基本架構,接下來...

2025-09-26 ‧ 由 nick_forever 分享
DAY 27

[Day 27] 重複的程式碼,是一種原罪

在軟體開發的世界裡,有一條不成文的規則:「不要重複自己」(Don't Repeat Yourself, DRY)。這條規則強調,重複的程式碼不僅增加了維護的難度...

2025-09-27 ‧ 由 nick_forever 分享
DAY 28

[Day 28] 當業務邏輯變得複雜時如何調整架構

到目前為止,我們的架構在處理 CRUD(建立、讀取、更新、刪除)類型的功能時表現出色。但真實世界的業務遠比這複雜。如果需求變更為:「使用者註冊成功後,需要同時發...

2025-09-28 ‧ 由 nick_forever 分享
DAY 29

[Day 29] 程式碼品質守護者:使用 golangci-lint, gofumpt 統一團隊風格

軟體工程不僅僅是讓程式碼能夠運行,更重要的是保證其品質:可讀性、可維護性、以及潛在錯誤的預防。如果單純依賴人工 Code Review 來檢查程式碼風格、未處理...

2025-09-29 ‧ 由 nick_forever 分享
DAY 30

[Day 30] 監控:為你的 Go 服務加上眼睛和耳朵

我們的服務已經部署上線,但它是一個「黑盒子」。它現在健康嗎?每秒處理多少請求?平均回應時間是多少?錯誤率有沒有突然飆升?要回答這些問題,我們需要可觀測性(Obs...

2025-09-30 ‧ 由 nick_forever 分享