توزیعپذیری

توزیعپذیری یکی از مباحث مهندسی نرمافزار است که مبتنی بر توزیع بار کاری در اعضای یک سیستم به منظور دستیابی به کارایی بالاتر و بهرهوری بالاتر است.
سیستمهایی با فشار زمانی بالا و حجم محاسبات قابل ملاحظه همواره با مشکل ساماندهی ارتباط دادههای، امنیت داده و تحمل تنش و خرابی روبهرو هستند. یکی از بهترین راهحلها برای رویارویی با مشکلاتی از این قبیل استفاده از اصل توزیع منطقی و فیزیکی یک سیستم نرمافزاریست که در ادامه با آن آشنا خواهید شد.
توزیعپذیری در واقع راهحلی مناسب برای طراحی ساخت سیستمهایی است که خصوصیات زیر را نیاز داشته و یا در این باب با ریسک روبهرو هستند:
قدرت پردازش در حجم بالا

راهکار توزیعپذیری با شناخت کافی از اجزای یک سیستم، پردازش را در اجزای مختلف تقسیم کرده و به این ترتیب به دو نیاز پاسخ میدهد:
1- اعضای پردازشگر یک سیستم عملیات پردازش را به عهده خواهند گرفت.
2- برای انجام پردازش در حجم بالا نیازی به فراهم آوردن سختافزار با خصوصیات فنی بالا نیست و با تقسیم کار، PCهای معمولی هم از پس حجم کاری محوله برخواهند آمد. به این ترتیب هزینههای فراهم آوردن سختافزار به شدت کاهش پیدا خواهد کرد.
پهنای باند ارتباطی

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

با استفاده از راهکار توزیعپذیری در واقع با سیستمی کاملا مؤلفهای روبهروییم که خرابی یک جزء از سایر اجزا کاملا مستقل بوده و در صورت مواجه شدن با مشکل در یکی از اجزا سایر اجزا همچنان در حال ادامه کار هستند.در این موارد قسمت اعظم کاربران سیستم حتی ممکن است متوجه وجود خرابی در سیستم نشوند و از طرفی خرابی در قسمت محدودی از سیستم حجم بسیار کمتری از اطلاعات را با خطر روبرو خواهد کرد.
- توان عملیاتی
توان عملیاتی در واقع پاسخ دادن یک سیستم به یک درخواست در کوتاهترین زمان و به شکلی صحیح و در شرایطی به دور از خرابی است که البته سیستمهای مبتنی بر توزیع همگی این خصوصیات را در بر دارند.بنابراین قابل استنباط است که چنین سیستمهایی از قابلیت عملکردی بالایی برخوردارند.
زمان پاسخ

با توجه به توزیع پردازش و عدم تاثیر خرابی جزئی از سیستم بر روی سایر اجزا، حتی در مواردی که از تجهیزات سختافزاری معمولی استفاده میشود، زمان پاسخ در حد قابل قبولی کوتاه خواهد بود. مشاهده میکنید که خصوصیات تحمل خرابی، زمان پاسخ و توان عملیاتی در رابطههای تنگاتنگ با هم قرار دارند.
پشتیبانی ساده
توزیعشدگی حجم کاری سیستم در اجزای متعدد آن و همچنین حجم قابل قبول ترافیک داده در زیرساخت ارتباطی چنین سیستمهایی باعث شده تا امکان ارائهی بهتر خدمات پشتیبانی به اینگونه سیستمها فراهم باشد. در این رابطه نکات زیر از اهمیت بالایی برخوردارند:
1- برای ارائهی خدمات پشتیبانی در مواجهه با هر کدام از اعضا، در مقایسه با کل سیستم، با حجم پایینی از مشکلات یا دادههای مخدوش روبهرو خواهیم بود.
2- امکان برقراری ارتباط از راه دور و دستیابی به عضو درخواست کننده و استفاده از بستر ارتباطی ارائهی خدمات سریعتر و آسانتر خواهد بود.
به این ترتیب استفاده از سیستمهای توزیع شده ، کاهش هزینه، مقیاسپذیری و برآورد معیارهای اقتصادی را به دنبال خواهد داشت.
استفاده از اصل توزیع تولیدکنندگان سیستمهای نرمافزاری را به سوی استفاده از الگوهای توزیع سوق داده و در این بین انتخاب الگوی مناسب برای سیستم مورد نظر خود از مهارتهای تولیدکنندگان نرمافزار به شمار میرود.
انواع توزیع

توزیع عملا با دو معیار منطقی و فیزیکی مورد پیادهسازی قرار میگیرد. در زیر با این دو مفهوم آشنا میشوید:
توزیع منطقی
توزیع منطقی در واقع دستهبندی اجزای منطقی یک سیستم از قبیل کلاس یا زیرسیستمهایی است که بر روی اجزای سختافزاری قرار گرفتهاند. این نوع تقسیمبندی ممکن است منجر به بهوجود آمدن یک سطح کنترلی روی جزء سختافزاری شود. به طور مثال استقرار زیرسیستمهای مدیریتی بر روی یکی از اجزای پیکرهی سیستم، تولید سرور عملیاتی (Application Server ) را به دنبال دارد. به این ترتیب با توزیع اجزای منطقی یک سیستم نرمافزاری، اعضای یک سیستم توزیع شده به دست خواهند آمد.
توزیع فیزیکی
توزیع فیزیکی در واقع به معنی استقرار فایلهای سیستم نرمافزاری بر روی اجزای سختافزاری آن است. نکته حائز اهمیت در اینجا حفظ استقلال و کارایی فایلها در قالب توزیع است به این معنی که فایلها باید ارتباط منطقی خود را در جهت هدفی خاص حفظ کنند. در واقع تنها با داشتن یک توزیع منطقی مناسب میتوان توزیع فیزیکی را انجام داد.
الگوهای توزیع
در مفهوم توزیعپذیری الگوهای بسیاری موجود است به شکلی که هر کدام از این الگوها نیازمندیهای خاصی را مرتفع کرده و برای حوزه و حالت خاصی از سیستمهای نرمافزاری مناسب است.نکته مشترک تمامی این الگوها توزیعشدگی حجم کار در کل سیستم و بالا بردن سهولت پشتیبانی و نگهداری این سیستمهاست که خود از مزایای توزیعشدگی محسوب میشوند. در واقع هر کدام از این الگوها سعی بر آن دارند تا به نحوی با راهکار توزیعشدگی به مشکلات موجود در سیستمهای نرمافزاری پاسخ دهند.
با مطالعه هر یک از این الگوها به خوبی با مشکلات مطرح و مزایای الگوی مورد نظر آشنا خواهید شد.
لازم به ذکر است که پیروی از الگوهای توزیع در قالب ارائه معماری مربوط به هر یک امکانپذیر است و به همین دلیل در ادامه ممکن است در پارهای موارد واژه معماری را به عنوان جایگزین برای واژه الگو مورد استفاده قرار دهیم.
معماری Client/Server

در معماری Client/Server، با دو عضو Client و Server روبهرو هستیم که Clientها در مقایسه با Serverها از تعدد برخوردار بوده و Server ها به طور دائم در حال ارائه سرویس به چندین Client در یک لحظه میباشند.
در این نوع توزیع عملکرد سیستم بین دو بخش Client و Server تقسیم شده است.
در سیستمهای Client/Server سنتی قسمتی از Business در Client مستقر بود و این امر باعث کاهش حجم ترافیک میشود ولی در عین حال هزینههای تهیه سیستم را بالا میبرد. به این ترتیب در سیستمی که هماکنون به عنوان Client/Server از آن یاد میشود، Clientها سهمی از اداره Business ندارند و تنها از Server سرویسهای لازم را دریافت میکنند.
در ادامه پارهای از خصوصیات این نوع معماری را ذکر میکنیم:
- در اینگونه معماری، Clientها میتوانند انواع مختلفی داشته باشند و با ماهیتهای مختلف در سیستم فعالیت کرده و دریافت خدمات داشته باشند.
- برای برقراری ارتباط بین اعضای این شکل معماری میتوان از انواع مختلف راهها و تکنولوژیهای ارتباطی استفاده کرد.
- Serverها نیز در این نوع معماری دارای تعدد هستند و برای مصارف مختلف میتوان از انواع Server استفاده کرد. در ادامه انواع قابل ذکر Server مورد استفاده در این نوع معماری را مشاهده میکنید:- معماری 3 Tier
o Database Server
o Print Server
o Communication Server
o Windows Manager server
o File Server

این شکل از معماری نیز یکی از اشکال معماری Client/Server به شمار میرود با این تفاوت که سیستم در 3 بخش Application Server، Business Server و Data Server تقسیم شده است. البته این اعضای منطقی از سیستم ممکن است بر روی تعداد بیشتری از Nodeهای سیستم توزیع شوند.
در اینگونه سیستمها، Application Serviceها بهوسیله User Interfaceهای مورد نظر در سیستم Client در اختیار وی قرار میگیرد. به این ترتیب Application Server میتواند در جزئی جدا و یا در همان سیستم Client مستقر باشد. این موضوع خود یکی از نقاط پارامتریک بودن اینگونه معماری است و با استفاده از قوت توزیع در این مدل میتوان تغییرات لازم در Application Server و یا حتی سایر اجزا را بدون تاثیر در سایر اعضا اعمال کرد.
Data Serviceها از جانب Data Serverها به Clientها اختصاص پیدا میکنند. Data Server یکی از اجزای سیستم است که از نظر قدرت سخت در سطح بالایی قرار داشته و همچنین باید از نظر زیر ساخت ارتباطی در نقطهای با پهنای باند بالا قرار داشته باشد. ممکن است صدها یا در مواردی هزاران کاربر در یک لحظه به چنین سروری رجوع داشته باشند و همچنین در اکثر مواقع استفاده از این سرور منتهی به اعمال تغییراتی بر روی دادههای موجود خواهد شد. به این ترتیب لازم است که این سرور با خصوصیات فنی بالا طراحی شده و امکانات ارتباطی مناسبی در اختیار داشته باشد.
Business Serviceها اطلاعات رمزنگاری شده مربوط به اعمال Business را در بر دارند. این سرویسها در واقع متولی اداره و ترکیب اطلاعات بهدستآمده از پایگاه داده هستند و در نهایت Application Serviceها را تولید میکنند. Business Serviceها عموما بهوسیلهی کاربران متعددی مورد استفاده قرار میگیرند و خود به عنوان یک عضو منطقی به خوبی کار میکنند. البته در بسیاری مواقع این سرویسها در کنار Data Serviceها قرار میگیرند.
توزیع اعضای منطقی به این شکل، قابلیت اطمینان و مقیاسپذیری سیستم را بالا میبرد. به این ترتیب به کار بردن مناسب Data Server و Business Server و همچنین برقراری ارتباط صحیح بین اعضا، درجهی بالایی از مقیاسپذیری را در اختیار قرار میدهد.
معماری Fat Client

این معماری شامل 2 سطح متشکل از Data Server و Client است. کلیه امور در Client انجام میپذیرد به این شکل که Application Serviceها، Data Serviceها و Business Serviceها همگی در سمت Client قرار دارند.
این شکل معماری در طراحی و ساخت نسبتا سادهتر به نظر میرسد اما تعبیه صفت توزیعشدگی در این نوع معماری به مراتب دشوارتر از مدل قبلی است. چالش معمول این نوع معماری بهروزرسانی دادههاست. به این شکل که در این روش Clientها دادههای مورد استفاده را در حافظه موقت خود بارگذاری کرده و مسلما پس از اعمال تغییرات این دادهها را در Data Server ذخیره میکنند. به این شکل هر گاه اطلاعات در Data Server مورد تغییر قرار میگیرد، لازم است که کلیه Clientها دادههای جدید را در حافظه موقت دوباره بارگذاری کنند.
معماری Fat Server

اینگونه سیستمها درست نقطهی مقابل مورد قبل یا همان Fat Client هستند. به چنین سیستمهایی در اصطلاح سیستمهای کلاینت بیاشتها نیز اطلاق میشود. روشنترین مثال در این مورد، We-Browserها هستند که در آنها Web Serverها اداره کلیه اطلاعات را بر عهده داشته و سرویسها در صفحات HTML در اختیار Clientها قرار میگیرند.
این سیستمها از هزینه کم، قابلیت تغییر و توزیعپذیری بالایی برخوردارند. این سیستمها به سادگی قابل پیادهسازی و پشتیبانی هستند. اما باید توجه کرد که صرفا برای مصارف وب مناسب بوده و در امر Business که پردازشها و تراکنشهای دادهای فراوانی را در بر میگیرد، مناسب نمیباشد. در عین حال در اینگونه سیستمها کنترل بالایی بر Applicationها وجود ندارد و این امر در اشکالی از این معماری که از طراحی ضعیفتری برخوردارند به شدت قوت میگیرد. هرچند این امر حتی در پایین آمدن سطح کیفی عملکرد سیستمهایی به این شکل که از طراحی مطلوبی برخوردارند نیز بیتاثیر نیست.
معماری توزیع شده Client/Server
در این شکل از معماری، Application، Business و Data Serviceها هر کدام در یک نقطه جدا از سیستم مستقر هستند و این نقاط مجزا کاملا قابلیت قبول ماهیت Business و Data Server را خواهند داشت.
کلیه خصوصیات این نوع از معماری شبیه معماری 3 Tier است و تنها از این لحاظ به صورت جدا مورد بررسی قرار گرفت که اولا وجود انواع سرور در این نوع معماری تصریح شود و ثانیا ذکر این نکته که در یک معماری توزیع شده نقاط منطقی ممکن است از تعدد بالایی برخوردار باشند، از قلم نیفتد.
معماری Peer-to-Peer

در این نوع از معماری هرکدام از نقاط سیستم یا به عبارتی هر کدام از اجزای پردازشی سیستم میتوانند خاصیت Client یا Server داشته باشند. در اینگونه سیستمها، عملکرد سیستم بین کلیه اعضای سیستم تقسیم شده و همگی این اعضا بر روی خطوط ارتباطی در حال مبادله اطلاعات هستند.
این سیستمها از پیچیدگی بالایی برخوردارند و آمار بروز خطا در آنها بالاست.اغلب پردازنده ها با وقفه روبرو هستند و یا درخواستها در خطر پدیده گرسنگی قرار دارند.در صورت بروز خطا ممکن است عملکرد سیستم با ریسک توقف روبرو شود و در غیر اینصورت حتی برطرف کردن این خطا دشواریهای فراوانی را به دنبال خواهد داشت.
انتخاب الگوی توزیع

انتخاب الگوی مناسب برای پیادهسازی معماری توزیعی، خود یکی از مباحث مهندسی نرمافزار به شمار میرود که مستلزم در اختیار داشتن دانش و بررسی کلیه زوایا و نیازمندیهای سیستم مورد نظر است.
برای انتخاب الگوی مورد نظر همواره باید نکات زیر را بررسی نمود و با در نظر گرفتن کلیه این معیارها و مروری بر الگوهایی که در اینجا معرفی شدند، به مدل دلخواه دستیافت.
- مقیاسپذیری: مقیاسپذیری در واقع قابلیت بسط و استقرار سیستم در حوزه جغرافیایی وسیعی است که در این حوزه سیستم چه از لحاظ فیزیکی و چه از لحاظ منطقی قابلیت توزیعپذیری داشته و حجم کاری سیستم به صورت یکنواخت در کل حوزه توزیع، تقسیم شده است.
- هزینه : اصولا بحث توزیعپذیری در سیستمهایی مورد توجه ا ست که از حجم کار و تعداد کاربران بالایی برخوردار است. در چنین سیستمهایی معمولا اولین پاسخ برای برطرف کردن نیاز بالابه پردازش و پاسخ به همزمانی درخواستها، بالا بردن خصوصیات فنی اجزای سختافزاری سیستم است و بدیهی است که این امر هزینههای بالای تهیه تجهیزات را به مشتریان تحمیل کرده و در پارهای اوقات حتی این امر موجب منتفی شدن انجام یک پروژه به دلیل هزینههای بالا خواهد شد. این در حالیست که همانطور که گفته شد، راهکار توزیعپذیری با تقسیم کار بین PCهای معمولی این مشکل را مرتفع خواهد ساخت.
- پشتیبانی ساده : ارائه مطلوب خدمات پشتیبانی از نیازمندیهای معمول هر پروژه نرمافزاری به شمار میرود. ولی ممکن است در برخی پروژهها این موضوع به عنوان یک گلوگاه اساسی مورد نظر باشد. در اینگونه مواقع تیم تولید پروژه یا متوسل به استفاده از منابع فراوان نیروی انسانی، زمان و هزینه میشود و یا با استفاده از اصل توزیع، به شکلی اقتصادی این نیازمندی را مرتفع میکند. به این ترتیب بهترین زمان برای بررسی این موضوع، مراحل اولیه پروژه و قبل از انتخاب و پیادهسازی معماری است. در غیر اینصورت همانطور که گفته شد، ممکن است ارائه خدمات پشتیبانی به شکلی مطلوب هزینههای فراوانی را به دنبال داشته باشد.
- تحمل خرابی : در مواردی سیستم در دست ساخت یک تیم نرمافزاری سیستمی حیاتی و بلادرنگ میباشد که قابلیت تحمل خرابی از بارزترین خصوصیات آن به شمار میرود. به این ترتیب توجه به این نیازمندی توجه طراحان تیم را به سمت راهکار توزیعشدگی خواهد برد.
در نهایت انتخاب الگوی مناسب برای توزیع، توجه به معیارهای بالا را طلب کرده و همواره باید رابطه منطقی بین نیازمندیهای مطرح برقرار باشد. به طور مثال، معماری Fat Client و یا Fat Server هزینههای بالایی را در بر خواهد داشت و ارائه خدمات پشتیبانی به سیستمهای Peer To Peer به سادگی قابل انجام نیست. این در حالیست که معماری Client/Server در حالاتی تحمل خرابی پایینی دارد. به این ترتیب همواره باید نیازمندیهای یاد شده برای یک سیستم نرمافزاری را شناسایی کرده و آنها را جهت انتخاب نوع توزیع اولویتبندی نمود.
شرکت فنآوران اطلاعات و ارتباطات روزآمد در تولید نرمافزار نظام نوین مالی دانشگاههای علوم پزشکی کشور و با توجه به نیازمندیهای مطرح در مورد این محصول، از معماری توزیع شده استفاده کرده و با گذشت مدت استقرار این سیستم در دانشگاههای علوم پزشکی کشور، در دستیابی به معیارهای ذکر شده در این مستند تجارب موفق فراوانی را به دست آورده به شکلی که هماکنون این سیستم در کل کشور به عنوان سیستمی کاملا اقتصادی و با تحمل بالای خرابی و همچنین گسترش در حوزه جغرافیایی بالا در حال کار بوده و این تجربه شرکت فنآوران اطلاعات و ارتباطات روزآمد را به یکی از پیشتازان معماری توزیع شده در کشور بدل ساخته است.
در ادامه قابل ذکر است که شرکت فنآوران اطلاعات و ارتباطات روزآمد، با در دست داشتن دانش و تجربیات موفق در این زمینه توانایی انتقال دانش و ارائه خدمات مشاوره معماری را داشته و به عنوان مشاور در انتخاب و اجرای انواع الگوهای توزیع آماده ارائه خدمات به مشتریان محترم میباشد.