میکروسرویس (Micro Service) چیست؟
میکروسرویس (MicroService) چیست؟
ایده اصلی معماری میکروسرویس این است که نرم افزار را به بخش های کوچک مستقل از هم تقسیم کنیم که ارتباط این سیستم ها با هم، نرم افزار اصلی ما را شکل خواهد داد. در این معماری هر کدام از سرویسها، می تواند با زبان برنامه نویسی و پایگاه داده جداگانه ای نوشته شوند و از طریق واسط هایی مثل ReST فراخوانی و استفاده شوند. هر کدام از این سیستم ها کاملا مستقل از هم باید طراحی شود. به گونه ای که بتوان آنرا به تیم جداگانه ای داد فقط ابتدا باید خدماتی که یک سرویس ارائه می کند و نحوه فراخوانی آنها را مشخص کنیم و بعد کار را به توسعه گران تحویل دهیم.
میکروسرویس (MicroService) چیست؟
ایده اصلی معماری میکروسرویس این است که نرم افزار را به بخش های کوچک مستقل از هم تقسیم کنیم که ارتباط این سیستم ها با هم، نرم افزار اصلی ما را شکل خواهد داد. در این معماری هر کدام از سرویسها، می تواند با زبان برنامه نویسی و پایگاه داده جداگانه ای نوشته شوند و از طریق واسط هایی مثل ReST فراخوانی و استفاده شوند. هر کدام از این سیستم ها کاملا مستقل از هم باید طراحی شود. به گونه ای که بتوان آنرا به تیم جداگانه ای داد فقط ابتدا باید خدماتی که یک سرویس ارائه می کند و نحوه فراخوانی آنها را مشخص کنیم و بعد کار را به توسعه گران تحویل دهیم.
فرض کنید که یک سرور داریم که با کلاینت های مختلف و زیادی باید در ارتباط باشد. این سرور یقینا عملیات زیادی را باید انجام دهد. حال برای چنین سیستمی باید از چه معماری نرمافزاری استفاده کنیم؟
ما دو نوع معماری نرم افزار داریم:
- معماری Monolithic
- معماری Micro Services
معماری Monolithic
- این نوع معماری که تحت عنوان معماری MVC هم شناخته میشود دارای یکسری نواقصی است. به عبارت دیگر، تمامی لایهها (مدل، ویو و کنترلر) زیر پرچم یک پلتفرم واحد مدیریت میشوند و ارتباط بسیار تنگاتنگی با یکدیگر دارند و مثلاً به سادگی نمیتوان Model یک اپلیکیشنی که تحت معماری MVC نوشته شده را برداشته و در پروژهٔ دیگری استفاده کرد.
- این معماری چند سکویی نیست. (به این معنی که برای یک فریم ورک مشخص نوشته میشوند و در همه سیستم عامل ها پشتیبانی نمی شوند.)
- اگر بخشی از پروژه از کار بیفتد، امکان توقف کامل سیستم وجود دارد.
- در هر بار اجرا، کل برنامه باید اجرا شود.
"تعریف" در یک خط - کل سیستم بصورت یک نرم افرار یکپارچه پیاده سازی میشود.
معماری Micro Services
- باتوجه به اینکه میکروسرویسها مجزا و مستقل از یکدیگر هستند، به راحتی قادر خواهیم بود تا آنها را با زبانهای برنامهنویسی مختلفی نوشته و برای ذخیرهسازی دادههای مرتبط با آنها، از سیستمهای مدیریت دیتابیس مختلفی استفاده کنیم.
- میکروسرویسها اصطلاحاً Scalable (قابل توسعه) هستند. ماهیت مستقل سرویسهای یک میکروسرویس، این امکان را برایمان فراهم میآورند تا با استفاده از زبانی خاص، دیتابیسی خاص و همچنین سروری خاص به توسعهٔ اپلکیکشن مد نظر خود بپردازیم و در صورت نیاز، صرفاً منابع همان پلتفرم را ارتقاء دهیم.
- بدیهی است که با این معماری، هر سرویس را میتوان به صورت جداگانه ایجاد کرد و تغییر داد که باعث سرعت در به روزرسانی و گسترش برنامه میشود.
- امکان استفاده از سرویسهای موجود در کاربردهای دیگر وجود دارد چرا که این سرویسها در بستر شبکه با هم در ارتباطند.
باید بدانید که سرعت برنامههای نوشته شده با معماری Microservices کندتر از برنامههای نوشته شده با معماری Monolithic است. دلیل آن محیط اجرایی برنامهها است. برنامههایی با معماری Monolithic بر روی حافظه سرور پردازش میشوند.
آیا تجربهٔ کار با معماری Microservice را داشتهاید؟ به نظر شما مزایا و معایب این نوع معماری چیست؟
"منتشر شده در سایت ABLY"