2025.08.27B·04Why I Introduced a Message Queue for a Small App with only 100 Users
My app made users wait 3 seconds after clicking 'Sign Up' just to send a welcome email. If the email server failed, the sign-up failed too. I share how I used a Message Queue (BullMQ) to decouple these processes, explained with a 'Restaurant Order Ticket' analogy.
Message QueueRabbitMQKafka
→2025.08.25A·04Event Sourcing: Persisting the 'Journey', Not Just the Destination
From simple CRUD to an append-only log of immutable events. We dissect Event Sourcing—the architecture behind scalable financial systems. Learn why it pairs perfectly with CQRS, how to handle the versioning of events (Schema Evolution), and the trade-offs involved in complexity versus auditability.
ArchitectureEvent SourcingCQRS
→2025.08.20E·01When REST API Feels Slow: A Taste of gRPC
JSON is heavy, and REST is chatty. Enter gRPC, Google's answer to high-performance microservices communication. We explore the magic of Protocol Buffers serialization, the power of HTTP/2 multiplexing, and the four streaming patterns. We also cover the caveats: why gRPC is hard to use in browsers and how load balancing differs from HTTP/1.1.
gRPCBackendMicroservices
→2025.07.09Y·03Authentication vs Authorization: Two Pillars of Security (feat. JWT)
Clarifying the confusion between login and permission checks through real security incidents and the 'Airport Security' analogy. Deep dive into JWT structure, OAuth 2.0, and Authentication strategies in Microservices.
SecurityAuthenticationAuthorization
→2025.06.01S·04Domain-Driven Design (DDD): Bridging the Gap Between Code and Business
DDD is not just about entities and repositories. It's a strategic approach to tackling complex software problems. Learn how Ubiquitous Language, Bounded Contexts, and Aggregates can help you model the real world and align your software architecture with business goals. We also explore Event Storming and Strategic Design.
ArchitectureDDDDesign Patterns
→2025.05.29S·03CQRS Pattern Explained: Why Separating Read and Write Models Matters
In complex domains, using a single data model for both reading and writing can lead to performance bottlenecks and messy code. Learn how CQRS (Command Query Responsibility Segregation) coupled with Event Sourcing can decouple your architecture, improve scalability, and simplify domain logic.
ArchitectureDesign PatternsMicroservices
→2025.05.24S·02Circuit Breaker Pattern: Preventing Cascading Failures and Thundering Herds
Stop cascading failures in distributed systems. Understand the 3 states of a Circuit Breaker, the dangers of infinite retries, and how to implement Bulkheads, Rate Limiters, and Graceful Degradation using Resilience4j and Istio.
System DesignMicroservicesResilience
→