DDD رویکردی برای طراحی نرم‌افزارهای پیچیده است که مدل سیستم را بر اساس مفاهیم و قواعد واقعی کسب‌وکار شکل می‌دهد. توسعه‌دهندگان و متخصصان دامنه با ایجاد زبان مشترک تلاش می‌کنند اصطلاحات کد و گفتگو معنای یکسانی داشته باشند.

Entity، Value Object، Aggregate و Bounded Context از مفاهیم آن هستند. DDD الزاماً به معنی Microservices نیست و در Monolith نیز کاربرد دارد.

نکته‌ای که در پروژه‌ها اهمیت دارد

در DDD، Aggregate مرز قواعد تراکنشی دامنه را مشخص می‌کند. برای مثال، منطق ثبت سفارش باید جلوی وضعیت نامعتبر همان سفارش را بگیرد.

مرز دامنه چه فایده‌ای دارد؟

در فروشگاه، واژه «سفارش» ممکن است برای تیم فروش و تیم انبار معنای متفاوتی داشته باشد. Bounded Context کمک می‌کند این تفاوت در مدل‌ها و قراردادهای سرویس‌ها روشن شود.