Forwarded from tech-afternoon (Amin Mesbahi)
بیمقدمه: فصل گرما در پیش است، اخبار گواه اینه که بهبود خاصی در ظرفیت تولید، یا مدیریت توزیع برق کشور اتفاق نیوفتاده، برای اینکه با از دسترس خارج شدن دیتاسنترها، سرویسهامون دچار مشکل نشه، بهتره نگاهی به معماری سلولی و تجربه اسلک بندازیم...
توی معماری سلولی سیستمهای پیچیده به واحدهای مستقل و خودکفا (سلولها) تقسیم میشن. هر سلول میتونه به تنهایی کار کنه و اگر یک سلول دچار مشکل بشه، بقیه سلولها میتونن به کار خودشون ادامه بدن.
یه روز توی اسلک، نمودارهای مانیتورینگ نشون دادن که یکی از Availability Zone (AZ) های AWS در منطقه us-east-1 داره پکتهای زیادی رو از دست میده. این باعث خطا و کندی سرویس برای کاربرها شده بود.
مشکل اصلی اینجا بود که با وجود اینکه اسلک از چند AZ استفاده میکرد، وقتی یک AZ دچار مشکل میشد، کل سرویس تحت تأثیر قرار میگرفت! خب این اصلاً منطقی نیست! مگه نه اینکه هدف استفاده از چند AZ همین هست که اگه یکی به مشکل خورد، بقیه کار رو پیش ببرن؟
در مورد اسلک، هر AZ تبدیل به یک سلول شد. یعنی مجموعهای از سرویسهایی که در یک AZ هستن و میتونن به عنوان یک واحد از سرویس خارج بشن یا به سرویس برگردن.
🎯 اسلک چهار هدف اصلی داشت:
- حذف ترافیک از یک AZ در کمتر از ۵ دقیقه (سرعت)
- حذف ترافیک نباید باعث خطای قابل مشاهده برای کاربر بشه
- خروج و بازگشت ترافیک یک AZ باید تدریجی باشه (مثلاً ۱٪ یا ۱۰٪)
- مکانیزم Drain نباید به AZ مشکلدار وابسته باشه
🧠 استراتژیهای پیادهسازی در اسلک
چرا این بار موفق شدن؟
اسلک قبلاً یک بار تلاش کرده بود این کار رو انجام بده و شکست خورده بود. این بار چند اصل مهم رو رعایت کردن:
- تدریجی بودن (Incrementality): به جای ساخت یک سیستم کاملاً جدید و تغییر یکباره، هر سرویس رو جداگانه و تدریجی تغییر دادن.
- نگاه از پایین به بالا (Bottom-up): با هر تیم سرویس جداگانه کار کردن و راهکار مخصوص اون سرویس رو پیدا کردن.
- به اندازه کافی خوب (Good Enough): پذیرفتن اینکه لازم نیست همه سرویسها یکجا و کامل تغییر کنن.
- رویکرد Roofshot به جای Moonshot: به جای یک حرکت مستقیم و بلندپروازانه، مجموعهای از قدمهای کوچکتر که در هر مرحله ارزش ایجاد میکنه.
- تستهای منظم: هر هفته یک AZ رو drain میکردن و پیشرفت رو اندازه میگرفتن.
⛳️ نتایج:
- الان میتونن یک AZ رو در ۶۰ ثانیه از سرویس خارج کنن
- هزینههای انتقال داده بین AZ کاهش پیدا کرده
- یک مکانیزم blue-green deployment جدید به دست آوردن
- راهکار عمومی برای مقابله با مشکلات محدود به یک AZ دارن
📝 نکتههای کلیدی برای پروژههای زیرساختی بزرگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Forwarded from Software Philosophy
قابلیتهای جدید Data Annotations در دات نت ۸
در نسخه جدید NET 8.، ویژگیهای Data Annotations پیشرفتهای قابل توجهی داشتهاند. این ویژگیها، کدنویسی معتبرسازی دادهها را بسیار سادهتر و تمیزتر کرده است. در ادامه به صورت گام به گام این ویژگیهای جدید را بررسی میکنیم:
۱. ویژگی Length
این Annotation برای مشخص کردن حداقل و حداکثر طول رشته استفاده میشود.
در مثال بالا:
- مقدار
- مقدار
---
۲. ویژگی Range با پارامترهای Exclusive
ویژگی
در این مثال:
- مقدار
---
۳. ویژگی AllowedValues
این Annotation مقادیر مجاز برای یک خصوصیت را مشخص میکند.
در اینجا، تنها مقادیر
---
۴. ویژگی DeniedValues
برای مشخص کردن مقادیری که غیرمجاز هستند استفاده میشود.
در این مثال، مقادیر
---
۵. ویژگی Base64String
برای معتبرسازی اینکه مقدار یک رشته به صورت
این اطمینان را ایجاد میکند که
🔗 برای مطالعه بیشتر میتوانید به این لینک مراجعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
__________
در نسخه جدید NET 8.، ویژگیهای Data Annotations پیشرفتهای قابل توجهی داشتهاند. این ویژگیها، کدنویسی معتبرسازی دادهها را بسیار سادهتر و تمیزتر کرده است. در ادامه به صورت گام به گام این ویژگیهای جدید را بررسی میکنیم:
۱. ویژگی Length
این Annotation برای مشخص کردن حداقل و حداکثر طول رشته استفاده میشود.
[Length(2, 30)]
public string Name { get; set; }
[Length(2, 255)]
public string Denoscription { get; set; }
در مثال بالا:
- مقدار
Name باید حداقل ۲ و حداکثر ۳۰ کاراکتر داشته باشد.- مقدار
Denoscription باید حداقل ۲ و حداکثر ۲۵۵ کاراکتر داشته باشد.---
۲. ویژگی Range با پارامترهای Exclusive
ویژگی
Range حالا قابلیت مشخص کردن مقادیر انحصاری را نیز دارد.[Range(1, 1000, MinimumIsExclusive = true, MaximumIsExclusive = false)]
public decimal Price { get; set; }
در این مثال:
- مقدار
Price باید بزرگتر از ۱ (به دلیل MinimumIsExclusive = true) و کوچکتر یا مساوی ۱۰۰۰ (به دلیل MaximumIsExclusive = false) باشد.---
۳. ویژگی AllowedValues
این Annotation مقادیر مجاز برای یک خصوصیت را مشخص میکند.
[AllowedValues("S", "M", "L", "XL", "XXL")]
public string Size { get; set; }در اینجا، تنها مقادیر
S, M, L, XL, XXL برای Size قابل قبول هستند.---
۴. ویژگی DeniedValues
برای مشخص کردن مقادیری که غیرمجاز هستند استفاده میشود.
[DeniedValues("Electronics", "Computers")]
public string Category { get; set; }در این مثال، مقادیر
Electronics و Computers برای Category ممنوع هستند.---
۵. ویژگی Base64String
برای معتبرسازی اینکه مقدار یک رشته به صورت
Base64 باشد استفاده میشود.[Base64String]
public string Image { get; set; }
این اطمینان را ایجاد میکند که
Image حاوی یک رشته معتبر Base64 است.🔗 برای مطالعه بیشتر میتوانید به این لینک مراجعه نمایید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#هوتن_همتی (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
__________
Docs
System.ComponentModel.DataAnnotations Namespace
Provides attribute classes that are used to define metadata for ASP.NET MVC and ASP.NET data controls.
🔥3
به تیم تون چقدر Trust دارین؟
Anonymous Poll
23%
کمتر از ۲۰ درصد
20%
۲۰ تا ۵۰ درصد
30%
۵۰ تا ۷۰ درصد
27%
۷۰ تا ۹۹ درصد
این خانم زیبا و جوان، خواهرزاده ی عزیزم، یلدا ست که دیروز، قهرمان ووشو (ساندا) نوجوانان کشور شد و به تیم ملی راه پیدا کرد.
خیلی خبر خوبی بود و خستگیم درومد
خلاصه که از این به بعد من و خواهرزداه م، شما همه 😁💪
خیلی خبر خوبی بود و خستگیم درومد
خلاصه که از این به بعد من و خواهرزداه م، شما همه 😁💪
❤37🔥18👍6😍2🤣1
https://blog.cloudflare.com/introducing-autorag-on-cloudflare/
این اتفاق مبارک و میمونیست که افتاده... سر فرصت حرف میزنیم در موردش
این اتفاق مبارک و میمونیست که افتاده... سر فرصت حرف میزنیم در موردش
The Cloudflare Blog
Introducing AutoRAG: fully managed Retrieval-Augmented Generation on Cloudflare
AutoRAG is here: fully managed Retrieval-Augmented Generation (RAG) pipelines powered by Cloudflare's global network and powerful developer ecosystem. Simplify how you build and scale RAG pipelines to power your context-aware AI chatbots and search applications.
👍5
لذت بیدار شدن این روزام اینه که هر صبح تا شرکت چند تا اپیزود از پلی لیست سیستم دیزاین محمد جانِ کریمی رو ببینم. واقعا عالی برده جلو و من چقدر به جز خود محتوا، یاددادن رو ازش یاد میگیرم
https://youtube.com/playlist?list=PLN5rV4x2x5XebYse6flx8z8ozajqoOuJC&si=tSVtby0Cu4xdPUbY
کانال تلگرام: @iCodeNext
https://youtube.com/playlist?list=PLN5rV4x2x5XebYse6flx8z8ozajqoOuJC&si=tSVtby0Cu4xdPUbY
کانال تلگرام: @iCodeNext
YouTube
System Design
Share your videos with friends, family, and the world
❤21👍1🔥1
Forwarded from Code With HSN
Media is too big
VIEW IN TELEGRAM
رودمپ تست نویسی قسمت دوم، با QA Lead اکالا 🔬
این ویدئو رو ببین و کتاب تست نویسی رایگان بگیر📖
توی قسمت دوم از پلی لیست تستنویسی، میریم سراغ ادامهی رودمپ؛ این بار تمرکز روی تستهای non-functional، و کلی تست دیگه که شاید کمتر دربارهشون شنیده باشی، مثل Spike Test، Soak Test، AB Testing، Snapshot و حتی Failover Database Test.
مباحثی که احتمالا براتون جذابه و صحبت میکنیم:
1. معرفی ابزار هایی برای Performance Test.
2. بررسی فرق Load، Stress، Soak و Spike تست.
3. بررسی تست قناری.
4. تست Smoke چیست؟
5. بررسی هرم تست.
6. بررسی کلی ابزار و مفهوم تست.
🕹 لینک ویدئو: مشاهده ویدئو و شرکت در قرعه کشی
📱 پلی لیست: مشاهده پلی لیست
📱 کانال تلگرام: @hasanxdev
📱 تلگرام رف هاب: @refhubOfficial
😇 رودمپ: https://github.com/hasanxdev/Test-Roadmap-For-Developers
این ویدئو رو ببین و کتاب تست نویسی رایگان بگیر
توی قسمت دوم از پلی لیست تستنویسی، میریم سراغ ادامهی رودمپ؛ این بار تمرکز روی تستهای non-functional، و کلی تست دیگه که شاید کمتر دربارهشون شنیده باشی، مثل Spike Test، Soak Test، AB Testing، Snapshot و حتی Failover Database Test.
مباحثی که احتمالا براتون جذابه و صحبت میکنیم:
1. معرفی ابزار هایی برای Performance Test.
2. بررسی فرق Load، Stress، Soak و Spike تست.
3. بررسی تست قناری.
4. تست Smoke چیست؟
5. بررسی هرم تست.
6. بررسی کلی ابزار و مفهوم تست.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
Forwarded from tech-afternoon (Amin Mesbahi)
عموما انتخاب معماری، تکنولوژی یا ابزار، از بین ابزارهای موجود و شناختهشده انجام میشه و به ندرت تیمها نیاز یا حتی توانایی خلق معماری جدید رو دارن. توی چنین شرایطی شناخت معماری و زمینهی پیدایشش کمک بزرگی به پیشگیری از انتخاب اشتباه میکنه. یعنی وقتی میدونیم یک معماری در چه شرایطی و برای تأمین چه نیازی به وجود اومده، میتونیم فکر کنیم آیا شرایط و نیاز و مسئلهی فعلی ما هم راستا با شرایط و نیاز ما هست یا نه!
قصد دارم تا طی چند پست در مورد چند معماری مرسوم که عموما به اشتباه انتخاب میشن و بیشتر از اینکه انتخابشون تابعی از نیاز و شرایط باشه، ناشی از ترندهای فضای نرمافزار و حبابهاست بپردازم...
- مایکروسرویس
- متدولوژی Domain-Driven Design
- معماریها Clean / Hexagonal / Onion
اگر فکر میکنید موضوع جذابیه:⚙️
اگر هم پیشنهادی براش دارید حتمن بنویسید 😊
قصد دارم تا طی چند پست در مورد چند معماری مرسوم که عموما به اشتباه انتخاب میشن و بیشتر از اینکه انتخابشون تابعی از نیاز و شرایط باشه، ناشی از ترندهای فضای نرمافزار و حبابهاست بپردازم...
- مایکروسرویس
- متدولوژی Domain-Driven Design
- معماریها Clean / Hexagonal / Onion
اگر فکر میکنید موضوع جذابیه:
اگر هم پیشنهادی براش دارید حتمن بنویسید 😊
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Forwarded from tech-afternoon (Amin Mesbahi)
شاید بد نباشه تا دفعه بعد که خواستید در مورد معماری و ساختار یه پروژه تصمیم بگیرید، یه بار پیشینهی پیدایش مایکروسرویس رو مرور کنین تا از تناسب «نیاز» و «راهکار»ی که مدنظر دارید مطمئن باشید.
نمیشه دقیق و قاطع گفت «اولین» بار کی مفهوم مایکروسرویس رو پیاده کرده. مفهوم مایکروسرویس از تکامل معماریهای قبلتر از خودش، خصوصا به عنوان یک پاسخ به محدودیتهای سیستمهای یکپارچه، و پیچیدگی معماری سرویسگرا (SOA) شکل گرفت. حالا دو چیز رو باید توضیح داد، یک شیوههای امروزیتر پیادهسازی مایکروسرویس، و یکی مفهوم و معماریاش. برای پیادهسازی مدرن، نتفلیکس رو میشه به عنوان یکی از اولین و تأثیرگذارترین پذیرندگان رویکرد میکروسرویس توی مقیاس بزرگ شناخت. نتفلیکس مهاجرت خودش از معماری یکپارچه به مایکروسرویسها رو حدود سال ۲۰۰۹ شروع کرد، خیلی قبل از اینکه اصطلاح "مایکروسرویس" به طور رسمی سال ۲۰۱۱ مطرح بشه. تا سال ۲۰۱۱، نتفلیکس طراحی مجدد بخش قابل توجهی از سیستمهاش به مایکروسرویسها رو تکمیل کرده بود و از AWS استفاده میکرد، و خیلی از الگوهایی که امروز به عنوان استاندارد یا best practice شناخته میشن رو پیاده کرده بود.
ولی از نظر مفهومی، آمازون یکی از پذیرندگان اولیه و کلیدی است. یعنی حدود سال ۲۰۰۱، آمازون (در اون زمان تحت هدایت جف بزوس) شروع میکنه به تجزیه سیستمهای یکپارچه، بزرگ و مستحکمش به سرویسهای کوچکتر و مستقل تا بتونه مشکلات مقیاسپذیری و استقرار رو بهبود بده. این انتقال، زمینه رو برای اونچه سالها بعد، به عنوان معماری مایکروسرویس میشناسیم، فراهم کرد.
پذیرندگان بعدی این معماری، از eBay و Spotify و... همه یک سری دغدغه مشترک داشتن، یعنی مقیاسپذیری، پیچیدگی و وسعت سیستم، و استقرار، اونم با تیمهای بزرگ.
بیایم نگاه بندازیم به روایات!
جناب Fred George یکی از پیشگامان معماری مایکروسرویس میگه هر مایکروسرویس باید به قدری ساده و کوچک باشه که توی ذهن یک توسعهدهنده جا بشه:
"small enough and simple enough that a single developer can understand the whole thing"
بعدتر همین رو مارتین فولر هم به نحوی تکرار میکنه.
حالا سوال اینه که اگر تیم توسعه و تعداد سرویسها بزرگ نیستند، آیا مقیاسپذیری مورد نیازمون به حدی رسیده که scale-up پاسخگو نباشه و بریم سراغ شکست و توزیع سرویسها؟ آیا زیرساخت لازم رو از پردازش ابری تا DevOps تا مونیتورینگ/observabilty و... داریم؟ آیا ظرفیت مستندسازی API، فرایند، کاتالوگ دادهها و فرایندها و... رو داریم؟
تجربیات مستند زیادی وجود داره که استارتاپها و تیمهای کوچیک زیادی «زودتر از موعد» به سراغ مایکروسرویس رفتن و از عهدهی سربارش بر نیومدن... یادمون نره، معماری باید در خدمت مسائل ما باشن، نه اینکه ما در خدمت معماری دربیایم.
توی مباحث DDD به تفصیل خواهم گفت که معماری سازمانی ما هم حتی باید با شیوه تحلیل نیازمندیها و شیوه ترجمهی اونها به راهکارهای نرمافزاری سازگار باشه.
مایکروسرویس فقط تفیکیک کدها به چند پوشه و وصل کردنشون با API و دپلوی کردنشون تحت پروسههای مجزا نیست! و ای بسا میتونه آغازی بشه بر مصیبتهای آشکار فنی و آسیبهای پرشمار پنهان، منجمله نپرداختن به ریشهی کاستیها، یا افتادن به تلهی مرزبندی اشتباه سرویسها از هم.
لذا مایکروسرویس، در زمان مناسبش و با فراهم کرن پیشنیازهاش، و علیالخصوص وقتی که در خدمت حلکردن مسائل ما باشه همون قدر خوب و مفیده که وقتی زودهنگام یا بدون پیشنیازهاش میریم سراغش، مضر!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4
Forwarded from AvalAI | هوش مصنوعی
پردازش فایلهای PDF با استفاده از API هوش مصنوعی
✅ در چشمانداز پویای کسبوکار امروز، اسناد PDF نقشی محوری در گردش اطلاعات و دانش سازمانی ایفا میکنند.
✅ با این حال، استخراج هوشمند اطلاعات از PDF، تحلیل عمیق محتوای PDF فارسی و پردازش کارآمد اسناد حجیم، همواره چالشی بزرگ و زمانبر برای سازمانها بوده است.
✅ لینک مقاله
از قراردادهای حقوقی و گزارشهای مالی دقیق گرفته تا فاکتورهای تجاری و مستندات فنی پیچیده، همگی به این فرمت استاندارد متکی هستند.
Please open Telegram to view this post
VIEW IN TELEGRAM
AvalAI
پردازش فایلهای PDF با استفاده از API هوش مصنوعی
پردازش اسناد PDF با API AvalAI به دو روش اصلی و انعطافپذیر امکانپذیر است، که هر یک برای سناریوها و نیازمندیهای متفاوتی طراحی شدهاند.
👍1
Forwarded from refhub
ربات @RefHubot دستیار جدیدمون هست برای جستجوی کتاب ها ، لطفا راحت باشید و باهاش دوست بشین نسخه ی 0 هست و قطعا مشکلاتی داره، ولی کم کم بهتر میشه با نظرات شما
میتونید بهش ویس بدین، متن بفرستید یا حتی عکس کتاب مورد نظرتون رو ارسال کنید
براتون در رفهاب میگرده و نتایج رو بهتون میده.
میتونید بهش ویس بدین، متن بفرستید یا حتی عکس کتاب مورد نظرتون رو ارسال کنید
براتون در رفهاب میگرده و نتایج رو بهتون میده.
👍5
Forwarded from مدرسه علوم انسانی
This media is not supported in your browser
VIEW IN TELEGRAM
Ⓜ️ نظریات مزاحم
➕موثر در تفکر نقاد، تفکر خلاق، مهارت حل مسئله
➕ یک آزمایش
➕ دکتر آذرخش مکری
🛄 @zistboommedia || مدرسه علوم انسانی
➕موثر در تفکر نقاد، تفکر خلاق، مهارت حل مسئله
➕ یک آزمایش
➕ دکتر آذرخش مکری
🛄 @zistboommedia || مدرسه علوم انسانی
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
اگر دوست دارید بدونید #رسمیو چکار میکنه، یه نگاه به این مصاحبه ی حسین جان ملک نژاد مدیرعامل مون با دنیای اقتصاد داشته باشید.
عارف، معاون اول رئيسجمهور و عضو مجمع تشخیص مصلحت، گفته: «نظام تصمیمساز و تصمیمگیر کشور به نتیجه رفع فیلترینگ رسیده».
فاطمه مهاجرانی، سخنگوی دولت، هم گفته : «امروز تصمیمسازان و تصمیمگیران به این نتیجه رسیدند که فیلترینگ باید برداشته بشود و انشاءالله با توجه به همکاریهای خوب، رفع برخی از محدودیتها را خواهیم دید.»
ما هم امیدواریم که همه ی این ها حرف نباشه.
فاطمه مهاجرانی، سخنگوی دولت، هم گفته : «امروز تصمیمسازان و تصمیمگیران به این نتیجه رسیدند که فیلترینگ باید برداشته بشود و انشاءالله با توجه به همکاریهای خوب، رفع برخی از محدودیتها را خواهیم دید.»
ما هم امیدواریم که همه ی این ها حرف نباشه.
👍6
https://bpluspodcast.com/podcast/first-season/outliers-the-story-of-success/
این اپیزود جالبی بود درباره ارتباط موفقیت و شانس
این اپیزود جالبی بود درباره ارتباط موفقیت و شانس
پادکست بیپلاس
استثناییها؛ داستان موفقیت - پادکست بیپلاس
کتاب استثناییها از مالکوم گلدول با نام کامل Outliers; the story of success دربارهی آدمهای موفق است. آدمهایی اینقدر موفق که با بقیه فاصله میگیرند و بهشان
❤2
Forwarded from tech-afternoon (Amin Mesbahi)
اوایل دههٔ ۲۰۰۰ شرکتهای خیلی بزرگ (بانکها، بیمه، و …) با سیستمهای نرمافزاریای روبهرو بودند که:
- دامینهای با پیچیدگی خیلی بالا داشتند (مثل قوانین کسبوکار پرشمار و در حال تغییر).
- گپ ارتباطی وحشتناکی بین تحلیلگرها و برنامهنویسها وجود داشت؛ اصطلاحات یکی برای دیگری نامفهوم بود.
- هر تغییر کوچک به موجی از regression bugها و استرس انتشار تبدیل میشد.
توی چنین شرایطی، Eric Evans میگه: «بیایید به جای تمرکز صِرفن روی لایههای فنی، قلب مسأله—یعنی دامنه—رو محور کار بگذاریم.» نتیجه شد متدولوژی Domain-Driven Design که توی کتاب معروف «آبی» در سال ۲۰۰۳ متولد شد و بعدتر با کارهای Vaughn Vernon، Jimmy Nilsson و بقیه گسترش پیدا کرد.
برخی مفاهیم پایه در DDD:
- مفهوم Ubiquitous Language
زبان مشترک بین همهٔ ذینفعان. کلاس، جدول DB و اسلاید ارائه باید از یک واژه برای یک مفهوم استفاده کنند، و یک واژه باید همه جا معنی یکسان داشته باشه.
- مفهوم Bounded Context
مرزهایی شفاف برای معنی واژهها. «سفارش» در حسابداری ≠ «سفارش» در انبار.
- مفهوم Aggregate
یک خوشه (گروه) از آبجکتها، با یک ریشهٔ واحد که میشه بهصورت واحد تلقی کردشون.
- مفهوم Context Map
نقشهٔ روابط بین Bounded Contextها؛ شامل پیوندهای همکار، مشتری–تأمینکننده و…
- مفهوم Strategic Design
هنر تشخیص اینکه کِی باید دامنه رو بشکنیم و تیم رو حولش سازماندهی کنیم.
آیا DDD برای همه است؟ نه دقیقاً!
توی «مطلب قبل» دربارهٔ وسوسهٔ ترندها گفتم، DDD هم قربانی حبابها شده. نشونههای انتخاب اشتباه:
- دامنه ساده است (CRUD سرراست، منطق پیچیدهای هم نداره) ولی تیم حتماً میخواد Bounded Context تعریف کنه و Event Storming برگزار کنه!
- ابزارهای تحلیلی، تست، مستندسازی و DevOps هنوز بالغ نیستند اما «میخواهیم معماری تمیز + DDD + مایکروسرویس» رو با هم پیاده کنیم.
- تیم کوچک است ولی هر کانتکست رو توی یک ریپو جداگانه Deploy میکنه و نصف زمانش صرف هماهنگی بین ریپوها میشه.
یادمون نره: DDD هزینه داره—هم آموزشی، هم طراحی، هم نگهداری.
اگر درد پیچیدگی دامنه رو حس نمیکنیم، این دارو تلخ و بیفایده است!!
چرا لزوماً هر معماری دامین-سنتریک، DDD نیست؟!
— بعدتر دراینباره خواهم نوشت که هر گردی گردو نیست!! پیادهسازی Clean / Hexagonal / Onion به معنی DDD نیست!
«توی DDD، معماری کد فقط یک لایه از ماجراست؛ موفقیت زمانی رقم میخوره که ساختار سازمانی و فرایندهای تیم هم با مرزهای دامنه منطبق شن. اگر تیم کوچکه و دامنه پیچیدگی بالایی نداره، صرف داشتن لایهٔ Domain یا استفاده از معماری Clean، شما صاحب DDD نمیشید.»
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍2
بریم یه هفته آتیشی رو استارت بزنیم، هرکس هرجا هست یه قدم به خلق ارزش تو جایگاه خودش نزدیک تر بشه 😁💪
🔥18👍4🏆3❤2⚡1🤩1