<aside> 💡
</aside>
پست تورهام رو ببینید:
این دو روز داشتم رو این کار میکردم. کد چلنج یکی از شرکتها که براشون رزومه فرستاده بودم. یک سیستم خرید کریپتو. این طوری خریدها رو میگیره داخل ردیس ذخیره میکنه ایونت و رکورد خرید رو. بعد یک تسک هر چند وقت یکبار اجرا میشه و اون خریدها رو نهایی میکنه و ایونتش رو از ردیس پاک میکنه.
این روش درست پیاده سازی همچین چیزی نیست چون یک تایم (اینجا ۳۰ ثانیه) طول میکشه ک اون تسک نهایی کردن خریدها ران بشه. درستش پیاده سازی با آپاچی کاکفا و من چون بلد نبودم با سلری و ... زدمش :)
ستاره بدید خوشحال شم 🫠
https://github.com/TorhamDev/buy-cryptocurrency
چلنج این تسکی که به تورهام داده بودن رو خیلی دوست داشتم(صرافی کریپتو). برای همین خواستم ایراداتشو تکمیل کنم. این ریپو رو تو ۴ ساعت کد زدم. که درواقع تمرکز رو EDD کردن بود با داینامیک کردن لاجیک بیزنس که کریپتو های جدید و api های جدید (جهت تحویل خودکار اوردر) و کلا فیچر های جدید خیلی راحت اضافه شن.
https://github.com/ManiMozaffar/edd-exchange
یک proto type برای دو سرویس exchange کریپو به سبک event driven هست
با ردیس استریم هم هندلش کردم که یکم ردیسم قوی تر شه. نظرتون رو بگید راجب دیزاینش .
پ.ن: تست و ران و دیباگ نکردمش صرفا prototype بود جهت تمرین
مفاهیمی که تو این ریپو به کار برده شده رو کم کم توضیح میدم.
راجب معماری SOA چقدر اطلاع دارین؟
اولا تو SOA ما رو برنامه نویسی ماژولار خیلی تاکید داریم. یک دیتابیس میتونه توسط دو اپلیکیشن استفاده شه برعکس microservice. پس هر دیتابیس شما باید یک اینترفیس داشته باشه که طبق اون پیاده سازی انجام شده باشه. من اسم ماژولی که استفاده کردم اینجا shared گذاشتم. بعد همین ماژول رو تو دو سرویس دیگه هم دیپلوی کردم.
تو بست پرکتیس هر دیتابیس شما باید جداگونه یک ماژول جدا باشه. ماگریشن هم میتونیم یا تو اون ماژول بذاریم یا تو سرویس اصلی اون دیتابیس. معمولا هر دیتابیس یک سرویس اصلی داره مثل monolithic ولی اگه نداشت پس باید تو ماژولش هم ماگریشن رو میذاریم. تو ماژول دیتابیس علاوه بر ماگریشن, باید sql model database و query repository و سمپل دیتا تست هم باشه.
sql model database -> همون مدل دیتابیس که یک تیبل رو نمایش میده
query repository -> یک ریپازیتوری پترن که کوئری های تکراری داخلش هست که باعث تکرار کوئری تو اپلیکیشن های مختلف نشه. تو اپلیکیشن های مختلف همین کوئری رو ساب کوئری میکنیم
sample data -> دیتایی که تو محیط dev استفاده میشه و ساخته میشه