فصل دوم: طراحی مرزهای سرویس

مقدمه‌ای بر Domain-Driven Design ساده

مسئله‌ی اصلی: کجا سرویس را قطع کنیم؟

سخت‌ترین بخش طراحی میکروسرویس، تصمیم‌گیری درباره‌ی مرز هر سرویس است. تقسیم اشتباه (مثلاً تقسیم بر اساس لایه‌های فنی مثل «سرویس دیتابیس» و «سرویس رابط کاربری») باعث می‌شود سرویس‌ها به‌شدت به هم وابسته باشند و هر تغییر کوچک نیاز به هماهنگی چند سرویس داشته باشد؛ دقیقاً همان مشکلی که میکروسرویس قرار بود حل کند.

Domain-Driven Design (DDD) رویکردی است که پیشنهاد می‌کند سرویس‌ها را بر اساس مرزهای کسب‌وکاری تقسیم کنیم، نه لایه‌های فنی. ایده‌ی اصلی این است که با متخصصان کسب‌وکار صحبت کنیم و زبان و مفاهیمی که آن‌ها استفاده می‌کنند («سفارش»، «موجودی انبار»، «پرداخت») را به‌عنوان مبنای طراحی سرویس‌ها قرار دهیم؛ به این زبان مشترک، زبان فراگیر (Ubiquitous Language) گفته می‌شود.

مثال عملی: فروشگاه آنلاین

برای یک فروشگاه آنلاین، به‌جای تقسیم فنی، می‌توانیم بر اساس حوزه‌های کسب‌وکاری تقسیم کنیم:

  • سرویس کاتالوگ: مدیریت محصولات، دسته‌بندی و قیمت.
  • سرویس سفارش: ثبت و پیگیری سفارش‌های مشتری.
  • سرویس موجودی: مدیریت انبار و رزرو کالا.
  • سرویس پرداخت: ارتباط با درگاه‌های پرداخت.

هر یک از این سرویس‌ها یک مسئولیت کسب‌وکاری روشن و نسبتاً مستقل دارد و تیم مسئول آن می‌تواند بدون نیاز به هماهنگی دائمی با تیم‌های دیگر، روی آن کار کند.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.