میکروسرویس ها (microservices) به یک رویکرد معماری محبوب برای ساخت برنامه های کاربردی قوی و مقیاس پذیر تبدیل شده اند. ایده اصلی پشت میکروسرویس ها این است که برنامه های کاربردی بزرگ و پیچیده را به مجموعه ای از سرویس ها (services) کوچک تر و غیرمتمرکز تقسیم کنیم. لاراول برای توسعه وب به دلیل سینتکس آسان و هسته سبک آن یک انتخاب ارجح است زیرا آن را به یک فریمورک عالی برای پیاده سازی میکروسرویس ها تبدیل می کند. در این مقاله، نگاهی خواهیم داشت به اینکه میکروسرویس ها چیست، مزایای آنها و نحوه استفاده از لاراول برای ایجاد معماری میکروسرویس چیست.
میکروسرویس ها چیست؟
میکروسرویس ها (microservices) یک سبک معماری هستند که یک برنامه کاربردی را به عنوان مجموعه ای از سرویس ها (services) کوچک مستقل ساختار می دهند. در لاراول، میکروسرویسها را میتوان بهعنوان برنامههای مستقل لاراول ساخت که هر کدام بر روی یک قابلیت تجاری خاص تمرکز دارند. لاراول ابزارهایی مانند صفها، رویدادها و روت های RESTful را ارائه میکند که به ایجاد میکروسرویسهای جداشده کمک میکند. اگر می خواهید بین میکروسرویس ها و monlith ها یک معماری صحیح انتخاب کنید، این مقاله را بررسی کنید.
میکروسرویس های ساخته شده با لاراول از طریق API ها ارتباط برقرار می کنند و می توانند به طور مستقل مستقر شوند. به عنوان مثال، یک برنامه تجارت الکترونیکی میتواند دارای ریزسرویسهایی باشد که با لاراول برای کاتالوگ محصولات، پروفایل های کاربر، سبد خرید و پردازش پرداخت ساخته شدهاند. هر میکروسرویس پایگاه داده و پایگاه کد خود را حفظ می کند و در صورت نیاز از طریق API ها ارتباط برقرار می کند. این یک مثال رایج میکروسرویس لاراول است که ماهیت مدولار معماری میکروسرویس ها را نشان می دهد.
جهت آشنایی با 10 تا از آنتی پترن در میکروسرویس ها این مقاله را بررسی کنید.
لاراول چیست؟
لاراول (LARAVEL) یک فریمورک وب PHP منبع باز است که از الگوی معماری MVC پیروی می کند. لاراول که با در نظر گرفتن بهرهوری توسعهدهنده طراحی شده است، قصد دارد با آسانتر کردن وظایف رایج مانند احراز هویت، روت ها، سشن ها و ذخیرهسازی، دردسرهای توسعه را کاهش دهد. سینتکس رسا لاراول، موتور قالب سازی ظریف Blade و ORM Eloquent بصری ساختن سریع برنامه های کاربردی وب با امکانات کامل را آسان می کند.
لاراول به عنوان میکروسرویس
لاراول به چارچوبی برای ساخت میکروسرویس های مقیاس پذیر تبدیل شده است. لاراول در هسته خود، وظایف رایج توسعه وب را ساده می کند و به توسعه دهندگان این امکان را می دهد تا ویژگی ها را به سرعت انجام دهند. این به خوبی به معماری میکروسرویس کمک میکند، جایی که برنامهها به سرویسهایی با اندازه کوچک تقسیم میشوند که میتوانند بهطور مستقل توسعه و اجرا شوند.
لاراول به لطف ابزار قوی خود در توسعه میکروسرویس واقعا می درخشد. ORM Eloquent تعامل با پایگاه داده و اجرای کوئری های پیچیده را آسان می کند. ویژگیهایی مانند صفها، رویدادها و broadcasting، ارتباط ناهمزمان بین سرویسهای جداشده را ممکن میسازد. لاراول با استفاده از این ابزارها و پارادایمهایی مانند توسعه مبتنی بر پیکربندی، از بسیاری از کارهای سنگین توسعه میکروسرویس مراقبت میکند. سپس توسعهدهندگان در اجرای قابلیتهای تجاری گسسته به روشی قابل نگهداری و مقیاسپذیر آزادند.
معماری میکروسرویس لاراول
مجموعه ویژگی های گسترده لاراول به خوبی به ساخت میکروسرویس های مقیاس پذیر کمک می کند. هر میکروسرویس را می توان به عنوان برنامه لاراول مستقل خود ساخت. این به توسعه دهندگان اجازه می دهد تا یک برنامه را به سرویس های مدولار و متمرکز بر اساس دامنه های تجاری تقسیم کنند. در هسته خود، میکروسرویس ها در لاراول یک برنامه کاربردی را به مجموعه ای از سرویس های ماژولار تجزیه می کنند که هر کدام دارای یک قابلیت تجاری خاص هستند. این سرویسها از طریق APIهای زبان آگنوستیک، که معمولاً از طریق HTTP REST هستند، ارتباط برقرار میکنند. این امر توسعه چند زبانه را تسهیل می کند، جایی که هر سرویس می تواند به زبان مناسب برای وظیفه خود نوشته شود. برای آشنایی با API نویسی در لاراول این مقاله را بررسی کنید.
مزایای رویکرد میکروسرویس شامل جداسازی خطا، مقیاس پذیری مستقل، و سهولت درک و حفظ سیستم های پیچیده در طول زمان است. لاراول در سرعت بخشیدن به توسعه این نوع سرویس ها برتر است. سینتکس رسا آن کد boilerplate را کاهش می دهد، در حالی که سرویس های داخلی آن، مانند صف ها و رویدادها، ارتباط ساده ناهمزمان بین سرویس ها را امکان پذیر می کند.
مزایای میکروسرویس لاراول
در این بخش، به برخی از مزایای اصلی استفاده از لاراول برای توسعه میکروسرویس ها خواهیم پرداخت. درک این مزایا نشان می دهد که چرا لاراول به عنوان یک فریمورک برتر برای استقرار برنامه های کاربردی پیچیده با استفاده از رویکرد میکروسرویس ظاهر شده است.
فقط شامل تماسهای API بین سرویسها میشود. میکروسرویسهای لاراول برای رسیدگی به یک قابلیت یا عملکرد تجاری خاص طراحی شدهاند. با محدود نگه داشتن دامنه، هر سرویس می تواند خاص و برای کار خاص خود بهینه شود. این منجر به عملکرد سریعتر در مقایسه با برنامه های کاربردی بزرگ یکپارچه می شود.
فرا خوانی با API ها. در معماری میکروسرویسها، سرویسهای مختلف از طریق تماسهای API، اغلب APIهای RESTful از طریق HTTP با یکدیگر ارتباط برقرار میکنند. هیچ جفت مستقیمی بین پایگاه های کد سرویس وجود ندارد. این مزایایی مانند توانایی مقیاسسازی مستقل سرویس ها و توسعه آنها به زبانهای مختلف را به همراه دارد.
می تواند از زبان های مختلف برای سرویس های مختلف استفاده کند (مانند NodeJS برای اعلان ها). یکی از مزایای میکروسرویس ها، توانایی ترکیب چندین زبان در یک برنامه واحد است. به عنوان مثال، یک میکروسرویس NodeJS میتواند اعلانهای realtime را مدیریت کند، در حالی که سرویسهای بک اند لاراول بر منطق تجاری تمرکز دارند. این سرویسها فقط باید APIهای ثابتی را برای مصرف سایر سرویسها در معرض نمایش بگذارند.
هر سرویس می تواند به طور مستقل بر اساس تقاضا مقیاس بندی شود. اگر یک میکروسرویس افزایش ناگهانی ترافیک را تجربه کند، میتوان آن را تکرار کرد و در صورت نیاز بدون تأثیر بر بقیه برنامه، بارگذاری کرد. این سطح از مقیاس بندی دانه ای، کارایی هزینه و مزایای عملکرد را در مقیاس به ارمغان می آورد.
مناسب برای کاربردهای در مقیاس بزرگ. ماهیت غیرمتمرکز میکروسرویس ها، آنها را برای کاربردهای بزرگ و پیچیده ای که نیاز به پشتیبانی از مقیاس و تکامل عظیم در طول زمان دارند، مناسب می کند. رویکرد مدولار ارتقاء را تسهیل می کند و به رفع پیچیدگی کمک می کند.
استقرار آسانتر:
سرویس های خودکفایی را می توان در ماشین های مجازی و کانتینرهای جداگانه مستقر کرد. هر میکروسرویس یک پایگاه کد جداگانه است که می تواند جدا از بقیه در زیرساخت خود اجرا شود. این وابستگی ها را حذف می کند و استقرار را ساده می کند.
خطر کمتر خرابی سیستم حتی اگر یکی از سرویس ها با شکست مواجه شود، تا زمانی که وابستگی ها به خوبی مدیریت شوند، سرویس های دیگر می توانند به طور عادی به کار خود ادامه دهند. شعاع انفجار در مقایسه با معماری های یکپارچه محدود است.
از معماری مدولار برای تیم های بزرگتر پشتیبانی می کند. با تیمهای متعددی که هر کدام بر روی سرویس های خاصی متمرکز شدهاند، میکروسرویسها جداسازی نگرانیها و مالکیت واضح را اعمال میکنند. این امر تحویل چابک را در سازمان های بزرگتر تسهیل می کند.
آسان برای ارتقا و نگهداری سرویس ها به طور مستقل. میکروسرویسها به هر تیمی اجازه میدهند تا بهروزرسانیهای سرویسهایشان را طبق برنامه زمانی خود منتشر کنند. ویژگیهای جدید را میتوان بدون هماهنگی بین تیمها یا تأثیرگذاری بر سایر سرویس ها اضافه کرد.
چارچوبها، زبانها و پایگاههای اطلاعاتی مختلف را ترکیب میکند. میکروسرویس ها انتخاب های محدود کننده فناوری را حذف می کنند. سرویسهای مختلف میتوانند از زبانها، چارچوبها و ذخیرههای داده بهینه بر اساس نیازهای خاص خود استفاده کنند.
میتواند سرویسها را به هر زبانی بسازد و APIهای REST/RPC را ارائه کند. از آنجایی که ارتباط از طریق APIها انجام میشود، زبان پیادهسازی هر سرویس انعطافپذیر است. تا زمانی که سرویسها APIهای یکسانی را در معرض نمایش قرار میدهند، میتوان داخلیها را بدون تأثیر بر مصرفکنندگان تعویض کرد.
ساخت یک معماری میکروسرویس قوی لاراول با پیچیدگیهای زیادی همراه است، از تصمیمهای طراحی اولیه گرفته تا استقرار، مقیاسبندی، و قابلیت نگهداری در طول زمان. در حالی که لاراول ابزارهای بسیار خوبی را برای میکروسرویس ها فراهم می کند، پیاده سازی صحیح میکروسرویس های مبتنی بر لاراول به تجربه و تخصص نیاز دارد.
چه زمانی باید به سراغ میکروسرویس های لاراول بروید؟
سناریوهایی که در آن میکروسرویس با لاراول منطقی است، عبارتند از:
توسعه گرین فیلد سیستم های جدید و در مقیاس بزرگ
شکستن کاربردهای یکپارچه قدیمی
افزودن قابلیت های جدید عمده به یک برنامه موجود
چالشهای مقیاسبندی یا نگهداری با یکپارچه
برنامه های کاربردی با پیچیدگی بالا یا نیازمندی هایی که به سرعت در حال تغییر هستند
برنامه هایی که نیاز به استفاده از چندین زبان برنامه نویسی دارند
برنامه های کاربردی با اجزایی که ترافیک فردی سنگینی را ایجاد می کنند
ادغام با سرویس های خارجی یا API ها
چگونه با لاراول لومن میکروسرویس بسازیم؟
لاراول لومن چارچوب سبک وزنی را ارائه می دهد که برای ساخت میکروسرویس های مقیاس پذیر بهینه شده است. در این آموزش، توسعه API میکروسرویس ساده از ابتدا با Lumen را بررسی خواهیم کرد.
راه اندازی پروژه لومن جدید
ابتدا با استفاده از Composer یک پروژه Lumen جدید ایجاد می کنیم. این یک پایگاه کد جدید Lumen را راهاندازی میکند که میتوانیم میکروسرویس خود را در بالای آن بسازیم.
composer create-project –prefer-dist laravel/lumen blog-api
پیکربندی
در مرحله بعد، باید پایگاه داده و جزئیات اتصال خود را در فایل env.
پیکربندی کنیم. این به میکروسرویس ما اجازه می دهد تا به پایگاه داده متصل شود.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lumen
DB_USERNAME=root
DB_PASSWORD=
مسیرها
بیایید یک مسیر آزمایشی ساده در routes/web.php
تعریف کنیم تا بررسی کنیم که مسیریابی به درستی کار می کند:
$router->get(‘/ping’, function() {
return ‘pong’;
});
کنترلر
ما از Artisan برای تولید PostController
استفاده می کنیم که در آن می توانیم منطق API خود را تعریف کنیم. مطمئن شوید که namespace مدل Post را در اینجا وارد کنید.
php artisan make:controller PostController
مدل ها
مدل پست ما برای تعامل با جدول پایگاه داده پست ها استفاده خواهد شد. ما آن را به صورت زیر ایجاد می کنیم:
php artisan make:model Models/Post
Migration ها
اجرای Migrations جداول پایگاه داده مورد نیاز را برای مدل های ما ایجاد می کند. در اینجا یک Migration برای ایجاد جدول پست ها ایجاد می کنیم.
php artisan make: migration create_posts_table
آزمایش کردن
در نهایت، میتوانیم درخواستهایی مانند posts/ به نقاط پایانی API خود ارائه کنیم تا بررسی کنیم که میکروسرویس ما به درستی کار میکند! و این اصول ساخت API با Lumen را پوشش می دهد! ویژگیهای بسیار بیشتری وجود دارد که میتوان به آنها اشاره کرد، اما این آموزش باید پایه خوبی برای شروع توسعه میکروسرویسها با استفاده از اکوسیستم لاراول ارائه دهد.
معماری میکروسرویس لاراول و آینده میکروسرویس ها
معماری میکروسرویس به سرعت جایگزین تکنیک طراحی سنتی برای توسعه دهندگان لاراول می شود زیرا مزایایی برای ایجاد و ارائه سیستم های سازمانی دارد. استفاده از API ها مانند میکروسرویس ها در بین شرکت های توسعه لاراول و برنامه نویسان گسترده است.
Microservices از خدمات مختلف از طریق Remote Procedure Calls برای طیف وسیعی از عملکردها استفاده می کند. همچنین این امکان را برای توسعه دهندگان فراهم می کند تا از خدمات ساخته شده با فناوری های مختلف استفاده کنند. مفهوم DevOps برای ارتقای این رویکرد شایسته همه اعتبار است.
شاید تعجب کنید که آینده میکروسرویس ها چیست؟ صادقانه بگویم، ممکن است پیشبینی اینکه کدام ایدهها یا فناوریها برای مدت طولانی دوام خواهند داشت، بسیار دشوار است. با این حال، از آنجایی که به کاربران خود راه حل محکمی ارائه می دهد، پیش بینی می شود که مفهوم میکروسرویس با گذشت زمان مورد توجه قرار گیرد.
برای آشنایی با تزریق وابستگی و سرویس کانتینر ها در لاراول این مقاله را بررسی کنید.
نتیجه
میکروسرویسهای لاراول به بخشهای مختلف پروژه شما کمک میکنند تا به خوبی با هم کار کنند و مدیریت آن را سادهتر کنند. وقتی چنین نیازهایی دارید، استفاده از میکروسرویس ها تاثیر بسیار مثبتی بر روی پروژه شما خواهد داشت.
نظر شما درباره میکروسرویس ها چیست؟ در قسمت نظرات با ما به اشتراک بگذارید.