文章

技術筆記

關於後端、可觀測性與系統設計的實作筆記,寫給遇到同樣問題的自己與其他工程師。

2026年10月7日

Kubernetes HPA 為什麼看 Request 而不是 Limit?從擴展公式反推 CPU Request/Limit 怎麼設

KubernetesHPAAutoscalingSRE容量規劃

2026年9月21日

DevOps CALMS 實踐框架:不是先買工具,而是先看哪個字母在拖後腿

DevOpsCALMS團隊文化工程實踐

2026年9月20日

SRE 的 SLI、SLO、SLA 與錯誤預算:先分清楚「量什麼」「承諾什麼」「賠什麼」

SRESLOSLISLA錯誤預算可靠性

2026年6月11日

藍綠部署、金絲雀部署、Feature Toggle:三種降低上線風險的部署機制

部署策略DevOps藍綠部署金絲雀部署Feature ToggleSRE

2026年3月2日

Prometheus 指標類型怎麼選?從業務情境反推該用 Counter、Gauge 還是 Histogram

PrometheusObservabilitySRE指標設計

2026年2月16日

阿里巴巴中台架構筆記:前台、中台、後台,與「大中台,小前台」

中台架構設計平台工程Kubernetes系統設計

2025年11月23日

Kubernetes 探針怎麼設計?Liveness、Readiness、Startup 的責任劃分

KubernetesASP.NET CoreHealth CheckSRE

2025年9月16日

Kafka 與 RabbitMQ 差在哪?從「佇列」和「日誌」兩種模型看怎麼選

KafkaRabbitMQMessage Queue事件驅動系統設計

2025年7月15日

Kafka 實務注意事項:廣播怎麼做、順序怎麼保、group.id 怎麼取,以及 K8s 自動擴展為什麼沒有變快

KafkaKubernetesKEDA分散式系統系統設計

2025年5月13日

Kafka 完整入門:Broker、Topic、Partition、Replica、Consumer Group 一次搞懂

Kafka事件串流分散式系統系統設計

2025年2月17日

GitOps 與 Argo CD:為什麼部署要從「推」改成「拉」

GitOpsArgo CDKubernetesHelmCI/CDDevOps

2025年1月14日

敏捷需要的是思維,不是手法:從 Linda Rising 的〈The Power of an Agile Mindset〉談固定型與成長型思維

敏捷開發Agile MindsetScrum團隊協作軟體工程

2024年12月17日

在 Scrum 中加入 Event Storming:Big Picture 建立 Product Backlog,Process Modeling 拆出 User Story

ScrumEvent StormingDDD敏捷開發需求分析

2024年11月26日

用 Redis 做分散式鎖:SET NX PX、Token 驗證、續期,以及它保證不了的事

Redis分散式鎖分散式系統.NET

2024年10月24日

Scrum 流程整理:三個角色、三個產出物、五個事件,從 Backlog Refinement 到 Retrospective

Scrum敏捷開發團隊協作專案管理

2024年9月24日

Event Storming 怎麼跑?從準備、Big Picture 的七個步驟,到 Process Modeling 的便利貼語法

DDD領域驅動設計Event Storming需求分析團隊協作

2024年8月19日

幫 ASP.NET Core 接上 OpenTelemetry:從零到 Grafana/Tempo/Loki

OpenTelemetryGrafanaObservabilityASP.NET Core

2024年7月9日

Redis 快取怎麼用才不會出事?Cache-Aside、資料一致性,與穿透、擊穿、雪崩三個問題

Redis快取高併發系統設計

2024年6月18日

從 Docker 換到 containerd + nerdctl:架構差異、安裝 runc 與 CNI,以及移除 Docker 後的網路問題

containerdnerdctl容器LinuxDevOps

2024年5月21日

Terraform 團隊協作的兩個基本功:S3 + DynamoDB 遠端 State,以及可重複使用的模組設計

TerraformIaCAWSDevOps基礎設施

2024年4月30日

怎麼劃分 Domain?找出子域、分辨核心/支撐/通用,再對應到限界上下文

DDD領域驅動設計架構設計系統設計微服務

2024年4月9日

Kubernetes 滾動更新怎麼做到真的不停機?maxSurge、Readiness、preStop 與 PodDisruptionBudget

Kubernetes部署高可用ASP.NET Core

2024年3月19日

領域故事化(Domain Storytelling):讓業務用說故事的方式講需求,再從故事裡找出上下文邊界

DDD領域驅動設計Domain Storytelling需求分析架構設計

2024年2月27日

用反射自動註冊泛型 Handler:找出所有 IEventHandler<T>,再在執行時依事件型別派送

.NETC#ReflectionDependency Injection事件驅動

2024年1月16日

DDD 概論:戰略設計、戰術設計與 Event Storming,先搞懂它到底在解決什麼問題

DDD領域驅動設計架構設計系統設計.NET

2023年12月19日

六角形架構(Ports & Adapters)在 .NET 的實作:讓圖片從本機換到 S3 不用改一行業務程式

Hexagonal ArchitectureClean Architecture.NET架構設計DDD

2023年12月5日

單元測試怎麼寫才好讀?用 3A 模式組織測試,用「方法_情境_預期結果」命名

Unit TestTDDC#xUnit測試

2023年11月14日

CQRS 實戰:把讀取交給 Elasticsearch,寫入留給關聯式資料庫

CQRSElasticsearch系統設計架構設計事件驅動

2023年10月24日

OpenID Connect 登入流程拆解:Authorization Code + PKCE、id_token 與 access_token 的差別

OpenID ConnectOAuth 2.0JWT身分驗證ASP.NET Core資訊安全

2023年9月12日

從 MSSQL 增量同步到 Elasticsearch:用異動欄位與 Checkpoint 只同步「變動的資料」

ElasticsearchMSSQL資料同步ETL系統設計

2023年7月18日

用 SignalR 串流做出 ChatGPT 的「逐字出現」:IAsyncEnumerable、取消與多實例部署

SignalRWebSocketASP.NET CoreOpenAI即時通訊

2023年5月30日

用 Elasticsearch 做地圖找房:geo_point、geo_bounding_box 與 geo_distance

ElasticsearchGEO地圖搜尋搜尋引擎

2023年2月21日

Redis 不只是快取:五種資料結構、各自的使用情境與上線前要知道的事

Redis快取資料結構系統設計

2022年11月8日

RabbitMQ 訊息怎麼才不會掉?Ack、Prefetch、延遲重試與死信佇列

RabbitMQMessage Queue可靠性事件驅動

2022年8月23日

點數系統為什麼不能直接改餘額?用交易紀錄、冪等鍵與條件更新設計一個對得起帳的點數帳本

系統設計資料庫MSSQL冪等性金流

2022年6月14日

RabbitMQ 的 Exchange、Queue、Binding:訊息到底是怎麼被送到佇列的?

RabbitMQMessage Queue事件驅動系統設計

2022年3月18日

Elasticsearch 入門:從 RDBMS 概念對照到 Query DSL 與 Aggregation 實戰

ElasticsearchKibanaNoSQL資料庫

2022年1月11日

Kubernetes 入門:Pod、Deployment、Service、Ingress 是怎麼把一個請求送到容器的

Kubernetes容器DevOps部署

2018年12月4日

MQTT 在 IoT 的應用:Broker、Topic、QoS、Retained 與遺囑訊息一次搞懂

MQTTIoTESP8266Mosquitto發布訂閱