مدل بلوغ ریچاردسون (RMM) چیست؟

5 دقیقه زمان مطالعه
1400/09/02
0 نظر

معرفی معماری Rest

Rest نوعی معماری است که در سال ۲۰۰۰ توسط فیلدینگ، جهت طراحی سیستم­‌هایی با رویکرد کمینه کردن وابستگی ماژول‌­ها معرفی شد. به بیان دیگر، Rest مجموعه‌ای از محدودیت­‌های معماری است. این معماری قوانین سطح پایین عملیاتی را بر سیستم تحمیل نمی‌کند و توسعه‌دهنده می‌­تواند پیاده­‌سازی اختصاصی خود را داشته باشد.

Rest دارای شش محدودیت زیر است:

  • کلاینت-سرور
  • سیستم لایه لایه
  • استقلال از وضعیت
  • واسط یکپارچه
  • قابلیت cache شدن
  • ارسال کد در صورت تقاضا

مزایای استفاده از معماری Rest

  • درک و پیاده‌سازی معماری Rest ساده است و در نتیجه بهره­­‌وری تیم توسعه بیشتر می‌شود. بسیاری از افراد با این معماری نرم افزار و http آشنا هستند و استفاده از آن برایشان راحت است.
  • به دلیل تاکید بر استقلال وضعیت، سیستم را مقیاس‌پذیرتر می‌کند؛ به این معنا که هر درخواست، مستقل از دیگری پردازش می‌شود. اگر چنین محدودیتی را در نظر نگیریم، session یا state می‌­تواند سمت سرور ذخیره شود که این موضوع توسعه افقی را سخت و مقیاس‌­پذیری را سخت‌تر می‌کند.
  • سیستم cache ساده‌تر است. cache در مقیاس پذیری و افزایش عملکرد سیستم‌­ها تاثیر چشم‌گیری دارد. یک مکانیزم cache مناسب، متوسط زمان پاسخ سرور را کاهش می­‌دهد. چون در این معماری، سرور وضعیت ندارد و هر درخواست مستقل پردازش شده و باعث می‌­شود تا پیاده­‌سازی سیستم cache راحت‌­تر باشد.
  • انعطاف­‌پذیری را در بخش‌های مختلف افزایش می‌دهد. برای مثال HATEOAS تاثیر زیادی در این فرایند دارد. چرا که لینک‌­های مرتبط را در پاسخ باز می‌­گرداند که از hard code کردن APIها جلوگیری می‌­کند. بنابراین تغییر در سرویس­‌ها با حداقل تغییر در سمت کلاینت ممکن می‌شود.

معرفی مدل بلوغ ریچادسون

ریچاردسون در سال ۲۰۰۸ مدلی ارائه کرد که در آن وب‌سرویس‌ها را براساس تطابق آن­‌ها با REST به چهار دسته تقسیم کرده است. به این مدل که میزان تطابق را اندازه‌­گیری می‌­کند، مدل بلوغ ریچاردسون گفته می­‌شود. ریچاردسون سه فاکتور را برای سنجش تطابق در نظر می‌­گیرد: URI ،HTTP Methods و HATEOAS

این مدل تنها معماری Api را پوشش می‌دهد و مدل داده و دیگر فاکتور­ها را درنظر نمی‌­گیرد. مدل­‌های دیگری برای بررسی سایر فاکتور­ها ارائه شده است. برای مثال Amundsen Maturity Model برای بررسی مدل داده‌ها استفاده می‌شود.

در این مدل سطوحی تعریف شده است که در هر سطح با توجه به فرضیات جدیدی که اضافه می­‌شود، به بلوغ بیش‌تری دست پیدا می‌­کند.

سطوح مدل ریچاردسون

در ادامه برای توضیح سطوح مدل بلوغ ریچادسون از مثال رستوران استفاده می­‌کنیم. در این مثال، سیستم ساده گرفتن لیستی از منو و در نهایت ثبت سفارش غذا را در نظر می­‌گیریم. این دو هدف، با­توجه به پیاده‌سازی فرضیات سطوح، به صورت‌های مختلفی طراحی شده است. 

سطح صفر (The Swamp of POX) مدل بلوغ ریچادسون

در این سطح، سرویس Restful نیست. سرویس‌های SOAP و XML-RPC-based در این قسمت قرار دارند.

فرضیات:

  • استفاده از فقط یک (URI (Universal Resource Identifier برای تمام سیستم 
  • استفاده از یک نوع متد (معمولا post) برای تمامی عملیات‌ها

در این سیستم رستوران، هر نوع درخواستی تنها با یک URI فرستاده می‌­شود که آن FoodService است و بسته به نوع سرویس درخواستی، actionهای داخل بدنه درخواست، متفاوت است.

سطح صفر (The Swamp of POX) در مدل بلوغ ریچادسون

سطح اول (URI) مدل بلوغ ریچادسون

فرضیات:

  • تمایز بین منابع در سطح URI
  • استفاده از یک نوع متد (معمولا post) برای تمامی عملیات­‌ها

در مثال فوق، منابع در سرویس­‌ها نمود پیدا می­‌کنند. بنابراین غذاهای ایتالیایی، چینی و هندی، به صورت جداگانه در نظر گرفته می‌­شوند.

سطح اول (URI)  مدل بلوغ ریچادسون

سطح دوم (HTTP) مدل بلوغ ریچادسون

فرضیات:

  • تمایز بین منابع در سطح URI
  • تمایز متد HTTP بسته به سناریو درخواست
  • بازگرداندن خطا در بدنه­ پاسخ

در این قسمت، با توجه به ذات درخواست، از متد­های مناسب آن استفاده می‌­شود. برای مثال برای تغییر سفارش، از متد PUT استفاده می­‌کنیم.

سطح دوم (HTTP) در  مدل بلوغ ریچادسون

سطح سوم (Hypermedia) مدل بلوغ ریچادسون

فرضیات:

  • تمایز بین منابع در سطح URI
  • تمایز متد HTTP بسته به سناریو درخواست
  • بازگرداندن خطا در بدنه­ پاسخ
  • استفاده از لینک­‌ها برای نشان دادن ارتباط بین منابع

در این سطح، رستوران با توجه به دانشی که در­مورد منبع دارد، سرویس­‌های مرتبط را به صورت لینک برمی‌­گرداند. برای مثال لینک مربوط به مخلفات اضافه­ پیتزا یا لینک مربوط به جزئیات سفارش را برمی­‌گرداند.

سطح سوم (Hypermedia) در مدل بلوغ ریچادسون

جمع‌بندی

در این مقاله ابتدا خیلی خلاصه با معماری Rest آشنا شدیم و اهمیت پیاده‌سازی آن را عنوان کردیم. سپس به بررسی سطوح مدل ریچاردسون که برای سنجش میزان انطباق به Rest ارائه شده است، پرداختیم. نکته‌­ای که باید همواره در ­نظر بگیریم این است که با توجه به سیستم خود بهترین تصمیم را برای آن گرفته و سعی در تطبیق سیستم با معماری نداشته باشیم، بلکه معماری مناسب با سیستم خود را انتخاب کنیم.

منابع:

  1. www.freecodecamp.org
  2. www.martinfowler.com
امتیاز شما به این مقاله:
نویسنده: مهندس نرم‌افزاری که در زمینه توسعه نرم‌افزار و کنترل پروژه علاقه دارد و سال‌هاست در این زمینه‌ها فعالیت می‌کند.

مطالب مرتبط