Welcome to MikeDaDev's Blog – notes on Java, backend & system design.

Explore
MikeDaDev's Blog

All posts

I like to write about stuff I'm into. You'll find a mix of web dev articles, tech news and random thoughts from my life. Use the search below to filter by title.

kỹ sư phần mềm trong kỷ nguyên AI

AI viết 1.000 dòng code trong vài giây, vậy giá trị thật của một Software Engineer còn nằm ở đâu? Bài này nói về nghịch lý năng suất, cái bẫy mai một kỹ năng, chuyện review code ngày càng quá tải và cách tự định vị lại bản thân để không bị thay thế.

case study Shopify: Redis to MySQL

Black Friday 2025 đạt đỉnh 5.1 triệu USD/phút, và đó cũng là mùa đầu tiên Shopify giữ chỗ tồn kho bằng MySQL thay cho Redis. Vì sao bỏ Redis, vì sao câu UPDATE trừ số lượng quen thuộc không đủ, và thiết kế một dòng cho mỗi đơn vị hàng với SKIP LOCKED chạy ra sao.

Rate Limiting với Bucket4j trong Spring Boot

Vì sao chỉ rate limit ở Nginx là chưa đủ? Mổ xẻ thuật toán Token Bucket, cách Bucket4j xử lý concurrency không cần lock, và cách dựng rate limiting phân tán với Redis trong Spring Boot để chạy production.

in java / jvm

Generational ZGC trong java 21

Heap lên tới vài chục, vài trăm GB thì mấy GC truyền thống như G1 hay Parallel hay kéo theo những lần Stop-The-World (STW) dài cả giây, dịch vụ đứng hình. Generational ZGC trong Java 21+ dùng Colored Pointers, Load Barriers (và Store Barriers) ra sao để giữ pause GC dưới 1 mili-giây.

RestClient & Fluent API trong Spring Boot 3

Vì sao RestTemplate bị cho vào chế độ bảo trì rồi sắp bị deprecate? Bài này nói về RestClient và JdbcClient, hai món mới theo kiểu Fluent API từ Spring Framework 6.1 / Spring Boot 3.2, viết gọn hơn, đọc dễ hơn và ít chỗ truyền nhầm tham số hơn.

GraalVM Native Image vs JVM JIT

GraalVM Native Image khởi động trong vài chục tới vài trăm mili-giây, ăn RAM rất ít nên đang được dân Serverless và Kubernetes chuộng. Nhưng AOT có thay hẳn được HotSpot JIT không? Mổ xẻ kiến trúc, số đo minh hoạ, những thứ bạn buộc phải đánh đổi và các lựa chọn khác như Project Leyden.

in ai / rag

graph rag & advanced rag

Vì sao vector search kiểu truyền thống bó tay trước câu hỏi nhiều bước (multi-hop)? Bài này mổ xẻ kiến trúc GraphRAG, cách kết hợp Knowledge Graph với Hybrid Search để đưa hệ thống RAG lên mức dùng được cho doanh nghiệp.

CDC với Debezium & cache invalidation

Change Data Capture (CDC) với Debezium nhìn từ bên trong: PostgreSQL logical decoding (pgoutput) chạy ra sao, vì sao dual-write dính partial failure và race condition, cách dùng Outbox Event Router (SMT), chống cache stampede và canh replication slot trên production.

jOOQ vs Hibernate JPA

Vì sao nhiều team làm hệ thống tài chính cân nhắc jOOQ bên cạnh Hibernate? Chi phí ngầm của ORM, Type-safe SQL của jOOQ, những chỗ Hibernate 6 đã bắt kịp, và kiến trúc Hybrid dùng cả hai.