ویرگول
ورودثبت نام
Ali Kolahdoozan
Ali KolahdoozanJack of all trades, master of none
Ali Kolahdoozan
Ali Kolahdoozan
خواندن ۳ دقیقه·۳ ماه پیش

🧩 از DDD تا Platform Engineering

از DDD تا Platform Engineering
از DDD تا Platform Engineering

نگاهی عمیق به مفهوم Abstraction، Decoupling و مدل‌سازی دامنه‌های فنی

نگاهی عمیق به مفهوم Abstraction، Decoupling و مدل‌سازی دامنه‌های فنی

در دنیای مهندسی نرم‌افزار مدرن، دو مفهوم پرکاربرد ــ Domain-Driven Design (DDD) و Platform Engineering ــ اغلب به‌عنوان رویکردهایی برای Independency و Scalability سیستم‌ها مطرح می‌شوند.

در نگاه نخست، این دو شبیه به‌نظر می‌رسند؛ هر دو بر Abstraction و Decoupling تأکید دارند و هدفشان ساخت سیستم‌هایی با حداقل وابستگی است. اما اگر عمیق‌تر بررسی کنیم، درمی‌یابیم که این دو ، در دو لایه‌ی متفاوت از معماری سیستم فعالیت می‌کنند و در نقطه‌ای خاص با یکدیگر تلاقی دارند.

1. Abstraction و Decoupling؛ جوهره‌ی استقلال

زمانی‌که از Abstraction و Decoupling صحبت می‌شود، هدف این است که محصول یا سیستم نرم‌افزاری به هیچ مؤلفه‌ی خاصی وابسته نباشد؛ نه به سیستم‌عامل، نه به پایگاه‌داده، نه به UI framework و نه به سایر سرویس‌ها.
این سطح از استقلال، باعث می‌شود سیستم بتواند در پلتفرم‌ها و محیط‌های مختلف اجرا شود، بدون آن‌که نیاز به بازنویسی داشته باشد.
درواقع، Abstraction یعنی «فقط آن‌چه مهم است را مدل کن» و Decoupling یعنی «وابستگی‌ها را به حداقل برسان».


2. جایگاه DDD در مسیر جداسازی

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

DDD می‌گوید:

«زبان، مدل و قوانین بیزنس باید مستقل از تکنولوژی باشند.»

به این ترتیب، DDD از Abstraction و Decoupling در سطح منطق مفهومی سیستم استفاده می‌کند.
نتیجه این می‌شود که لایه‌ی Domain می‌تواند بدون توجه به دیتابیس، API یا UI توسعه یابد و فقط از طریق قراردادهای مشخص (Interfaces) با لایه‌های زیرساخت ارتباط برقرار کند.


3. Platform Engineering؛ Decoupling در لایه‌ی زیرساخت

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

هدف اصلی Platform Engineering عبارت است از:

  • ایجاد پلتفرمی پایدار و تکرارپذیر برای توسعه و دیپلوی سرویس‌ها؛

  • کاهش پیچیدگی زیرساخت برای تیم‌های توسعه؛

  • و افزایش بهره‌وری از طریق خودکارسازی (Automation) و ابزارهای استاندارد مانند CI/CD، IaC، و Observability.

به زبان ساده:

DDD استقلال فکری بیزنس را فراهم می‌کند،
و Platform Engineering استقلال عملی توسعه را.


4. وقتی می‌گوییم Platform = Technical Domain Modeling

برخی مطرح می‌کنند:

Platform = Technical Domain Modeling

این جمله از دید DDD کاملاً قابل دفاع است، زیرا پلتفرم نیز خود یک «دامنه» محسوب می‌شود — البته از نوع دامنه‌ی تکنیکی (Technical Domain).
در چارچوب DDD، پلتفرم هم دارای مفاهیم، قوانین و bounded context خاص خود است (مثل Auth، Logging، Deployment، Monitoring).

بنابراین، می‌توان پلتفرم را مدل کرد، درست مانند یک دامنه‌ی بیزنسی؛ اما این مدل‌سازی هنوز در سطح مفهومی است.
وقتی این مدل مفهومی در دنیای واقعی به ابزارها، کلاسترها و pipelineها ترجمه شود، آن‌گاه وارد قلمرو Platform Engineering می‌شویم.


5. ارتباط و تمایز DDD و Platform Engineering

به‌عبارت دیگر، DDD و Platform Engineering دو روی یک سکه‌اند:
اولی طراحی می‌کند چگونه باید فکر کرد، دومی می‌سازد چگونه باید اجرا کرد.


6. نتیجه‌گیری

می‌توان گفت:

DDD، پایه‌ی مفهومی همان Decoupling است که Platform Engineering در سطح زیرساخت پیاده‌سازی می‌کند.

DDD با مدل‌سازی مفهومی، بستر فکری مستقل بودن را فراهم می‌سازد؛
Platform Engineering با مهندسی زیرساخت، این استقلال را در عمل ممکن می‌سازد.
هر دو در یک مسیر حرکت می‌کنند — یکی در سطح ایده سازی و تفکر ، دیگری در سطح پیاده‌سازی.

dddsoftware
۷
۲
Ali Kolahdoozan
Ali Kolahdoozan
Jack of all trades, master of none
شاید از این پست‌ها خوشتان بیاید