آشنایی با معماری Microservice
در دنیای تکنولوژی امروز, واژه Microservice بسیار مورد استفاده قرار میگیرد. اما ممکن است این مفهوم برای برنامه نویسان و کسانی که تازه به دنیای برنامه نویسی وارد میشوند, کمی گنگ باشد. در این مقاله قصد داریم تا با این معماری بیشتر آشنا شویم.
Microservice چیست ؟
Microservice یک unit پردازشی است که به صورت مستقل اجرا میشود و پردازش میکند. یک سیستم بزرگ میتواند به چندین Microservice تقسیم شود. برای مثال یک سایت فروشگاهی را در نظر بگیرید. پردازش های گوناگون این سایت میتواند توسط Microservice ها انجام شود. یک Service برای دریافت سفارشات, یک Service برای مدیریت لیست علاقه مندی ها, یک Service برای احراز هویت و بررسی کارت های اعتباری و دیگر Service هایی که برای مدیریت فروشگاه در نظر گرفته میشود. هر یک از این Service ها, برنامه های کوچکی هستند که مستقل از یکدیگر کار میکنند. این Service ها میتوانند توسط یک رابط مناسب با یکدیگر ارتباط برقرار کنند. برای مثال یکی از سرویس های بسیار پرکاربرد REST است که با استفاده از آن میتوانیم ارتباط میان Service ها را ایجاد کنیم. هر Microservice با مدل داده ای و اطلاعات مربوط به خود پردازش میکند.
مزایای استفاده از Microservice
اکنون که با مفهوم این معماری آشنا شدیم, باید بررسی کنیم که این معماری چه ویژگی هایی را در اختیار ما قرار میدهد. اولین ویژگی استفاده از این معماری, تسهیل در بروزرسانی و عیب یابی سیستم است. برای مثال اگر بخواهیم Service احراز هویت را تقویت کنیم, نیازی نیست تمام سیستم با تغییر اساسی مواجه شود و تنها Microservice مربوط به احراز هویت را بروزرسانی میکنیم.
ویژگی دوم استفاده از این معماری در مستقل بودن پردازش و اجرا اجزا آن است. این ویژگی به مدیران پروژه کمک میکند تا قسمت های گوناگون برنامه را در اختیار تیم های مجزایی قرار دهد. بنابراین با تقسیم کار ها, تمرکز بر روی هر اجزا بالاتر میرود و کارایی سیستم بهبود پیدا میکند. همچنین هر تیم میتواند از ابزار, زبان و امکانات خود برای توسعه بخش مربوط به خود استفاده کند. این عمل باعث میشود سیستم بسیار منعطف تر باشد. به این ترتیب مدیران دغدغه کمتری برای تکمیل تیم برنامه نویسی پروژه دارند و گزینه های بیشتری برای انتخاب برنامه نویس پیش روی خود خواهند دید. همین ویژگی باعث میشود که اگر بخواهیم بخشی را با استفاده از ابزار دیگری بروزرسانی کنیم, با مشکل کمتری مواجه شویم.
ویژگی سوم استفاده از این معماری این است که اگر یک Service غیر فعال شود, دیگر Service ها میتوانند به کار خود ادامه دهند.
مشکل معماری ها گذشته
برنامه نویسان بیش از یک دهه است که از معماری Service Oriented Architecture و یا به اختصار SOA استفاده میکنند. ممکن است این معماری را با واژه سرویس گرا بشناسید. بسیاری از برنامه ها به این روش نوشته شده اند و به خوبی هم کار میکنند. اما با کمی بررسی به مشکل این معماری پی میبریم. فرض کنید که یک Web Application با زبان جاوا میخواهیم بنویسیم. در ابتدا باید Presentation Layer که همان بخش ظاهری برنامه است را طراحی کنیم. سپس Application Layer که پردازش منطقی برنامه را بر عهده دارد را مینویسیم و در Integration layer ارتباط میان Component ها را مشخص میکنیم. در نهایت در Data Layer, پایگاه داده و مباحث مربوط به آن را تعیین میکنیم. خروجی تمام این بخش ها بیک WAR file و یا EAR file است و آن را باید در یک Server که بر روی آن Tomcat نصب شده است اجرا کنیم. درست است که در اینجا ما هر قسمت را به صورت مجزا ایجاد کردهایم اما خروجی به صورت یک فایل است. بنابراین برای بروزرسانی و یا رفع عیب یک بخش از برنامه, باید برنامه را مجددا بر روی Server اجرا کنیم. اما وقتی هریک از قسمت های برنامه به صورت یک Microservice مستقل از هم اجرا شود, تنها بخش مورد نظر در Server مجددا اجرا میشود و باقی Service ها بدون تغییر باقی میمانند.
معایب استفاده از Microservice
همانطور که هر معماری مزایای مختص به خود را دارد, واضح است که معایبی نیز به همراه دارد. یکی از اصلی ترین دلایلی که این معماری را از معماری های دیگر مجزا کرده است, مستقل بودن اجزا آن است. اما این ویژگی میتواند یک عیب هم باشد. زیرا در اینجا این Service ها با استفاده از یک API به یکدیگر متصل میشوند. بنابراین پیاده سازی آن در بحث ارتباط میان اجزا ممکن است کمی پیچیده باشد. همانطور که اشاره شد هر Microservice باید پایگاه داده مختص به خود را داشته باشد. بنابراین پیاده سازی پایگاه های داده مجزا ممکن است کمی سخت باشد و کار برنامه نویس را افزایش دهد. همچنین جدا بودن Service ها از یکدیگر, Unit Testing را کمی پیچیده تر میکند.
در این مقاله سعی بر این شد تا با مفهوم Microservice آشنا شویم و مزایا و معایب استفاده از آن را بررسی کنیم. همچنین تفاوت این معماری با معماری رایج SOA را نیز بررسی کردیم. به این ترتیب مدیران پروژه ها میتوانند بر اساس نیاز و ابعاد پروژه, معماری متناسب با پروژه خود را برگزینند.
با ما همراه باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.