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

Explore
MikeDaDev's Blog

#microservices

Things I've written about #microservices
  • Thiết kế hệ thống lưu trữ tài liệu trong thời đại số hoá

    Ảnh CCCD lúc mở tài khoản, hợp đồng vay ký điện tử, sao kê tháng: mỗi ngày một ngân hàng vài chục triệu khách sinh ra hàng triệu file, và file nào cũng phải giữ đúng người xem, đúng thời hạn, không được mất. Bài này dựng một kiến trúc tham chiếu cho nền tảng lưu trữ tài liệu cỡ đó: ước lượng tải, upload chia chunk, lưu theo tầng nóng ấm lạnh, phân quyền RBAC kết hợp ABAC, mã hoá envelope, và những kiểu hỏng hay gặp khi chạy thật.

  • Resilience4j trong Spring Boot

    Một service downstream sập hoặc trả lời chậm rì thì làm sao để nó không kéo cả hệ thống microservices sập theo (cascading failure)? Bài này đi qua Resilience4j: Circuit Breaker với sliding window, Bulkhead để cô lập thread và RateLimiter, kèm cấu hình dùng được ngay.

  • transactional outbox & idempotent consumer

    Xử lý bài toán Dual-Write cho đúng: Transactional Outbox với Debezium SMT, kỹ thuật SELECT FOR UPDATE SKIP LOCKED, vì sao Kafka transaction không cứu được bạn ở đây, và cách làm Idempotent Consumer chạy được trên production với RDBMS (kèm Redis làm lớp lọc nhanh).

  • Spring Modulith

    Trước khi chia hệ thống thành Microservices và ôm theo đủ thứ đau đầu về network, distributed transaction, observability, thử xem Spring Modulith: giải pháp chính thức từ Spring để làm Modular Monolith với ranh giới module rõ ràng, tự kiểm tra phụ thuộc và event nội bộ giữa các module.

  • kiến trúc RabbitMQ

    Dựng RabbitMQ cho production cần biết gì: Erlang OTP/BEAM bên dưới, ghép nhiều Channel trên một TCP Connection, bỏ Mirrored Queues để chuyển sang Quorum Queues (Raft), không mất message nhờ Producer Confirms và Manual ACK, cùng Dead Letter Queue (DLQ) kèm retry exponential backoff.

  • kiến trúc API Gateway

    Mổ kiến trúc API Gateway trong hệ thống microservices cỡ lớn: đặt Kong, Spring Cloud Gateway và Envoy lên bàn cân, làm distributed rate limiting kiểu token bucket bằng Redis Lua, mô hình BFF và circuit breaker để hệ thống tự hồi phục.

  • facade pattern

    Nhìn Facade Pattern bằng con mắt Solution Architect: nó liên quan gì tới Law of Demeter, khác Adapter, Proxy, Decorator ở đâu, và lớn lên thành Anti-Corruption Layer (ACL trong DDD) ra sao khi phải bọc một hệ thống Core Banking legacy.