میکروسرویس چیست؟
۳۱ تیر ۱۳۹۹
میکروسرویسها، توزیعهای کوچکی از یک سرویس هستند که در کنار هم کار میکنند. معماری میکروسرویس به عنوان راهحلی برای مقیاسپذیری و چالشهای نوآوری با معماری Monolith تکامل یافته است (برنامههای Monolith بهطور معمول بیش از ۱۰۰,۰۰۰ خط کد دارند). این نوع معماری به شما اجازه میدهد تا یک برنامه بسیار بزرگ را به اجزای بسیار کوچکتر تقسیم کنید که به راحتی قابل کنترل هستند و هر کدام وظیفه خاص خود را در یک مجموعه بزرگ انجام میدهد.
دلایل استفاده از میکروسرویس:
در برنامههای Monolith، چند چالش وجود دارد:
- برای یک برنامه بزرگ، درک پیچیدگیها و ایجاد تغییرهای سریع و صحیح در کدها، دشوار است. گاهی اوقات مدیریت کدها به یک دشواری تبدیل میشود.
- برنامهها برای اطمینان از صحت و تاثیر تغییرهای ایجاد شده، به آزمایش دستی گسترده نیاز دارند.
- برای ایجاد تغییرهای کوچک، تمام برنامه نیاز دارد دوباره ساخته و عملیات استقرار آن، انجام شود.
- برنامه سنگین، زمان راهاندازی را کند میکند.
مزایای میکروسرویس:
- ماژولهای کوچک (Small Modules): با استفاده از میکروسرویس، برنامه به ماژولهای کوچکتر تقسیم میشود که کدنویسی و نگهداری از آن برای توسعهدهندگان آسان است.
- تطبیق فرآیند آسانتر (Easier Process Adaption): با استفاده از میکروسرویسها، تطبیق فناوری جدید و فرآیند آن، آسانتر میشود. میتوانید با استفاده از میکروسرویسهای جدید، فناوریهای جدید را استفاده کنید.
- مقیاس گذاری مستقل (Independent scaling): هر میکروسرویس میتواند از طریق X-axis scaling (افزایش قدرت CPU یا مقدار memory) و Z-axis scaling (Sharding) که در این نوع تعداد سرورها افزایش پیدا میکند، بسته به نیاز شما مقیاسپذیر باشد.
- بی تاثیر (Unaffected): برنامههای بزرگ به دلیل عدم اجرای موفق یک ماژول تا حد زیادی کاراییشان را از دست میدهند.
- DURS (deployed, updated, replaced, and scaled): هر سرویس به طور مستقل میتواند از قابلیتهای استقرار، بهروز رسانی، جایگزینی، مقیاسپذیر، بهره ببرد.
محدودیتهای میکروسرویس:
- مدیریت پیکربندی: هرچه برنامه بزرگتر میشود، دردسرها برای پیکربندی سرویسها و مانیتورینگ آنها بیشتر میشوند. شما باید تنظیمات صدها کامپوننت را در محیط (enviroments) برنامهتان، نگهداری کنید.
- اشکالزدایی یا دیباگینگ: پیدا کردن اینکه کجای برنامهتان با خطا روبرو شده است، کار پردردسری است. در مواقعی شاید لازم باشد که چندین سرویس را در کامپوننتهای مختلف بررسی کنید. تمرکز برروی ثبت Logها یک کار ضرروی و آسان برای پیدا کردن مشکلها است.
- اتوماسیون: از آنجا که بهجای یک برنامه Monolith، کامپوننتهای کوچکتری ساخته شدهاند، شما باید همه چیز را خودکار کنید (ساخت، استقرار، مانیتورینگ و …).
- آزمایش: در این قسمت نیاز به تلاشهای بیشتری برای آزمایش قسمتهای کوچک شده برنامه، دارد زیرا به تمام خدمات وابسته نیاز دارد.
فریمورکهای میکروسرویس برای Java:
چندین فریمورک میکروسرویس وجود دارد که میتوانید برای توسعه با زبان Java از آنها استفاده کنید. برخی از این موارد عبارتند از:
- Spring Boot: این تکنولوژی احتمالا یکی از بهترین فریمورکهای میکروسرویس جاوا محسوب میشود، که در قابلیتهایی مانند وارونگی کنترل (Inversion of Control)، برنامهنویسی جهتگرا (Aspect Oriented) و سایر موارد، بهتر از زبانهای دیگر عمل میکند.
- Dropwizard: در این فریمورک، کتابخانههای مفید و پایدار اکوسیستم جاوا به پکیجهای کم حجم و سادهای تبدیل شده که به شما اجازه میدهد که بر روی پروژ خود تمرکز کنید.
- Restlet: این فریمورک به توسعهدهندگان جاوا کمک میکند که web API با معماری REST بسازند.
- Spark: یک فریمورک میکروسرویس برای ایجاد برنامههای وب در Kotlin و Java 8 با حداقل تلاش.
سایر مواردی که میتوانید در نظر بگیرید عبارتند از: Ninja Web Framework، Play Framework، RestExpress و Restx Framework.
منبع: https://www.geeksforgeeks.org/microservices-introduction
توسعهدهندگان دربارهی ما چه میگویند
تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...
MohammadReza
keikaavousi
بعد از بسته شدن @fandoghpaas و ناراحتی همهمون از اینکه یه سرویس خوب و صادق نمیتونه از پس هزینهها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوتهایی داشت که کمی کار میخواست ولی تا الان کاملا راضی.
jadi
jadi
یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.
Arch
EbadiDev
واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیتهای سرویس دیتابیسشون اینه که خودشون به صورت دورهای بکآپ میگیرن.
...
Ali Najafi
me_ali_najafi
یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@
Navid
1navid
عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم
Amir H Shekari
vanenshi