Pragmatic Programmer – Topic 40: Refactoring — Dám đụng vào code cũ
Refactoring trong Pragmatic Programmer — cách tiếp cận code cũ như khu vườn cần chăm sóc, không phải toà nhà chỉ xây một lần
THE ENGINEERING JOURNAL
Những điều mình xây, những vấn đề mình gặp, và những gì mình học được. Về phần mềm, từ bên trong.
Refactoring trong Pragmatic Programmer — cách tiếp cận code cũ như khu vườn cần chăm sóc, không phải toà nhà chỉ xây một lần
Tìm hiểu 3 kiểu stream join (stream-stream, stream-table, table-table) và cơ chế fault tolerance — checkpointing, exactly-once trong streaming (DDIA).
Học cách dùng multi-stage build trong Docker để giảm kích thước image Go app từ 1.2GB xuống chỉ 15MB — nhanh hơn, an toàn hơn khi deploy.
Khám phá 3 kiểu giao tiếp microservices: Request/Response (REST, gRPC), Event-Driven (message broker), và Service Discovery. Hiểu ưu nhược điểm từng pattern.
Tìm hiểu về Event Streams, Change Data Capture (CDC) và Event Sourcing — ba khái niệm quan trọng trong stream processing được trình bày trong DDIA chương 11.
Rust không có exception, chỉ có Result và Option. Mình chia sẻ cách xử lý lỗi trong Rust — từ unwrap tới error chains với anyhow và thiserror.
Branch by Abstraction, Saga, UI Composition — ba pattern thực tế để chia nhỏ monolith an toàn, từng bước, không đau đớn.
Học cách đọc EXPLAIN ANALYZE và thiết kế composite index trong PostgreSQL — tăng tốc query từ 12 giây xuống còn 45ms.
Cách vẽ sơ đồ kiến trúc hệ thống bằng SVG thuần, nhúng trực tiếp vào markdown không cần công cụ bên ngoài.
Consistent Hashing giúp distributed systems thêm/xoá node mà không cần rehash toàn bộ. Từ Redis Cluster đến load balancer — tất cả đều dùng.