مهندس نرم افزار در اسنپ اکسپرس و سابقا در زرینپال
معماری مونولوتیک یا monolithic چیست؟
معمولا وقتی که یک شخص برنامه نویسی رو شروع میکنه به صورت پیش فرض داره از معماری مونلوتیک استفاده میکنه و شاید خودش هم بی اطلاع باشه.معماری مونولوتیک سه تا الگوی رایج داره که در هرک دوم رو به صورت مختصر برای شما توضیح خواهم داد.
الگوی single monolithic
فرض کنید شما یه پروژه فروشگاه اینترنتی دارید پیاده سازی میکنید. همه فایل های شما یکجا و توی یک فولدر قرار داند. پروژه شما بخشهای مختلفی هم داره مثلا محصولات، سفارشات و ... بعد همه کدها تون به هم وابسته هستن یعنی اگر یک بخش رو تغییر بدید ممکنه که کل پروژه شما به مشکل بخوره. اتصالب به دیتابیس کاربا دیتابیس نمایش اطلاعات و ... همه اینها توی یک فایل قرار دارن. پس وقتی از این الگو استفاده میشه وابستگی بین بخشهای مختلف وجود داره و تغییر توی هر بخش ممکنه کل پروژه رو از کار بندازه.
هدف ما این هستش که سیستم فروشگاه ساز پیشرفته رو با گولنگ پیاده سازی کنیم و در نهایت روی کوبرنتیز دیپلوی اجرا کنیم یعنی ۰ تا ۱۰۰ یه پروژه گولنگی . به زودی ویدیوی این آموزش ها در وبسایت uncodev منتشر خواهند شد.
الگوی modular monolithic یا همون ماژرلار مونولوتیک
همون پروژه فروشگاه اینترنتی رو در نظر بگیرید با این تفاوت که هر بخش به یک ماژول تبدیل شده و به صورت مستقل داره کارشو انجام میده. ماژول پرداخت ماژول محصولات ماژول دسته بندیها و ... اینجوری تغییر توی هر بخش میتونه به صورت جداگانه انجام شود و به بخش های دیگه وابستگی نداره. حتی تیم های جداگانه میتونن بیان و روی هر کدوم از این ماژول ها کار کنن. پس اینجوری وابستگی ها کم میشه و توسعه پروژه راحت تر میشه.حتی هر ماژول میتونه توی یک پروژه دیگه هم استفاده بشه مثلا ماژول یوزر و ...
الگوی layeres monolithic یا همون مونولوتیک لایه بندی شده
شما همون الگوی ماژولای قبلی رو در نظر بگیر اما با این تفاوت که پروژه دیگه لایه های مختلف داره. مثلا لایه کار با دیتابیس، لایه لاجیک ، لایه نمایش خروجی به کاربر. یکی از معروفترین ها و پرکاربردترینهاش MVC هستس که اینجا m میشه لایه مدل و برای کار با دیتابیس مورد استفاده قرار میگیره v میشه ویو که برای نمایش خروجی به کاربر استفاده میشه، C هم میشه کنترلر که برای پردازش درخواست های کاربر مورد استفاده قرار میگیره. بر اساس پروژه میشه لایه های دیگه هم اضافه کرد یا اسماشون رو تغییر داد اما کلیتش همیشنه که شما میای و پروژت رو هم ماژولار میکنی و هم لایه بندی شده. اینجوری خیلی خیلی پروژت توسعه پذیرتر خواهد شد.
توی وبسایت ما اطلاعات کاملتری در رابطه با معماری های نرم افزاری مثلا ماکروسرویس وجود داره. به سایت ما هم سر بزن https://uncodev.com
مطلبی دیگر از این انتشارات
تفاوت دیتابیسهای MySql,PostgreSQL,Cassandra,Mongo
مطلبی دیگر از این انتشارات
تفاوت انجین MySQL InnoDB و MySQL MyISAM
مطلبی دیگر از این انتشارات
دوره آموزشی گولنگ (Golang) از مقدماتی تا پیشرفته: ورود به بازار کار