در مطلب قبلی به این سوال پاسخ دادیم که «چگونه معماری نرمافزار را بهبود دهیم؟». در این مطلب روی یکی از جنبههای معماری تمرکز کردهایم: کارایی (Performance). میخواهیم ببینیم با رویکردی که توضیح دادیم چطور میتوان این نیازمندی کیفی مهم را بهبود داد.
چطور میتوان کارایی را اندازه گرفت؟ یک سناریوی کارایی چه شکلی است؟ در ادامه باز سراغ کتاب معماری نرمافزار در عمل (Software Architecture in Practice) میرویم و ترجمهی قسمتی از آن را میخوانیم.
کارایی حکایت از زمان دارد و همچنین توانایی سیستم برای ارضا نیازمندیهای زمانبندی.
در بیشتر تاریخ مهندسی نرمافزار، کارایی عامل پیشران معماری سیستم بوده است. چنان که، بارها شده است که عدم کارایی یک سامانه، سایر توانمندیهای کیفی آن را به محاق برده است. هر قدر که نسبت «قیمت به کارایی» در سختافزارها نزول کرده و هزینهی توسعهی یک نرمافزار افزایش یافته؛ شاخصههای کیفی دیگر در برابر شاخصهی کارایی، به رقابت برخاستهاند. کارایی گاهی با مقیاسپذیری (Scalability) گره میخورد که بیانگر افزایش ظرفیت کاری سیستم به گونهای که همچنان به خوبی عمل کند، است.
باری، همهی سیستمها نیازمندیهای کارایی دارند، هرچند آشکار نباشد. مانند یک ویرایشگر متنی که باید در کسر مشخصی از ثانیه تغییر را نمایش دهد وگرنه باعث آزار کاربر خواهد شد. کارایی همچنان یک شاخصهی کیفیت اساسی است برای همهی نرمافزارها.
یک سناریوی کارایی با ورود یک رویداد به سیستم آغاز میشود. پاسخدهی صحیح به این رویداد نیازمند مصرف منابعی، شامل زمان، خواهد بود. همزمان با این روند، سیستم ممکن است در حال سرویس دادن به رویدادهای دیگری نیز باشد.
رویدادها میتوانند با الگویی قابل پیشبینی یا یک توضیع ریاضی و یا با به شکلی غیرقابل پیشبینی وارد آیند. الگوی رویدادها میتواند به سه دستهی متناوب، آماری و کاتورهای تقسیم شود؛
توضیح مترجم: این تقسیمبندی امروز شاید کمی کلی باشد. ابزارهای جدید آزمون کارایی مثل k6 این قابلیت را دارند که با تعریف سطوح (stages) مختلف، الگوهای متنوعی (مثلا به شکل پلهکانی) از بار کاری تولید کنند که با نگاه این کتاب همه زیرمجموعهی الگوی آماری خواهد بود. ارزش این نوشته، بیشتر نگاه آن به مساله است نه لزوما راهکارهای آن.
پاسخی که سیستم به یک محرک در همبافت کارایی میدهد با سنجههای زیر قابل بیان است:
در ادامهی این بحث، کتاب سناریو کلی کارایی را به این نحو صورتبندی میکند:
در جدول زیر یک سناریوی عمومی کارایی تلخیص شده است:
امیدوارم در مطالب بعدی یک مثال عملی از این رویکرد پیادهسازی کرده و با جزئیات بیشتر آن را توضیح دهم.