میکروسرویسها در مقابل یکپارچهها و سرویسگراها امروزه، پارادایمهای برنامهنویسی مختلفی بر دنیای نرمافزار حاکم هستند که از مهمترین آنها باید به معماری یکپارچه، سرویسگرا، میکروسرویس و غیره اشاره کرد. در معماری یکپارچه، اگر یک مولفه برنامه نیازمند بهروزرسانی باشد، توسعهدهندگان مجبور به بازنویسی کامل برنامه، کامپایل و آزمایش آن هستند. همانگونه که ممکن است حدس زده باشید، فرآیند فوق زمانبر است و سرعت تیمهای توسعه نرمافزار را کاهش میدهد. با وجود این مشکل، معماری فوق هنوز هم توسط برخی از تیمهای توسعه برای برنامههای کاربردی مورد استفاده قرار میگیرد، زیرا مزایای خاص خود را ارائه میدهد. همچنین، برخی از برنامههای کاربردی که امروزه کاربران از آنها استفاده میکنند، بهشکل نرمافزار یکپارچه توسعه داده شدهاند، بنابراین مادامی که این برنامهها هنوز در حال استفاده هستند و نیاز به بهروزرسانی دارند، نمیتوان معماری یکپارچه را بهطور کامل نادیده گرفت. ریزسرویس (Microservices) که برخی منابع از اصطلاح «معماری ریزسرویس» (Microservices Architecture) برای توصیف آن استفاده میکنند، رویکردی در چرخه عمر توسعه سیستمها SDLC سرنام Systems Development Life Cycle است که در آن برنامههای کاربردی بزرگ بر مبنای مجموعهای از ماژولهای اجرایی کوچک ساخته میشوند. میکروسرویس یکی از مفاهیم مهم دنیای توسعه نرمافزارهای کاربردی است که بهدلیل سهولت در نگهداری و توسعه سریع نرمافزارها مورد توجه قرار دارد. علاوه بر این، میکروسرویس به سازمانهایی که فرهنگ توسعه نرمافزارهای آنها مبتنی بر دوآپس و چابک است، اجازه میدهد به بهترین شکل از مزایای معماری فوق استفاده کنند. علاوه بر این، میکروسرویسها با شکستن یک برنامه بزرگ و پیچیده به ماژولهای کوچکتر، روند توسعه را شتاب بخشیده، مقیاسپذیری را بهتر کرده و قابلیت اعتماد را بهبود بخشیدهاند. در معماری فوق، برنامهها به مجموعهای از سرویسها شکسته میشوند تا مزایای زیر را ارائه دهند: بهبود قابلیت نگهداری و آزمایش. متصل شدن سرویسها به یکدیگر به بهترین شکل. سهولت در روند استقرار نرمافزارها. توانایی گسترش قابلیتهای برنامههای کاربردی همسو با اهداف تجاری. توانایی مدیریت پروژه توسط یک تیم کوچک. معماری میکروسرویسها در مقایسه با پارادایمهای دیگری همچون معماری یکپارچه و سرویسگرا، فرآیند توسعه محصول و عرضه آن به بازار را کوتاهتر و مقیاسپذیری را بهتر کرده است. با این حال، هنگامی که صحبت از اتصال چند سرویس مستقل کوچک به یکدیگر به میان میآید، با مسائل خاصی روبهرو میشویم. بهطور مثال، پیچیدگی مکانیزم برقراری ارتباط سرویسها با یکدیگر و احتمال ازدسترفتن یکپارچگی دادهها، احتمال بروز حملههای سایبری را افزایش میدهد. هنگامی که روی توسعه یک برنامه کاربردی مبتنی بر میکروسرویس کار میکنید، به چیزی بیش از یک دیوارآتش ساده نیاز دارید. طراحی میکروسرویسها برای مقابله با تهدیدات به دفاع چند لایه نیاز دارد. به همین دلیل، امنیت برنامه باید بهعنوان یکی از ارکان اساسی معماری فوق مورد توجه قرار گیرد و باید از همان ابتدا، روی ساخت یک چارچوب امنیتی مستحکم برای برنامه متمرکز شوید. توسعهدهندگانی که قصد استفاده از معماری میکروسرویس را دارند، اگر به توصیههای امنیتی دقت کنند، در هنگام ساخت برنامهها و استقرار نهایی آنها در محیطهای تولیدی با مشکلات امنیتی کمتری روبهرو میشوند. میکروسرویسها اجازه میدهند تا سرویسها را با استفاده از فناوریهای ناهمگن بسازید و به یکدیگر متصل کنید. در شرایطی که بخش عمدهای از برنامهها و ابزارها بهسمت معماری میکروسرویسها متمایل شدهاند، اما یافتن یک راه ساده برای نظارت بر این سرویسها و اطمینان از اینکه همیشه در حال اجرا هستند، ساده نیست. بهطور معمول، هزینه پیادهسازی ابزارها بهتنهایی برای سازمانها پرهزینه است و هنگامی که صحبت از نگهداری و ادغام ابزارها با یکدیگر به میان میآید، بهطوری که همهچیز در شرایط پایدار و متعادل قرار بگیرند، هزینهها بیشتر میشود. معماری فوق، بهترین سطح مقابله با خطاها را ارائه میدهد، اما شناسایی خرابیها در برنامههای مبتنی بر میکروسرویس از طریق روشهای نظارت و آزمایش دستی سخت است. برای حل این مشکل، تیمهای نرمافزاری از سیستمهای نظارت خودکار استفاده میکنند تا فرآیند ارزیابی در مدت زمان کوتاهی انجام شود. یکی از مزایای شاخص معماری میکروسرویس امکان ساخت مولفههای مستقل است. بهطوری که تمام سرویسها میتوانند بهشکل جداگانه ارتقاء پیدا کرده و مستقر شوند. استقلال به این معنا است که اگر سرویسی خطایی داشته باشد، برنامه بازهم به کار خود ادامه میدهد و فقط آن سرویس در دسترس نخواهد بود. علاوه بر این، افزودن قابلیتهای جدید به این مدل برنامهها سادهتر از برنامههای یکپارچه است. نکته مهمی که باید به آن دقت کنید این است که قبل از تصمیمگیری در مورد استفاده از معماری میکروسرویس، باید مطمئن شوید که اعضا تیم به درستی آموزش دیده و برای مقابله با چالشهایی که معماری میکروسرویسها دارند، دانش کافی دارند. به بیان دیگر، تیمها به اعضایی نیاز دارند که تخصص مناسب برای ساخت، استقرار و مدیریت برنامههای کاربردی مبتنی بر میکروسرویسها را داشته باشند. همانگونه که ممکن است حدس زده باشید، برای اولین بار در مجله شبکه، تصمیم گرفتیم معماری میکروسرویس را بهشکل جدی مورد بررسی قرار دهیم تا دانشجویان رشته کامپیوتر و بهویژه برنامهنویسان تازهکار شناخت خوبی از این مفهوم دنیای برنامهنویسی پیدا کنند. در پرونده ویژه این شماره، یاد خواهیم گرفت که چگونه با کوبرنتیس یک میکروسرویس ایجاد و راهاندازی کنیم؛ معماری یکپارچه و میکروسرویس چه تفاوتهایی دارند؛ نحوه برنامهریزی و مهاجرت به میکروسرویسها را بررسی خواهیم کرد؛ با پرسشها و پاسخهای برتر مصاحبههای میکروسرویسها آشنا خواهیم شد و راهکارهای موثر برای تامین امنیت میکروسرویسها را خواهیم آموخت.
توصیف (خلاصه کتاب)
در ماهنامه شبکه شماره ۲۵۸ یاد خواهیم گرفت که چگونه با کوبرنتیس یک میکروسرویس ایجاد و راهاندازی کنیم؛ معماری یکپارچه و میکروسرویس چه تفاوتهایی دارند؛ نحوه برنامهریزی و مهاجرت به میکروسرویسها را بررسی خواهیم کرد؛ با پرسشها و پاسخهای برتر مصاحبههای میکروسرویسها آشنا خواهیم شد و راهکارهای موثر برای تامین امنیت میکروسرویسها را خواهیم آموخت.