میکروسرویس چیست؟
۳۱ تیر ۱۳۹۹
میکروسرویسها، توزیعهای کوچکی از یک سرویس هستند که در کنار هم کار میکنند. معماری میکروسرویس به عنوان راهحلی برای مقیاسپذیری و چالشهای نوآوری با معماری 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