23 August 2026
24 August 2026
Ali Nazarihttps://lnkd.in/p/eZfsC72Y
اینکه در مورد حقوق صجبت نمیکنن باید اینجوری در نظر بگیریم که محدودیت ندارن یا چی؟
Abolfazlچون شته
یه خوبیکه داره اینه کل مدل هات رو میتونی توی یه فایل بسازی
معماری پروژه رو بهم میریزه یه کم
ولی خوبیش اینه دیگه همه جلوی چشمته
و میتونی همه رو همونجا هندل کنی
مخصوصا ریلیشن ها
Abolfazlچون شته
یه سوالم داره
این ماژولار نویسی توی نست
دقیقا مفهومش چیه؟
ینی اگر یه جا تو اومدی سرویس find user رو نوشتی داخل ماژول یوزر
میتونی ازین سرویس متد توی ماژول payment استفاده کنی؟
توی ماژولار منولیث ماژول تعریفش میشه یه جزئی که abstraction داره و کلا ارتباطی نباید داشته باشه با ماژول دیگه ای
حتی توی es lint میان rule مینویسن
که نتونی یه ماژول رو توی ماژول دیگه استفاده کنی اصلا
parham pazargadiیه سوالم داره
این ماژولار نویسی توی نست
دقیقا مفهومش چیه؟
ینی اگر یه جا تو اومدی سرویس find user رو نوشتی داخل ماژول یوزر
میتونی ازین سرویس متد توی ماژول payment استفاده کنی؟
توی ماژولار منولیث ماژول تعریفش میشه یه جزئی که abstraction داره و کلا ارتباطی نباید داشته باشه با ماژول دیگه ای
حتی
دوتا بحث جدایی هستن
هدف اینه که هر ماژول مالک domain خودش باشه و فقط از طریق contract که در این نمونه میشه اینترفیس یا …، با بقیه ارتباط بر قرار کنه.
یعنی payment مستقیم به user repository متصل نشه و اصلا نباید بدونه user چجوری ذخیره میشه یا چجپری دریافت میشه
یک متد داخل یک سرویسی هست که دیتای مورد نظرشو میرسونه یا کامندی رو ران میکنه
parham pazargadiبرا همین فک میکنم از منولیث به مایکروسرویس کسی بخواد مایگریت کنه اول پروژه میشه ماژولار منولیث بعدش میشه کامل مایکرو سرویس
بایدی وجود نداره
توی میکرو سرویس هم ممکنه سیستم ماژولار داشته باشی داخل یکی از اپ هات
Abolfazlدوتا بحث جدایی هستن
هدف اینه که هر ماژول مالک domain خودش باشه و فقط از طریق contract که در این نمونه میشه اینترفیس یا …، با بقیه ارتباط بر قرار کنه.
یعنی payment مستقیم به user repository متصل نشه و اصلا نباید بدونه user چجوری ذخیره میشه یا چجپری دریافت میشه
یک متد داخل یک سرویسی هست که دیتای
این قسمت رو نفهمیدم
اگر تو نیاز داشته باشی که بدونی یه یوزر وجود داره یا نه
داخل یه ماژول به اسم payment
تو نمیری متد های یوزر رو کال کنی و به جای اینجکت کردن سرویس
میای ریپازیتوری رو اینجکت میکنی؟
User Repository—> Payment Service
به جای
User Service —> Payment Service
parham pazargadiاین قسمت رو نفهمیدم
اگر تو نیاز داشته باشی که بدونی یه یوزر وجود داره یا نه
داخل یه ماژول به اسم payment
تو نمیری متد های یوزر رو کال کنی و به جای اینجکت کردن سرویس
میای ریپازیتوری رو اینجکت میکنی؟
User Repository—> Payment Service
به جای
User Service —> Payment Service
سرویس رو اضافه میکنم داخلش و از اینترفیس اون ساتفاده میکنم
Cache Strategies
وقتی پروژه بزرگ میشه یکی از راه های سریع تر کردن پروژه اینه که یه سری دیتارو کش کنیم اما این کش کردن فقط این نیست که دیتا رو فقط بزاریم توی ردیس یه سری استراتژی ها رو داره که حالا مهم ترین هاش رو یه بررسی میکنیم
کشینگ یکی از بهترین راهها برای سریعتر کردن سیستم و کم کردن فشار روی دیتابیسه اما اگه استراتژی اشتباه انتخاب کنی، ممکنه داده ناهماهنگ بشه یا حتی مشکل جدی پیش بیاد.
1. Cache-Aside (Lazy Loading)
رایجترین روشه
اول Cache رو چک میکنیم؛ اگه دیتا نبود، از Database میگیریم و بعد داخل Cache ذخیره میکنیم.
Cache → DB → Cache
✅ ساده و قابل کنترل
❌ اولین درخواست همیشه کندتره
❌ ممکنه Cache و DB برای مدتی با هم Sync نباشن
2. Write-Through
وقتی دیتامون رو تغییر میدیم، همزمان هم DB و هم Cache آپدیت میشن.
App → Cache → DB
✅ Cache همیشه داده نسبتاً جدیدی داره
❌ عملیات Write پیچیدهتر و معمولاً کندتر میشه
❌ اگر Cache مشکل داشته باشه، Write هم میتونه تحت تأثیر قرار بگیره
3. Write-Behind (Write-Back)
اول دیتا داخل Cache نوشته میشه و بعداً Cache اون رو به DB منتقل میکنه.
App → Cache → ... → DB
✅ سرعت Write خیلی بالاتر میره
❌ اگر Cache از دست بره، ممکنه دادههایی که هنوز به DB نرسیدن از بین برن
❌ پیادهسازی و مدیریت Failureها سختتره
4. Read-Through
برنامه مستقیماً با Cache کار میکنه و اگر دیاا داخل Cache نباشه، خود Cache میره از DB میگیره.
یعنی منطق گرفتن دیتا از DB بیشتر داخل لایه Cache قرار میگیره.
✅ کد Application تمیزتر میشه
❌ وابستگی بیشتری به سیستم Cache پیدا میکنیم
5. Refresh-Ahead
قبل از اینکه Cache منقضی بشه، دیتا های مهم رو دوباره از DB میگیریم و Cache رو Refresh میکنیم.
مثلاً یک پروداکت خیلی پرطرفدار داریم که همیشه درخواست میخوره.
بهجای اینکه صبر کنیم TTL تموم بشه و درخواست بعدی بره DB، قبلش Cache رو Refresh میکنیم.
✅ جلوگیری از Cache Miss ناگهانی
❌ مصرف منابع بیشتر
❌ برای همه دیتا ها ارزش پیادهسازی نداره
کدوم رو انتخاب کنیم؟
واقعیت اینه که معمولاً یک Strategy برای کل پروژه نداریم.
مثلاً برای بیشتر APIهای Read-heavy، Cache-Aside انتخاب خیلی خوبی میتونه باشه.
ولی اگر Consistency خیلی مهم باشه یا سیستم Wr
206 · AbolfazlAI: این کار رو به یک agent پسزمینه میسپارم که کل فایل رو بخونه و دو فایل README جدا بنویسه
خودش رفت سراغ یه تسک دیگه!!!!!!
Стикер
sticker.webp · 11 KB · click to show
sticker.webp · 11 KB · click to show
😂
realAmirCache Strategies
وقتی پروژه بزرگ میشه یکی از راه های سریع تر کردن پروژه اینه که یه سری دیتارو کش کنیم اما این کش کردن فقط این نیست که دیتا رو فقط بزاریم توی ردیس یه سری استراتژی ها رو داره که حالا مهم ترین هاش رو یه بررسی میکنیم
کشینگ یکی از بهترین راهها برای سریعتر کردن سیستم و کم کردن فشار ر
اخ
Man
چه مقاله خوبی
realAmir🙏🏼🤍
یه سری هم انواع متنوع داره
Memcache
Redis برای تپزیع پذیری
Database cache ( برای خود postgres)
In memory (nest js built-in)
اونام خوبم