Microservice Architecture - راهنمای سریع

Microservice یک متدولوژی توسعه اپلیکیشن مبتنی بر سرویس است. در این روش، برنامه های کاربردی بزرگ به کوچکترین واحدهای خدمات مستقل تقسیم می شوند. میکروسرویس فرآیند پیاده‌سازی معماری سرویس‌گرا (SOA) با تقسیم کل برنامه به عنوان مجموعه‌ای از خدمات به هم پیوسته است که در آن هر سرویس تنها به یک نیاز تجاری پاسخ می‌دهد.مفهوم رفتن به میکرودر معماری سرویس گرا، کل بسته های نرم افزاری به واحدهای تجاری کوچک و به هم پیوسته تقسیم می شوند. هر یک از این واحدهای تجاری کوچک با استفاده از پروتکل های مختلف با یکدیگر ارتباط برقرار می کنند تا کسب و کار موفقی را به مشتری ارائه دهند. حال سوال این است که معماری میکروسرویس (MSA) چه تفاوتی با SOA دارد؟ در یک کلام SOA یک الگوی طراحی و Microservice یک متدولوژی پیاده سازی برای پیاده سازی SOA یا می توان گفت Microservice نوعی SOA است.در زیر قوانینی وجود دارد که باید هنگام توسعه یک برنامه کاربردی Microservice-oriented در نظر داشته باشیم.مستقل - هر میکروسرویس باید به طور مستقل قابل استقرار باشد.کوپلینگ - همه ریزسرویس ها باید به طور آزاد با یکدیگر جفت شوند به طوری که تغییرات در یکی روی دیگری تأثیر نگذارد.هدف تجاری - هر واحد خدماتی از کل برنامه باید کوچکترین واحد باشد و قادر به ارائه یک هدف تجاری خاص باشد.اجازه دهید نمونه ای از پورتال خرید آنلاین را برای درک عمیق میکروسرویس در نظر بگیریم. اکنون، اجازه دهید کل این پورتال تجارت الکترونیک را به واحدهای تجاری کوچک مانند مدیریت کاربر، مدیریت سفارش، ورود، مدیریت پرداخت، مدیریت تحویل و غیره تقسیم کنیم. یک سفارش موفق باید از طریق همه این ماژول ها در یک زمان خاص انجام شود. قاب در زیر تصویر تلفیقی از واحدهای تجاری مختلف مرتبط با یک سیستم تجارت الکترونیکی ارائه شده است.هر یک از این ماژول های کسب و کار باید منطق تجاری و ذینفعان خاص خود را داشته باشند. آنها با سایر نرم افزارهای فروشنده شخص ثالث برای برخی نیازهای خاص و همچنین با یکدیگر ارتباط برقرار می کنند. به عنوان مثال، مدیریت سفارش ممکن است با مدیریت کاربر برای دریافت اطلاعات کاربر ارتباط برقرار کند.اکنون، با توجه به اینکه شما در حال اجرای یک پورتال خرید آنلاین با تمام این واحدهای تجاری هستید که قبلاً ذکر شد، به برنامه‌ای در سطح سازمانی متشکل از لایه‌های مختلف مانند front-end، back-end، پایگاه داده و غیره نیاز دارید. اگر برنامه شما مقیاس‌پذیر نیست. و به طور کامل در یک فایل جنگی توسعه یافته است، سپس به عنوان یک برنامه یکپارچه معمولی نامیده می شود. طبق گفته IBM، یک برنامه یکپارچه معمولی باید ساختار ماژول زیر را در داخل داشته باشد که در آن تنها یک نقطه پایانی یا برنامه مسئول رسیدگی به تمام درخواست‌های کاربر باشد.در تصویر بالا ماژول های مختلفی مانند Database برای ذخیره سازی کاربران مختلف و داده های تجاری را مشاهده می کنید. در بخش جلویی، دستگاه‌های مختلفی داریم که معمولاً داده‌های کاربر یا کسب‌وکار را برای استفاده ارائه می‌کنیم. در وسط، ما یک بسته داریم که می تواند یک فایل EAR یا WAR قابل استقرار باشد که درخواست را از پایان کاربران می پذیرد، آن را با کمک منابع پردازش می کند و آن را به کاربران باز می گرداند. همه چیز خوب خواهد بود تا زمانی که کسب و کار خواهان هرگونه تغییر در مثال بالا باشد.سناریوهای زیر را در نظر بگیرید که در آن باید برنامه خود را با توجه به نیازهای تجاری تغییر دهید.واحد تجاری به تغییراتی در ماژول "جستجو" نیاز دارد. سپس، باید کل فرآیند جستجو را تغییر دهید و برنامه خود را مجدداً مستقر کنید. در این صورت، شما واحدهای دیگر خود را بدون هیچ تغییری مجدداً مستقر می کنید.اکنون مجدداً واحد تجاری شما نیاز به تغییراتی در ماژول "Check out" دارد تا گزینه "کیف پول" را نیز در بر گیرد. اکنون باید ماژول "Check out" خود را تغییر دهید و همان را دوباره در سرور قرار دهید. توجه داشته باشید، شما ماژول‌های مختلف بسته‌های نرم‌افزاری خود را مجدداً مستقر می‌کنید، در حالی که ما هیچ تغییری در آن ایجاد نکرده‌ایم. در اینجا مفهوم معماری سرویس گرا به معماری Microservice اختصاص دارد. ما می‌توانیم برنامه یکپارچه خود را به گونه‌ای توسعه دهیم که هر یک از ماژول‌های نرم‌افزار به عنوان یک واحد مستقل رفتار کنند که قادر به انجام یک کار تجاری به طور مستقل باشد.مثال زیر را در نظر بگیرید.در معماری فوق، ما هیچ فایل گوش با سرویس پایان به پایان فشرده ایجاد نمی کنیم. در عوض، ما بخش‌های مختلف نرم‌افزار را با نمایش آنها به عنوان یک سرویس تقسیم می‌کنیم. هر بخشی از نرم افزار به راحتی می تواند با مصرف سرویس های مربوطه با یکدیگر ارتباط برقرار کند. به این ترتیب است که میکروسرویس نقش بزرگی در برنامه های وب مدرن ایفا می کند.اجازه دهید نمونه سبد خرید خود را در خط میکروسرویس مقایسه کنیم. ما می‌توانیم سبد خرید خود را در ماژول‌های مختلف مانند «جستجو»، «فیلتر»، «تسویه‌حساب»، «سبد خرید»، «توصیه» و غیره تجزیه کنیم. اگر می‌خواهیم یک پورتال سبد خرید بسازیم، باید آن را بسازیم. ماژول های فوق به گونه ای که می توانند به یکدیگر متصل شوند تا تجربه خرید خوبی را در 24x7 به شما ارائه دهند.مزایا و معایبدر زیر نکاتی در مورد مزایای استفاده از میکروسرویس به جای استفاده از یک برنامه یکپارچه آورده شده است.مزایایاندازه کوچک - Microservices پیاده سازی الگوی طراحی SOA است. توصیه می شود تا جایی که می توانید خدمات خود را حفظ کنید. اساساً، یک سرویس نباید بیش از یک کار تجاری را انجام دهد، از این رو به وضوح از نظر اندازه کوچک و نگهداری آن نسبت به هر برنامه یکپارچه دیگری آسان است.متمرکز - همانطور که قبلا ذکر شد، هر میکروسرویس برای ارائه تنها یک وظیفه تجاری طراحی شده است. در هنگام طراحی یک میکروسرویس، معمار باید به نقطه کانونی سرویس، که قابل ارائه آن است، توجه داشته باشد. طبق تعریف، یک میکروسرویس باید ماهیت کامل داشته باشد و باید متعهد به ارائه تنها یک ملک تجاری باشد.مستقل - هر میکروسرویس باید یک واحد تجاری مستقل از کل برنامه باشد. از این رو، برنامه به صورت سست تر متصل می شود که به کاهش هزینه تعمیر و نگهداری کمک می کند.ناهمگونی فناوری - Microservice از فناوری‌های مختلف برای برقراری ارتباط با یکدیگر در یک واحد تجاری پشتیبانی می‌کند، که به توسعه‌دهندگان کمک می‌کند تا از فناوری صحیح در مکان صحیح استفاده کنند. با پیاده سازی یک سیستم ناهمگن، می توان به حداکثر امنیت، سرعت و یک سیستم مقیاس پذیر دست یافت.انعطاف پذیری - انعطاف پذیری ویژگی ایزوله کردن یک واحد نرم افزار است. میکروسرویس در روش‌شناسی ساختمان از انعطاف‌پذیری بالایی پیروی می‌کند، از این رو هرگاه یک واحد با شکست مواجه شود، کل کسب‌وکار را تحت تأثیر قرار نمی‌دهد. انعطاف پذیری یکی دیگر از ویژگی هایی است که سیستم بسیار مقیاس پذیر و کم کوپل شده را پیاده سازی می کند.سهولت استقرار - از آنجایی که کل برنامه به قطعات کوچکی از واحدها تقسیم می شود، هر جزء باید ماهیت کامل پشته داشته باشد. همه آنها را می توان در هر محیطی بسیار آسان با پیچیدگی زمانی کمتر بر خلاف سایر برنامه های کاربردی یکپارچه از همان نوع مستقر کرد.در ادامه نکاتی در مورد معایب معماری میکروسرویس آورده شده است.معایبسیستم توزیع شده - به دلیل ناهمگونی فنی، فناوری های مختلفی برای توسعه بخش های مختلف یک میکروسرویس استفاده خواهد شد. مجموعه عظیمی از متخصصان ماهر برای پشتیبانی از این نرم افزار توزیع ناهمگن بزرگ مورد نیاز است. از این رو، توزیع شده و ناهمگونی به عنوان نقطه ضعف شماره یک استفاده از میکروسرویس است.هزینه – Microservice پرهزینه است، زیرا شما باید فضای سرور متفاوتی را برای کارهای مختلف تجاری حفظ کنید.آمادگی سازمانی - معماری میکروسرویس را می توان به عنوان مجموعه ای از فناوری های مختلف در نظر گرفت، زیرا فناوری روز به روز در حال پیشرفت است. از این رو، ایجاد یک شرکت برنامه کاربردی میکروسرویس برای مقایسه با مدل توسعه نرم افزار معمولی بسیار دشوار است.Microservice Architecture - Scaliمقیاس بندی فرآیندی برای تجزیه یک نرم افزار در واحدهای مختلف است. مقیاس بندی نیز از نظر مقیاس پذیری تعریف می کند. مقیاس پذیری پتانسیل اجرای ویژگی های پیشرفته تر برنامه است. این به بهبود امنیت، دوام و قابلیت نگهداری برنامه کمک می کند. ما سه نوع روش جرم گیری داریم که در صنایع دنبال می شود. در زیر روش‌های مختلف مقیاس‌بندی به همراه نمونه‌های واقعی مربوطه آمده است.