Spirit 異想世界
閒談軟體設計
55
免費公開
房間資訊
這是從 Medium 開始的一個專題,主要是想用輕鬆閒談的方式,分享這幾年軟體開發的心得,原本比較侷限於軟體架構,但這幾年的文章不僅限於架構,也聊不少流程相關的心得,所以趁換平台,順勢換成閒談軟體設計。
Top 5
1
閒談軟體設計:拆解子領域
2
閒談軟體設計:Client Server
3
閒談軟體設計:UUID 之三部曲
4
閒談軟體設計:UUID
5
閒談軟體設計:Database Driven Design?
1
閒談軟體設計:拆解子領域
2
閒談軟體設計:Client Server
3
閒談軟體設計:UUID 之三部曲
4
閒談軟體設計:UUID
5
閒談軟體設計:Database Driven Design?
全部
全部
全部類型
免費與付費
最新發佈
最新發佈
Spirit
2026/03/22
閒談軟體設計:拆解子領域
軟體系統的混亂常源於需求的演進,而非刻意為之。本文分享如何透過重構,將一個龐大混亂的程式碼包,依循 Clean Architecture 與 DDD 的原則,拆解成多個語意清晰、相互獨立的子領域,並探討拆分過程中遇到的挑戰與解決方案,如引入反腐層、處理資料結構複用等議題,強調測試在重構中的重要性。
#
軟體
#
開發
#
測試
5
1
Spirit
2026/03/22
閒談軟體設計:拆解子領域
軟體系統的混亂常源於需求的演進,而非刻意為之。本文分享如何透過重構,將一個龐大混亂的程式碼包,依循 Clean Architecture 與 DDD 的原則,拆解成多個語意清晰、相互獨立的子領域,並探討拆分過程中遇到的挑戰與解決方案,如引入反腐層、處理資料結構複用等議題,強調測試在重構中的重要性。
#
軟體
#
開發
#
測試
5
1
Spirit
2026/03/15
閒談軟體設計:Interface-based Typed Configuration
本文探討如何在 Javalin 環境下,透過 Interface-based Typed Configuration 實現集中管理、型別安全、慣例優先、容易實作與隔離來源的配置管理方案,並與 Spring framework 的配置方式進行比較,強調此方案的輕量、實用與可擴展性。
#
軟體
#
設計
#
Key
1
Spirit
2026/03/15
閒談軟體設計:Interface-based Typed Configuration
本文探討如何在 Javalin 環境下,透過 Interface-based Typed Configuration 實現集中管理、型別安全、慣例優先、容易實作與隔離來源的配置管理方案,並與 Spring framework 的配置方式進行比較,強調此方案的輕量、實用與可擴展性。
#
軟體
#
設計
#
Key
1
Spirit
2026/03/08
閒聊軟體設計:分散式鎖
開發系統過程中常遇到 race condition 問題,文章探討了樂觀鎖、Serializable Isolation Level 交易的限制,並提出 PostgreSQL Advisory Lock 作為一種方便且無需額外部署基礎設施的分散式鎖解決方案,以確保批次寫入與背景運算能按順序執行。
#
執行
#
交易
#
資源
1
1
Spirit
2026/03/08
閒聊軟體設計:分散式鎖
開發系統過程中常遇到 race condition 問題,文章探討了樂觀鎖、Serializable Isolation Level 交易的限制,並提出 PostgreSQL Advisory Lock 作為一種方便且無需額外部署基礎設施的分散式鎖解決方案,以確保批次寫入與背景運算能按順序執行。
#
執行
#
交易
#
資源
1
1
Spirit
2026/03/01
閒談軟體設計:邁向 Aggregate
本文探討在軟體開發過程中,將原本並非 Aggregate 的設計,逐步重構成具有 Aggregate 精神的實作。作者分享了一個實際案例,說明如何在一致性問題和更複雜的協同作業需求出現時,透過引入樂觀鎖,並逐步思考 Aggregate 的設計原則,最終找到一個在滿足系統需求下的特殊解決方案。
#
開發
#
設計
#
ChatGPT
1
1
Spirit
2026/03/01
閒談軟體設計:邁向 Aggregate
本文探討在軟體開發過程中,將原本並非 Aggregate 的設計,逐步重構成具有 Aggregate 精神的實作。作者分享了一個實際案例,說明如何在一致性問題和更複雜的協同作業需求出現時,透過引入樂觀鎖,並逐步思考 Aggregate 的設計原則,最終找到一個在滿足系統需求下的特殊解決方案。
#
開發
#
設計
#
ChatGPT
1
1
Spirit
2026/02/21
閒談軟體設計:踩煞車
作者分享了 B2B 產品在迭代開發過程中所遇到的挑戰,特別是在追求功能完整性的過程中,如何避免設計變得過於複雜,進而影響使用者體驗。文中探討了從使用者回饋、市場變化到團隊內部認知的變化,並提出了在產品開發中「踩煞車」的重要性,以確保產品能真正符合使用者需求,而非徒增複雜度。
#
開發
#
軟體
#
設計
2
1
Spirit
2026/02/21
閒談軟體設計:踩煞車
作者分享了 B2B 產品在迭代開發過程中所遇到的挑戰,特別是在追求功能完整性的過程中,如何避免設計變得過於複雜,進而影響使用者體驗。文中探討了從使用者回饋、市場變化到團隊內部認知的變化,並提出了在產品開發中「踩煞車」的重要性,以確保產品能真正符合使用者需求,而非徒增複雜度。
#
開發
#
軟體
#
設計
2
1
Spirit
2026/02/14
閒談軟體設計:實地訪談
分享在不同公司期間,與客戶進行實地拜訪的豐富經,這些故事不僅是單純的客戶訪談紀錄,更揭示了產品開發過程中可能遇到的挑戰、客戶的真實痛點,以及從數據以外的角度全面理解市場需求的洞見。文章強調了工程師實地訪談的重要性,並鼓勵讀者若有機會應多加嘗試,從中獲取寶貴的經驗與啟發。
#
客戶
#
設計
#
軟體
3
2
Spirit
2026/02/14
閒談軟體設計:實地訪談
分享在不同公司期間,與客戶進行實地拜訪的豐富經,這些故事不僅是單純的客戶訪談紀錄,更揭示了產品開發過程中可能遇到的挑戰、客戶的真實痛點,以及從數據以外的角度全面理解市場需求的洞見。文章強調了工程師實地訪談的重要性,並鼓勵讀者若有機會應多加嘗試,從中獲取寶貴的經驗與啟發。
#
客戶
#
設計
#
軟體
3
2
Spirit
2026/02/07
閒談軟體設計:讓數字說話
本文探討了在團隊成長過程中,如何建立關注數據的文化,並從開發數據、工程營運數據、產品營運數據及使用者體驗數據四個面向,說明數據在產品決策、優化與進步中的重要性。讓團隊相信數據的價值是建立數據文化的關鍵,並鼓勵工程師不僅關注程式碼,更要關心產品的整體成效。
#
設計
#
開發
#
工程師
1
Spirit
2026/02/07
閒談軟體設計:讓數字說話
本文探討了在團隊成長過程中,如何建立關注數據的文化,並從開發數據、工程營運數據、產品營運數據及使用者體驗數據四個面向,說明數據在產品決策、優化與進步中的重要性。讓團隊相信數據的價值是建立數據文化的關鍵,並鼓勵工程師不僅關注程式碼,更要關心產品的整體成效。
#
設計
#
開發
#
工程師
1
Spirit
2026/02/02
閒談軟體設計:Event Cener
本文探討透過 EventCenter 抽象層,將核心邏輯與訊息佇列技術框架解耦,提升系統的彈性和可維護性。藉由建立一個僅包含三個函式的輕量級 EventCenter 介面,並提供 GCPEventCenter 作為具體實作,說明這種設計如何在不修改核心邏輯的情況下,輕鬆更換底層的訊息傳遞實現。
#
設計
#
軟體
#
核心
Spirit
2026/02/02
閒談軟體設計:Event Cener
本文探討透過 EventCenter 抽象層,將核心邏輯與訊息佇列技術框架解耦,提升系統的彈性和可維護性。藉由建立一個僅包含三個函式的輕量級 EventCenter 介面,並提供 GCPEventCenter 作為具體實作,說明這種設計如何在不修改核心邏輯的情況下,輕鬆更換底層的訊息傳遞實現。
#
設計
#
軟體
#
核心
Spirit
2026/01/11
閒談軟體設計:軟刪除
這篇文章探討了「軟刪除」的實現方式、優缺點,並解釋軟刪除如何解決開發與營運系統中常見的資料刪除難題,分享在實作時,讀取邏輯的修改、關聯資料的處理,以及「同生共死」原則在設計決策中的重要性。此外,軟刪除為「超級使用者」提供的「開天眼」能力。以增加系統複雜度換取資料處理的彈性。
#
刪除
#
菜單
#
訂單
2
Spirit
2026/01/11
閒談軟體設計:軟刪除
這篇文章探討了「軟刪除」的實現方式、優缺點,並解釋軟刪除如何解決開發與營運系統中常見的資料刪除難題,分享在實作時,讀取邏輯的修改、關聯資料的處理,以及「同生共死」原則在設計決策中的重要性。此外,軟刪除為「超級使用者」提供的「開天眼」能力。以增加系統複雜度換取資料處理的彈性。
#
刪除
#
菜單
#
訂單
2
Spirit
2026/01/04
閒談軟體設計:交易管理
在決定離開 Spring Boot 後,處理資料庫交易管理成了一個挑戰。本文探討如何在不依賴 Spring framework 的情況下,結合 HikariCP、Sql2o、Service Locator 和 ThreadLocal 來實現交易管理,並提供一個基於函式風格的聲明式範例。
#
交易
#
管理
#
設計
3
Spirit
2026/01/04
閒談軟體設計:交易管理
在決定離開 Spring Boot 後,處理資料庫交易管理成了一個挑戰。本文探討如何在不依賴 Spring framework 的情況下,結合 HikariCP、Sql2o、Service Locator 和 ThreadLocal 來實現交易管理,並提供一個基於函式風格的聲明式範例。
#
交易
#
管理
#
設計
3
Spirit
2025/12/28
閒談軟體設計:Read Model
透過實際應用場景,闡述如何設計 Read Model 以優化效能,並討論其與領域模型的關係,同時提出設計時需注意的細節,最後留下關於 Read Model 在架構中的位置的討論。
#
軟體
#
設計
#
測試
1
2
Spirit
2025/12/28
閒談軟體設計:Read Model
透過實際應用場景,闡述如何設計 Read Model 以優化效能,並討論其與領域模型的關係,同時提出設計時需注意的細節,最後留下關於 Read Model 在架構中的位置的討論。
#
軟體
#
設計
#
測試
1
2
Spirit
2025/12/21
閒談軟體設計:樂觀鎖
分享瞭如何在新系統中應用樂觀鎖,透過 version 欄位簡化併發控制,同時保持高吞吐量。文章也觸及了樂觀鎖的進階應用及注意事項,並總結了兩種鎖機制的適用場景,為開發者提供實用的選擇指南。
#
軟體
#
設計
#
程式
3
2
Spirit
2025/12/21
閒談軟體設計:樂觀鎖
分享瞭如何在新系統中應用樂觀鎖,透過 version 欄位簡化併發控制,同時保持高吞吐量。文章也觸及了樂觀鎖的進階應用及注意事項,並總結了兩種鎖機制的適用場景,為開發者提供實用的選擇指南。
#
軟體
#
設計
#
程式
3
2
Spirit
2025/12/14
閒談軟體設計:NCC
現今的系統不論是 B to B、B to C 或是 B to B to C,通知都是不可少,不管是簡訊發送 OTP,還是發送臨時密碼的 email,或各式各樣的 push 通知,通知已不可少的環節,這也是為什麼在一開始系統架構設計時,早早把 ncc 規劃成一個獨立模組 (子系統)。
#
軟體
#
處理器
#
重啟
3
1
Spirit
2025/12/14
閒談軟體設計:NCC
現今的系統不論是 B to B、B to C 或是 B to B to C,通知都是不可少,不管是簡訊發送 OTP,還是發送臨時密碼的 email,或各式各樣的 push 通知,通知已不可少的環節,這也是為什麼在一開始系統架構設計時,早早把 ncc 規劃成一個獨立模組 (子系統)。
#
軟體
#
處理器
#
重啟
3
1
Spirit
2025/12/13
閒談軟體設計:UUID & ULID
本文深入探討了 UUID 的演進,介紹了 UUID v6 和 v7 相較於舊版本在時間排序上的顯著提升,以及 ULID 作為另一種優化 ID 設計的替代方案。技術是不斷進化的,定期檢視是必要的。
#
軟體
#
版本
#
設計
3
2
Spirit
2025/12/13
閒談軟體設計:UUID & ULID
本文深入探討了 UUID 的演進,介紹了 UUID v6 和 v7 相較於舊版本在時間排序上的顯著提升,以及 ULID 作為另一種優化 ID 設計的替代方案。技術是不斷進化的,定期檢視是必要的。
#
軟體
#
版本
#
設計
3
2
Spirit
2025/11/22
閒談軟體設計:備援
分享自身團隊在 Cloudflare 當機時,如何透過事先規劃的備援機制,在極短時間內將服務切換至 GCP Cloud DNS 並恢復正常運作的經驗。文章深入探討備援設計的複雜性,涵蓋成本、同步、複雜度及演練等面向,並總結事後檢討,強調建置外部監控系統和自動化 SSL 憑證更新的重要性。
#
設計
#
雲端
#
備援
6
4
Spirit
2025/11/22
閒談軟體設計:備援
分享自身團隊在 Cloudflare 當機時,如何透過事先規劃的備援機制,在極短時間內將服務切換至 GCP Cloud DNS 並恢復正常運作的經驗。文章深入探討備援設計的複雜性,涵蓋成本、同步、複雜度及演練等面向,並總結事後檢討,強調建置外部監控系統和自動化 SSL 憑證更新的重要性。
#
設計
#
雲端
#
備援
6
4
Spirit
2025/06/29
閒談軟體設計:身家調查
本文探討後端 API 安全驗證機制,說明如何基於請求憑證進行身家調查,確保只有授權使用者才能存取資源。文中詳細闡述了資料採信原則、角色來源、組織層級的設計考量,並介紹簡單的實作範例,以確保系統安全。
#
軟體
#
程式
#
通行證
3
Spirit
2025/06/29
閒談軟體設計:身家調查
本文探討後端 API 安全驗證機制,說明如何基於請求憑證進行身家調查,確保只有授權使用者才能存取資源。文中詳細闡述了資料採信原則、角色來源、組織層級的設計考量,並介紹簡單的實作範例,以確保系統安全。
#
軟體
#
程式
#
通行證
3
Spirit
2025/06/22
閒談軟體設計:安全聲明
本文探討如何使用函數式風格聲明 Javalin API endpoint 的安全性需求,並透過組合函數,例如 any 和 all,以及自定義函數,例如 anyManager 和 anyOwner,來簡化複雜的權限檢查。此方法避免了使用註解的繁瑣,並提高了程式碼的可讀性和可維護性。
#
程式
#
聲明
#
角色
3
2
Spirit
2025/06/22
閒談軟體設計:安全聲明
本文探討如何使用函數式風格聲明 Javalin API endpoint 的安全性需求,並透過組合函數,例如 any 和 all,以及自定義函數,例如 anyManager 和 anyOwner,來簡化複雜的權限檢查。此方法避免了使用註解的繁瑣,並提高了程式碼的可讀性和可維護性。
#
程式
#
聲明
#
角色
3
2
Spirit
2025/06/15
閒談軟體設計:Web 框架的選擇
從Spring Boot轉換到Javalin的過程與考量,以及如何保持核心業務邏輯與Web框架的距離以提升專案彈性。文中比較了Micronaut, Helidon和Javalin三個輕量級框架,並說明選擇Javalin的原因及優缺點。
#
程式
#
軟體
#
Micron
4
2
Spirit
2025/06/15
閒談軟體設計:Web 框架的選擇
從Spring Boot轉換到Javalin的過程與考量,以及如何保持核心業務邏輯與Web框架的距離以提升專案彈性。文中比較了Micronaut, Helidon和Javalin三個輕量級框架,並說明選擇Javalin的原因及優缺點。
#
程式
#
軟體
#
Micron
4
2
Spirit
2025/06/08
閒談軟體設計:日誌框架
日誌設計包含幾個重要考量因素,包括關聯式查詢、雲端生態支援、情境豐富性、結構化日誌以及與商業邏輯核心保持距離。利用 correlation ID、ThreadLocal 以及自定義抽象物件,實現了這些需求,並簡潔地說明在不同任務發動情況下 (API請求、定時執行、事件驅動) 的使用
#
程式
#
設計
#
執行
3
2
Spirit
2025/06/08
閒談軟體設計:日誌框架
日誌設計包含幾個重要考量因素,包括關聯式查詢、雲端生態支援、情境豐富性、結構化日誌以及與商業邏輯核心保持距離。利用 correlation ID、ThreadLocal 以及自定義抽象物件,實現了這些需求,並簡潔地說明在不同任務發動情況下 (API請求、定時執行、事件驅動) 的使用
#
程式
#
設計
#
執行
3
2
Spirit
2024/03/23
閒談軟體設計:技術債是選擇來的
這篇文章探討了在軟體開發中的技術債可能來自哪些原因,以及如何自動化偵測與修復技術債。作者透過分享不同情境下的技術債選擇,提供了對於技術債的思考與建議,針對開發人員在需要做出無奈的技術決策時,提供了一些建議。此外,還提供了一些在做出技術決策時的方法,如保留抽象層和避免vendor lock-in。
#
開發
#
技術債
6
Spirit
2024/03/23
閒談軟體設計:技術債是選擇來的
這篇文章探討了在軟體開發中的技術債可能來自哪些原因,以及如何自動化偵測與修復技術債。作者透過分享不同情境下的技術債選擇,提供了對於技術債的思考與建議,針對開發人員在需要做出無奈的技術決策時,提供了一些建議。此外,還提供了一些在做出技術決策時的方法,如保留抽象層和避免vendor lock-in。
#
開發
#
技術債
6
加入
Top 5
1
閒談軟體設計:拆解子領域
2
閒談軟體設計:Client Server
3
閒談軟體設計:UUID 之三部曲
4
閒談軟體設計:UUID
5
閒談軟體設計:Database Driven Design?
1
閒談軟體設計:拆解子領域
2
閒談軟體設計:Client Server
3
閒談軟體設計:UUID 之三部曲
4
閒談軟體設計:UUID
5
閒談軟體設計:Database Driven Design?
全部
全部
全部類型
免費與付費
最新發佈
最新發佈
Spirit
2026/03/22
閒談軟體設計:拆解子領域
軟體系統的混亂常源於需求的演進,而非刻意為之。本文分享如何透過重構,將一個龐大混亂的程式碼包,依循 Clean Architecture 與 DDD 的原則,拆解成多個語意清晰、相互獨立的子領域,並探討拆分過程中遇到的挑戰與解決方案,如引入反腐層、處理資料結構複用等議題,強調測試在重構中的重要性。
#
軟體
#
開發
#
測試
5
1
Spirit
2026/03/22
閒談軟體設計:拆解子領域
軟體系統的混亂常源於需求的演進,而非刻意為之。本文分享如何透過重構,將一個龐大混亂的程式碼包,依循 Clean Architecture 與 DDD 的原則,拆解成多個語意清晰、相互獨立的子領域,並探討拆分過程中遇到的挑戰與解決方案,如引入反腐層、處理資料結構複用等議題,強調測試在重構中的重要性。
#
軟體
#
開發
#
測試
5
1
Spirit
2026/03/15
閒談軟體設計:Interface-based Typed Configuration
本文探討如何在 Javalin 環境下,透過 Interface-based Typed Configuration 實現集中管理、型別安全、慣例優先、容易實作與隔離來源的配置管理方案,並與 Spring framework 的配置方式進行比較,強調此方案的輕量、實用與可擴展性。
#
軟體
#
設計
#
Key
1
Spirit
2026/03/15
閒談軟體設計:Interface-based Typed Configuration
本文探討如何在 Javalin 環境下,透過 Interface-based Typed Configuration 實現集中管理、型別安全、慣例優先、容易實作與隔離來源的配置管理方案,並與 Spring framework 的配置方式進行比較,強調此方案的輕量、實用與可擴展性。
#
軟體
#
設計
#
Key
1
Spirit
2026/03/08
閒聊軟體設計:分散式鎖
開發系統過程中常遇到 race condition 問題,文章探討了樂觀鎖、Serializable Isolation Level 交易的限制,並提出 PostgreSQL Advisory Lock 作為一種方便且無需額外部署基礎設施的分散式鎖解決方案,以確保批次寫入與背景運算能按順序執行。
#
執行
#
交易
#
資源
1
1
Spirit
2026/03/08
閒聊軟體設計:分散式鎖
開發系統過程中常遇到 race condition 問題,文章探討了樂觀鎖、Serializable Isolation Level 交易的限制,並提出 PostgreSQL Advisory Lock 作為一種方便且無需額外部署基礎設施的分散式鎖解決方案,以確保批次寫入與背景運算能按順序執行。
#
執行
#
交易
#
資源
1
1
Spirit
2026/03/01
閒談軟體設計:邁向 Aggregate
本文探討在軟體開發過程中,將原本並非 Aggregate 的設計,逐步重構成具有 Aggregate 精神的實作。作者分享了一個實際案例,說明如何在一致性問題和更複雜的協同作業需求出現時,透過引入樂觀鎖,並逐步思考 Aggregate 的設計原則,最終找到一個在滿足系統需求下的特殊解決方案。
#
開發
#
設計
#
ChatGPT
1
1
Spirit
2026/03/01
閒談軟體設計:邁向 Aggregate
本文探討在軟體開發過程中,將原本並非 Aggregate 的設計,逐步重構成具有 Aggregate 精神的實作。作者分享了一個實際案例,說明如何在一致性問題和更複雜的協同作業需求出現時,透過引入樂觀鎖,並逐步思考 Aggregate 的設計原則,最終找到一個在滿足系統需求下的特殊解決方案。
#
開發
#
設計
#
ChatGPT
1
1
Spirit
2026/02/21
閒談軟體設計:踩煞車
作者分享了 B2B 產品在迭代開發過程中所遇到的挑戰,特別是在追求功能完整性的過程中,如何避免設計變得過於複雜,進而影響使用者體驗。文中探討了從使用者回饋、市場變化到團隊內部認知的變化,並提出了在產品開發中「踩煞車」的重要性,以確保產品能真正符合使用者需求,而非徒增複雜度。
#
開發
#
軟體
#
設計
2
1
Spirit
2026/02/21
閒談軟體設計:踩煞車
作者分享了 B2B 產品在迭代開發過程中所遇到的挑戰,特別是在追求功能完整性的過程中,如何避免設計變得過於複雜,進而影響使用者體驗。文中探討了從使用者回饋、市場變化到團隊內部認知的變化,並提出了在產品開發中「踩煞車」的重要性,以確保產品能真正符合使用者需求,而非徒增複雜度。
#
開發
#
軟體
#
設計
2
1
Spirit
2026/02/14
閒談軟體設計:實地訪談
分享在不同公司期間,與客戶進行實地拜訪的豐富經,這些故事不僅是單純的客戶訪談紀錄,更揭示了產品開發過程中可能遇到的挑戰、客戶的真實痛點,以及從數據以外的角度全面理解市場需求的洞見。文章強調了工程師實地訪談的重要性,並鼓勵讀者若有機會應多加嘗試,從中獲取寶貴的經驗與啟發。
#
客戶
#
設計
#
軟體
3
2
Spirit
2026/02/14
閒談軟體設計:實地訪談
分享在不同公司期間,與客戶進行實地拜訪的豐富經,這些故事不僅是單純的客戶訪談紀錄,更揭示了產品開發過程中可能遇到的挑戰、客戶的真實痛點,以及從數據以外的角度全面理解市場需求的洞見。文章強調了工程師實地訪談的重要性,並鼓勵讀者若有機會應多加嘗試,從中獲取寶貴的經驗與啟發。
#
客戶
#
設計
#
軟體
3
2
Spirit
2026/02/07
閒談軟體設計:讓數字說話
本文探討了在團隊成長過程中,如何建立關注數據的文化,並從開發數據、工程營運數據、產品營運數據及使用者體驗數據四個面向,說明數據在產品決策、優化與進步中的重要性。讓團隊相信數據的價值是建立數據文化的關鍵,並鼓勵工程師不僅關注程式碼,更要關心產品的整體成效。
#
設計
#
開發
#
工程師
1
Spirit
2026/02/07
閒談軟體設計:讓數字說話
本文探討了在團隊成長過程中,如何建立關注數據的文化,並從開發數據、工程營運數據、產品營運數據及使用者體驗數據四個面向,說明數據在產品決策、優化與進步中的重要性。讓團隊相信數據的價值是建立數據文化的關鍵,並鼓勵工程師不僅關注程式碼,更要關心產品的整體成效。
#
設計
#
開發
#
工程師
1
Spirit
2026/02/02
閒談軟體設計:Event Cener
本文探討透過 EventCenter 抽象層,將核心邏輯與訊息佇列技術框架解耦,提升系統的彈性和可維護性。藉由建立一個僅包含三個函式的輕量級 EventCenter 介面,並提供 GCPEventCenter 作為具體實作,說明這種設計如何在不修改核心邏輯的情況下,輕鬆更換底層的訊息傳遞實現。
#
設計
#
軟體
#
核心
Spirit
2026/02/02
閒談軟體設計:Event Cener
本文探討透過 EventCenter 抽象層,將核心邏輯與訊息佇列技術框架解耦,提升系統的彈性和可維護性。藉由建立一個僅包含三個函式的輕量級 EventCenter 介面,並提供 GCPEventCenter 作為具體實作,說明這種設計如何在不修改核心邏輯的情況下,輕鬆更換底層的訊息傳遞實現。
#
設計
#
軟體
#
核心
Spirit
2026/01/11
閒談軟體設計:軟刪除
這篇文章探討了「軟刪除」的實現方式、優缺點,並解釋軟刪除如何解決開發與營運系統中常見的資料刪除難題,分享在實作時,讀取邏輯的修改、關聯資料的處理,以及「同生共死」原則在設計決策中的重要性。此外,軟刪除為「超級使用者」提供的「開天眼」能力。以增加系統複雜度換取資料處理的彈性。
#
刪除
#
菜單
#
訂單
2
Spirit
2026/01/11
閒談軟體設計:軟刪除
這篇文章探討了「軟刪除」的實現方式、優缺點,並解釋軟刪除如何解決開發與營運系統中常見的資料刪除難題,分享在實作時,讀取邏輯的修改、關聯資料的處理,以及「同生共死」原則在設計決策中的重要性。此外,軟刪除為「超級使用者」提供的「開天眼」能力。以增加系統複雜度換取資料處理的彈性。
#
刪除
#
菜單
#
訂單
2
Spirit
2026/01/04
閒談軟體設計:交易管理
在決定離開 Spring Boot 後,處理資料庫交易管理成了一個挑戰。本文探討如何在不依賴 Spring framework 的情況下,結合 HikariCP、Sql2o、Service Locator 和 ThreadLocal 來實現交易管理,並提供一個基於函式風格的聲明式範例。
#
交易
#
管理
#
設計
3
Spirit
2026/01/04
閒談軟體設計:交易管理
在決定離開 Spring Boot 後,處理資料庫交易管理成了一個挑戰。本文探討如何在不依賴 Spring framework 的情況下,結合 HikariCP、Sql2o、Service Locator 和 ThreadLocal 來實現交易管理,並提供一個基於函式風格的聲明式範例。
#
交易
#
管理
#
設計
3
Spirit
2025/12/28
閒談軟體設計:Read Model
透過實際應用場景,闡述如何設計 Read Model 以優化效能,並討論其與領域模型的關係,同時提出設計時需注意的細節,最後留下關於 Read Model 在架構中的位置的討論。
#
軟體
#
設計
#
測試
1
2
Spirit
2025/12/28
閒談軟體設計:Read Model
透過實際應用場景,闡述如何設計 Read Model 以優化效能,並討論其與領域模型的關係,同時提出設計時需注意的細節,最後留下關於 Read Model 在架構中的位置的討論。
#
軟體
#
設計
#
測試
1
2
Spirit
2025/12/21
閒談軟體設計:樂觀鎖
分享瞭如何在新系統中應用樂觀鎖,透過 version 欄位簡化併發控制,同時保持高吞吐量。文章也觸及了樂觀鎖的進階應用及注意事項,並總結了兩種鎖機制的適用場景,為開發者提供實用的選擇指南。
#
軟體
#
設計
#
程式
3
2
Spirit
2025/12/21
閒談軟體設計:樂觀鎖
分享瞭如何在新系統中應用樂觀鎖,透過 version 欄位簡化併發控制,同時保持高吞吐量。文章也觸及了樂觀鎖的進階應用及注意事項,並總結了兩種鎖機制的適用場景,為開發者提供實用的選擇指南。
#
軟體
#
設計
#
程式
3
2
Spirit
2025/12/14
閒談軟體設計:NCC
現今的系統不論是 B to B、B to C 或是 B to B to C,通知都是不可少,不管是簡訊發送 OTP,還是發送臨時密碼的 email,或各式各樣的 push 通知,通知已不可少的環節,這也是為什麼在一開始系統架構設計時,早早把 ncc 規劃成一個獨立模組 (子系統)。
#
軟體
#
處理器
#
重啟
3
1
Spirit
2025/12/14
閒談軟體設計:NCC
現今的系統不論是 B to B、B to C 或是 B to B to C,通知都是不可少,不管是簡訊發送 OTP,還是發送臨時密碼的 email,或各式各樣的 push 通知,通知已不可少的環節,這也是為什麼在一開始系統架構設計時,早早把 ncc 規劃成一個獨立模組 (子系統)。
#
軟體
#
處理器
#
重啟
3
1
Spirit
2025/12/13
閒談軟體設計:UUID & ULID
本文深入探討了 UUID 的演進,介紹了 UUID v6 和 v7 相較於舊版本在時間排序上的顯著提升,以及 ULID 作為另一種優化 ID 設計的替代方案。技術是不斷進化的,定期檢視是必要的。
#
軟體
#
版本
#
設計
3
2
Spirit
2025/12/13
閒談軟體設計:UUID & ULID
本文深入探討了 UUID 的演進,介紹了 UUID v6 和 v7 相較於舊版本在時間排序上的顯著提升,以及 ULID 作為另一種優化 ID 設計的替代方案。技術是不斷進化的,定期檢視是必要的。
#
軟體
#
版本
#
設計
3
2
Spirit
2025/11/22
閒談軟體設計:備援
分享自身團隊在 Cloudflare 當機時,如何透過事先規劃的備援機制,在極短時間內將服務切換至 GCP Cloud DNS 並恢復正常運作的經驗。文章深入探討備援設計的複雜性,涵蓋成本、同步、複雜度及演練等面向,並總結事後檢討,強調建置外部監控系統和自動化 SSL 憑證更新的重要性。
#
設計
#
雲端
#
備援
6
4
Spirit
2025/11/22
閒談軟體設計:備援
分享自身團隊在 Cloudflare 當機時,如何透過事先規劃的備援機制,在極短時間內將服務切換至 GCP Cloud DNS 並恢復正常運作的經驗。文章深入探討備援設計的複雜性,涵蓋成本、同步、複雜度及演練等面向,並總結事後檢討,強調建置外部監控系統和自動化 SSL 憑證更新的重要性。
#
設計
#
雲端
#
備援
6
4
Spirit
2025/06/29
閒談軟體設計:身家調查
本文探討後端 API 安全驗證機制,說明如何基於請求憑證進行身家調查,確保只有授權使用者才能存取資源。文中詳細闡述了資料採信原則、角色來源、組織層級的設計考量,並介紹簡單的實作範例,以確保系統安全。
#
軟體
#
程式
#
通行證
3
Spirit
2025/06/29
閒談軟體設計:身家調查
本文探討後端 API 安全驗證機制,說明如何基於請求憑證進行身家調查,確保只有授權使用者才能存取資源。文中詳細闡述了資料採信原則、角色來源、組織層級的設計考量,並介紹簡單的實作範例,以確保系統安全。
#
軟體
#
程式
#
通行證
3
Spirit
2025/06/22
閒談軟體設計:安全聲明
本文探討如何使用函數式風格聲明 Javalin API endpoint 的安全性需求,並透過組合函數,例如 any 和 all,以及自定義函數,例如 anyManager 和 anyOwner,來簡化複雜的權限檢查。此方法避免了使用註解的繁瑣,並提高了程式碼的可讀性和可維護性。
#
程式
#
聲明
#
角色
3
2
Spirit
2025/06/22
閒談軟體設計:安全聲明
本文探討如何使用函數式風格聲明 Javalin API endpoint 的安全性需求,並透過組合函數,例如 any 和 all,以及自定義函數,例如 anyManager 和 anyOwner,來簡化複雜的權限檢查。此方法避免了使用註解的繁瑣,並提高了程式碼的可讀性和可維護性。
#
程式
#
聲明
#
角色
3
2
Spirit
2025/06/15
閒談軟體設計:Web 框架的選擇
從Spring Boot轉換到Javalin的過程與考量,以及如何保持核心業務邏輯與Web框架的距離以提升專案彈性。文中比較了Micronaut, Helidon和Javalin三個輕量級框架,並說明選擇Javalin的原因及優缺點。
#
程式
#
軟體
#
Micron
4
2
Spirit
2025/06/15
閒談軟體設計:Web 框架的選擇
從Spring Boot轉換到Javalin的過程與考量,以及如何保持核心業務邏輯與Web框架的距離以提升專案彈性。文中比較了Micronaut, Helidon和Javalin三個輕量級框架,並說明選擇Javalin的原因及優缺點。
#
程式
#
軟體
#
Micron
4
2
Spirit
2025/06/08
閒談軟體設計:日誌框架
日誌設計包含幾個重要考量因素,包括關聯式查詢、雲端生態支援、情境豐富性、結構化日誌以及與商業邏輯核心保持距離。利用 correlation ID、ThreadLocal 以及自定義抽象物件,實現了這些需求,並簡潔地說明在不同任務發動情況下 (API請求、定時執行、事件驅動) 的使用
#
程式
#
設計
#
執行
3
2
Spirit
2025/06/08
閒談軟體設計:日誌框架
日誌設計包含幾個重要考量因素,包括關聯式查詢、雲端生態支援、情境豐富性、結構化日誌以及與商業邏輯核心保持距離。利用 correlation ID、ThreadLocal 以及自定義抽象物件,實現了這些需求,並簡潔地說明在不同任務發動情況下 (API請求、定時執行、事件驅動) 的使用
#
程式
#
設計
#
執行
3
2
Spirit
2024/03/23
閒談軟體設計:技術債是選擇來的
這篇文章探討了在軟體開發中的技術債可能來自哪些原因,以及如何自動化偵測與修復技術債。作者透過分享不同情境下的技術債選擇,提供了對於技術債的思考與建議,針對開發人員在需要做出無奈的技術決策時,提供了一些建議。此外,還提供了一些在做出技術決策時的方法,如保留抽象層和避免vendor lock-in。
#
開發
#
技術債
6
Spirit
2024/03/23
閒談軟體設計:技術債是選擇來的
這篇文章探討了在軟體開發中的技術債可能來自哪些原因,以及如何自動化偵測與修復技術債。作者透過分享不同情境下的技術債選擇,提供了對於技術債的思考與建議,針對開發人員在需要做出無奈的技術決策時,提供了一些建議。此外,還提供了一些在做出技術決策時的方法,如保留抽象層和避免vendor lock-in。
#
開發
#
技術債
6