4 Types of Feature Flags and When to Use Them
After covering what Feature Flags are, this post explains four types of Feature Flags and their differing lifecycles, dynamism, and management strategies.
After covering what Feature Flags are, this post explains four types of Feature Flags and their differing lifecycles, dynamism, and management strategies.
先前探讨到:什么是 Feature Flag 以及它解决什么问题?了解 Feature Flag 存在的价值后,今天了解更多关于 4 种类型的 Feature Flag 以及实战上的用途。不同目的的 Flag,在设计方式、生命周期、动态程度与管理策略上都有明显差异。
先前探討到:什麼是 Feature Flag 以及它解決什麼問題?了解 Feature Flag 存在的價值後,今天了解更多關於 4 種類型的 Feature Flag 以及實戰上的用途。不同目的的 Flag,在設計方式、生命週期、動態程度與管理策略上都有明顯差異。
我一直覺得事情可以保持簡單就好,有問題改程式碼或環境變數切換就好,何必導入更複雜的套件管理與第三方服務呢?但真實情境當問題發生時不會有空閒慢慢部署與除錯,就有必要透過更完善的 Feature Flag 規劃來降低推送功能的風險,也能減少心臟病發作的機率。
I thought keeping things simple—changing code or env vars—was enough. But when incidents occur you don't have time to debug.
我一直觉得事情可以保持简单就好,有问题改程式码或环境变数切换就好,何必导入更复杂的套件管理与第三方服务呢?但真实情境当问题发生时不会有空闲慢慢部署与除错,就有必要透过更完善的 Feature Flag 规划来降低推送功能的风险,也能减少心脏病发作的机率。
To better replace modules via "dependency injection" for cleaner testing. I uploaded the demo example demonstrating testing architecture through DI.
通常有些规模的专案会透过架构分层的方式来管理,而近期在研究如何更好的透过「依赖注入」替换模块并实现更干净的测试。架构分层的概念可以参考之前写过的:Express.js 入门建构 MVC 范例。我上传了 go-gin-testing-todos 范例透过 DI 实践测试架构。
通常有些規模的專案會透過架構分層的方式來管理,而近期在研究如何更好的透過「依賴注入」替換模塊並實現更乾淨的測試。架構分層的概念可以參考之前寫過的:Express.js 入門建構 MVC 範例。我上傳了 go-gin-testing-todos 範例透過 DI 實踐測試架構。
From JS to Go, I wasn't familiar with Go's approach to modularity. Although similar in places, Go's simple and opinionated design is very evident.
从 JavaScript 转写 Go 我其实还是不太熟悉 Go 如何模组化处理代码,虽然它们有大致相似的地方,但使用体验感觉非常简单甚至到简陋的程度,当然简单并不意味着「容易」或「没用」,Go 简单且固执己见的哲学在各方面都感受得到。
從 JavaScript 轉寫 Go 我其實還是不太熟悉 Go 如何模組化處理代碼,雖然它們有大致相似的地方,但使用體驗感覺非常簡單甚至到簡陋的程度,當然簡單並不意味著「容易」或「沒用」,Go 簡單且固執己見的哲學在各方面都感受得到。
很早以前接觸資料庫就有聽說過「N+1 問題」,不過一直沒有寫下筆記認真思考過一次,這次撰寫問題成因與詳細解方與圖表。透過:資料結構設計(去正規化)、在 DB 層完成關聯資料查詢、批次查詢並在應用層組裝、ORM ODM Eager Loading 來解決。
使用 Agentic AI 解決問題時上下文管理至關重要,而 Anthropic 推出的 Agent Skill 上下文管理模式近期也成為業界的一種主流標準,在 Claude Code、Codex、Opencode 等工具中都有支援,透過研究如何整合進入現有的流程來增加開發效率。
Revisiting serialization/deserialization in Go and the origin of "Marshal", building on my earlier post about struct tags and reflect.