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.

nâng cấp java 25 LTS

Nhìn Java 25 LTS từ góc độ người làm kiến trúc: so với Java 21/17 thì hơn ở đâu. Compact Object Headers (JEP 519), Stream Gatherers (JEP 485), Flexible Constructor Bodies (JEP 513), Generational ZGC & Shenandoah, Scoped Values (JEP 506), và cách tính bài toán ROI khi nâng cấp hệ thống cloud-native.

in aws / cloud

amazon S3

Ghi chú dùng Amazon S3 cho hệ thống lớn: Strong Read-After-Write Consistency là gì, dùng Presigned Multipart Upload để backend khỏi gánh băng thông, bảo mật với SSE-KMS và IRSA trên Kubernetes, và cái bẫy tốn tiền mang tên AbortIncompleteMultipartUpload.

rabbitmq pattern

Các pattern hay dùng của RabbitMQ trong Spring Boot: publisher confirm, manual ack, DLQ, retry, idempotent consumer, giữ thứ tự message, và cách giữ dữ liệu nhất quán bằng Outbox và Saga.

multi-module spring boot

Mổ xẻ kiến trúc Multi-Module Spring Boot cho production: chia module theo Hexagonal/Clean Architecture, tách riêng JPA/DataSource cho từng module, tránh mở connection pool tràn lan, xử lý cái bẫy bytea của JDBC PostgreSQL và dùng ArchUnit để giữ ranh giới 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.

redis pattern

Redis đâu chỉ để làm cache. Bài này gom lại các chiến lược caching, cách cấu hình cho đỡ tốn bộ nhớ và mấy pattern phân tán hay dùng với Redis trong hệ thống Backend.

jmeter

Apache JMeter là phần mềm mã nguồn mở để kiểm thử hiệu năng (performance testing) và kiểm thử chịu tải (load testing) cho ứng dụng web, API hoặc cơ sở dữ liệu. Nó giả lập hàng ngàn người dùng ảo truy cập cùng lúc, để bạn đo thời gian phản hồi, tìm lỗi và biết máy chủ chịu được tới đâu.

in java / solid

solid principles

SOLID là 5 nguyên tắc thiết kế hướng đối tượng giúp code dễ đọc, dễ mở rộng, dễ test và dễ sửa về sau.