موضوع مقاله: مایکروسرویس‌ها | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # مایکروسرویس‌ها | مقدمه: در رایانش، مایکروسرویس‌ها (Micro به معنای بسیار کوچک است) نوعی الگوی معماری است که در آن برنامه‌های پیچیده به بخش‌های کوچک و مستقلی شکسته می‌شوند که از طریق APIهای مستقل از زبان با هم در ارتباط هستند. | ## بخش 1: مایکروسرویس‌ها | معرفی معماری میکروسرویس‌ها معماری میکروسرویس‌ها برای رفع مشکلات معماری یکپارچه به وجود آمد. در معماری یکپارچه، تمامی بخش‌های سیستم در قالب یک کد پایه مشترک طراحی می‌شوند که ممکن است با افزایش پیچیدگی، توسعه و نگهداری آن دشوار شود. جزئیات ویژگی‌های معماری مایکروسرویس‌ها عبارت است از: سرویس‌ها را به راحتی می‌توان جایگزین کرد. سرویس‌ها حول قابلیت‌ها شکل می‌گیرند، مثلاً در رابطه با واسط کاربری، محصولات مشابه و توصیه شده با کاربر وب، صورت حساب و … سرویس‌ها را می‌توان با زبان‌های برنامه‌نویسی، پایگاه‌داده‌ها، محیط سخت‌افزاری و نرم‌افزاری مختلف و متعددی پیاده‌سازی کرد. زیرا که در SOA تلاش برای یکپارچه سازی چندین برنامهٔ کاربردی است در حالی که چندین مایکروسرویس تنها متعلق به یک برنامه هستند. فلسفه فلسفهٔ معماری مبتنی بر مایکروسرویس‌ها: سرویس‌ها کوچکند و به اندازهٔ کافی ریزدانه هستند (fine grained) ولی نه ریزتر به گونه‌ای که یک هدف تجاری و کاربردی خاص را انجام می‌دهند. این روند شبیه فلسفهٔ Unix است که تلاش می‌کند که «یک چیز را انجام دهد و فقط آن را به خوبی انجام دهد». فرهنگ سازمان باید خودکار سازی deployment و تست نرم‌افزار را مشتاقانه بپذیرد زیرا که در این معماری نیاز به چنین رویکردی وجود دارد. فرهنگ و الگوهای طراحی باید فرهنگ حل شکست و خطا داشته باشند و پیوسته در راستای بهبود سرویس‌ها تلاش کنند. | ## بخش 2: مایکروسرویس‌ها | سرویس‌ها باید منعطف، واکنش‌گر، با قابلیت ترکیب شدن با بقیهٔ سرویس‌ها، و در انجام تک وظیفه‌ای که دارند کامل باشند. مزایای استفاده از معماری میکروسرویس‌ها مقیاس‌پذیری بالا در معماری میکروسرویس‌ها، هر سرویس را می‌توان به صورت جداگانه مقیاس‌پذیر کرد. به عنوان مثال، اگر سرویس مربوط به پرداخت‌ها حجم کاری بیشتری داشته باشد، می‌توان تنها این سرویس را مقیاس داد. استقلال توسعه و استقرار تیم‌های توسعه می‌توانند بدون وابستگی به سایر تیم‌ها، بر روی سرویس‌های خود کار کنند و تغییرات را بدون تأثیر بر سایر بخش‌ها منتشر کنند. انعطاف‌پذیری در فناوری هر سرویس می‌تواند با استفاده از زبان و فناوری مناسب خود توسعه یابد. پایداری سیستم اگر یکی از سرویس‌ها دچار مشکل شود، تنها همان بخش تحت تأثیر قرار می‌گیرد و سایر بخش‌های سیستم به کار خود ادامه می‌دهند. انتقاد معماری مایکروسرویس‌ها به خاطر برخی دلایل مورد انتقاد قرار گرفته است: سرویس‌ها گونه‌ای از موانع برای اطلاعات ایجاد می‌کنند. این معماری پیچیدگی مضاعفی ایجاد می‌کند و مشکلات جدیدی همچون تأخیر در شبکه، قالب پیغام‌ها، تقسیم بار و قابلیت تحمل خطابه وجود می‌آورد. نادیده گرفتن هر یک از این‌ها منجر به مشکلاتی می‌شود که در «خطاهای مربوط به پردازش توزیع شده» آمده است. | ## بخش 3: مایکروسرویس‌ها | پیچیدگی برنامهٔ monolithic به شبکه‌ای از مایکروسرویس‌ها منتقل شده است، ولی همچنان وجود دارد: شما می‌توانید آن را جابه‌جا کنید، ولی آن همچنان وجود دارد. چالش‌ها و محدودیت‌ها پیچیدگی مدیریت سیستم معماری میکروسرویس‌ها به ابزارها و روش‌های پیشرفته برای مدیریت نیاز دارد. مانیتورینگ، مدیریت استقرار و اطمینان از ارتباط صحیح بین سرویس‌ها چالش‌برانگیز است. ارتباط بین سرویس‌ها به دلیل تعداد بالای سرویس‌ها، اطمینان از ارتباط سریع و مطمئن بین آن‌ها از اهمیت ویژه‌ای برخوردار است. ابزارها و فناوری‌های مرتبط Docker یک پلتفرم برای ایجاد و مدیریت کانتینرها که برای استقرار سریع و آسان سرویس‌ها استفاده می‌شود. زبان‌های برنامه‌نویسی زبان Jolie به منظور توسعهٔ برنامه‌های توزیع شده مبتنی بر مایکروسرویس‌ها طراحی شده است. نتیجه‌گیری معماری میکروسرویس‌ها به دلیل مزایای گسترده در مقیاس‌پذیری، انعطاف‌پذیری و استقلال توسعه، یک انتخاب مناسب برای سیستم‌های پیچیده و بزرگ است. | ## جمع‌بندی | با این حال، برای بهره‌برداری کامل از این معماری، آشنایی با ابزارها و تکنیک‌های مدیریت آن ضروری است.