Yumin Fish Harvest
Author

Yumin Fish Harvest

A deep‑sea salvage fisherman sharing architecture insights, practical tips, and lessons learned.

15
Articles
0
Likes
9
Views
0
Comments
Recent Articles

Latest from Yumin Fish Harvest

15 recent articles
Yumin Fish Harvest
Yumin Fish Harvest
Jul 10, 2026 · Backend Development

How to Layer Code with DDD: Four‑Layer Architecture, DIP & Hexagonal

This article explains why and how to separate a system into four DDD layers—User Interface, Application, Domain, and Infrastructure—illustrates the benefits of clear responsibilities, demonstrates dependency inversion and hexagonal architecture with concrete Spring Boot examples, and warns of common pitfalls.

Backend designDDDDependency Inversion
0 likes · 10 min read
How to Layer Code with DDD: Four‑Layer Architecture, DIP & Hexagonal
Yumin Fish Harvest
Yumin Fish Harvest
Jul 10, 2026 · Backend Development

When One Aggregate Isn’t Enough: Using Domain Services and Domain Events

The article explains why cross‑aggregate business logic belongs in domain services, how domain events capture immutable business facts, and demonstrates practical Spring Boot implementations—including in‑process publishing, message‑queue integration, and the Outbox pattern—while highlighting pitfalls and verification techniques.

Domain EventDomain ServiceDomain-Driven Design
0 likes · 10 min read
When One Aggregate Isn’t Enough: Using Domain Services and Domain Events
Yumin Fish Harvest
Yumin Fish Harvest
Jul 10, 2026 · Fundamentals

Why Aggregates Are So Hard in DDD: Using Invariants to Find Real Boundaries

The article explains that an aggregate is defined by the business invariants that must stay strongly consistent, shows how the aggregate root protects those rules, and provides concrete design principles—ID references, single‑aggregate transactions, small boundaries, validation tests, and common pitfalls—illustrated with an order domain example.

AggregateDDDDomain Modeling
0 likes · 16 min read
Why Aggregates Are So Hard in DDD: Using Invariants to Find Real Boundaries
Yumin Fish Harvest
Yumin Fish Harvest
Jul 10, 2026 · Fundamentals

Distinguishing Entities vs Value Objects in DDD: Criteria & Code

Learn how to tell whether a domain concept is an Entity or a Value Object by asking if its identity matters or only its attributes, see concrete examples with Money, Address and Order, understand immutable design, proper equals/hashCode implementation, and validation through unit tests.

Domain-Driven DesignEntityImmutable
0 likes · 13 min read
Distinguishing Entities vs Value Objects in DDD: Criteria & Code
Yumin Fish Harvest
Yumin Fish Harvest
Jul 10, 2026 · Fundamentals

Prioritizing DDD Modeling: Focus on Domains, Subdomains, and Core Domains

This chapter explains how to strategically allocate modeling effort in a DDD project by distinguishing domains, subdomains, core, supporting, and generic subdomains, using the “Preferred Store” case to illustrate which areas merit detailed modeling and which can remain simple, ultimately guiding resource focus and decision‑making.

Core DomainDomain-Driven DesignSoftware Architecture
0 likes · 8 min read
Prioritizing DDD Modeling: Focus on Domains, Subdomains, and Core Domains
Yumin Fish Harvest
Yumin Fish Harvest
Jul 10, 2026 · Backend Development

Why Traditional Service Layers Fail and How DDD Restores Order

The article shows how a typical three‑layer OrderService accumulates scattered business rules, mixes technical details with domain logic, lacks clear boundaries, and diverges from business language, then explains how Domain‑Driven Design reorganizes code around aggregates and bounded contexts to solve these problems while outlining when DDD is unnecessary.

DDDDomain-Driven DesignJava
0 likes · 11 min read
Why Traditional Service Layers Fail and How DDD Restores Order
Yumin Fish Harvest
Yumin Fish Harvest
Jul 9, 2026 · Databases

Redis Pipeline, Transactions, Lua, Distributed Locks, Streams & Data Types

This article provides an in‑depth guide to Redis’s advanced capabilities, covering how to use pipeline for batch commands, transactions for ordered execution, Lua scripts for atomic logic, distributed locks with proper token handling, reliable messaging with streams, and specialized data structures such as BitMap, HyperLogLog, Bloom Filter and GEO for efficient large‑scale scenarios.

Bloom FilterDistributed LockGEO
0 likes · 65 min read
Redis Pipeline, Transactions, Lua, Distributed Locks, Streams & Data Types