Skip to main content
PCSalt
YouTube GitHub

Architecture

(15 posts)

System design and architectural patterns — CQRS, event sourcing, microservice communication. Lessons from building and scaling real backend systems.

All Posts

API Versioning — URL, Header & Content Negotiation Strategies

Compare API versioning strategies — URL path, custom header, and content negotiation. Includes Spring Boot 4 built-in versioning support and decision framework.

Designing for Failure — Retry, Timeout, Bulkhead & Fallback Patterns

Build resilient systems with failure patterns — retries with backoff, timeouts, circuit breakers, bulkheads, and fallbacks. Practical examples with Resilience4j.

Caching Strategies — Redis, In-Memory & HTTP Cache Headers

A practical guide to caching — when to cache, where to cache, cache invalidation strategies, Redis patterns, HTTP cache headers, and avoiding stale data.

Domain-Driven Design (DDD) — Bounded Contexts in Practice

A practical guide to Domain-Driven Design — bounded contexts, aggregates, value objects, and how to apply DDD without drowning in abstraction.

MVVM vs MVI in Android — Which One and When

A practical comparison of MVVM and MVI architecture patterns in Android — how each works, when to use which, and how to avoid common pitfalls in both.

Saga Pattern — Managing Distributed Transactions

How to implement the Saga pattern for distributed transactions in microservices — choreography vs orchestration, compensation, and practical implementation with Kafka.

Database Per Service — Patterns for Data Isolation in Microservices

How to implement database-per-service in microservices — data ownership, cross-service queries, eventual consistency, and practical patterns for data isolation.

Microservices vs Monolith — A Practical Decision Framework

A no-hype comparison of microservices and monoliths — when each architecture makes sense, the real tradeoffs, and how to decide for your project.

CQRS with Spring Boot, Kafka & MongoDB — Part 5: Putting It All Together

Docker Compose setup, end-to-end flow walkthrough, integration tests with Testcontainers, and a production readiness checklist for the complete CQRS system.

CQRS with Spring Boot, Kafka & MongoDB — Part 4: The Hard Parts

Eventual consistency, idempotent consumers, schema evolution, the outbox problem — the real-world challenges that make CQRS hard and how to handle them.

CQRS with Spring Boot, Kafka & MongoDB — Part 3: Query Side — Reads at Scale

Building the query service — consuming Kafka events, building read-optimized projections, and serving fast queries from MongoDB.

Event-Driven Architecture — When and Why (Not Just Kafka)

Understand event-driven architecture beyond the buzzwords — events vs commands, messaging patterns, when to use it, and when synchronous calls are better.

CQRS with Spring Boot, Kafka & MongoDB — Part 2: Command Side — Writes Done Right

Building the command service — accepting orders, validating business rules, persisting to MongoDB, and publishing domain events to Kafka.

CQRS with Spring Boot, Kafka & MongoDB — Part 1: What is CQRS and why you need it

Understanding Command Query Responsibility Segregation, when it makes sense, and how Spring Boot, Kafka, and MongoDB fit together in a CQRS architecture.

Clean Architecture for Android — Without Over-Engineering

A practical guide to Clean Architecture in Android — when to use it, how to structure layers, and how to avoid the over-abstraction trap that kills productivity.