اینم یه تجربه پراکنده دیگه!
قبلا در مور اینکه Push Notification چطور کار میکنه، نوشته بودم. حالا این دفعه میخوام راه حلی رو که برای ارسال پیغام بصورت آنی به کلاینتها دارم رو بگم. توی این پست راهحلهای مختلفی که به ذهنم میرسه رو میگم و معایب و مزایای هرکدوم رو از نظر خودم اسم میبرم!
اختراع مجدد چرخ
یکی از حالتهایی که در جاهایی که من کار کردم و میان آدمهایی که من میشناسم، خیلی مورد قبول هست اینه که، همه چیز رو از اول خودمون درست کنیم. یعنی اینکه درسته که فلان چیز آماده هست یا فلان راهحل متن باز هست ولی من دوست دارم چرخ رو از اول اختراع کنم و همه چیز رو خودم بنویسم. خب اگه بخواهیم این راه حل رو از ابتدا خودمون بنویسم بایستی کارهای زیر رو انجام بدیم:
- طراحی پروتکل: یعنی اینکه تعیین کنیم این سیستم جدید اولا چه پیغامهایی رو میفرسته(فرمت پیغامها)
- طراحی روند کار: اینکه وضعیتهای کلاینت و سرور چیاست و مثلا رجیستر شدن کلاینت جدید، حذف شدنش، قطع شدنش و … چطور مشخص میشه.
بعد از تعیین این وضعیت نیاز داریم که سرور رو طراحی کنیم. طراحی سرور بصورت از صفر چالشها، مزایا و معایبی داره که من اینجا اون چیزهایی که به ذهنم میرسه رو میگم:
- چالشها:
- مدیریت تعداد زیاد کلاینت همزمان: خدا رو شکر کتابخانههای خوبی برای این کار وجود داره اگه راضی بشیم ازشون استفاده کنیم.
- طراحی نرمافزار با قابلیت توسعه: طراحی نرم افزار قابل توسعه و نگهداری معمولا کار بسیار سختی هست
- سختی پیادهسازی افزایش کارایی بصورت عرضی
- تامین ثبات و مقاومت نسبت به خطا
- مزایا:
- همه چیز در کنترل ماست و ما از زیر رو بم سیستم آگاهی داریم
- احتمالا در صورت طراحی درست توسعه سیستم هم راحت میشه
- نیاز کم به آموزش
- معایب
- نیاز به زمان و انرژی زیاد
- چالشهای عملیاتی و پیادهسازی زیاد
در طراحی کلاینت هم چالشها، مزایا و معایبی رو داریم
- چالشها
- تامین ثبات و مقاومت نسبت به خطا
- مزایا
- همه چیز در کنترل ماست و ما از زیر رو بم سیستم آگاهی داریم
- معایب
- نیاز به زمان و انرژی زیاد
استفاده از xmpp
خب استفاده از این راهبرد یکی از کم ریسکترین راههاست چرا که همین الان گوگل و اپل از این سیستم استفاده میکنند. دوم اینکه نرمافزارهای آمادهای هم برای این کار وجود داره. کارهایی که بایستی در این حالت انجام بشه اینه:
- آشنایی با پروتکل xmpp
- آشنایی با سرور و کلاینتهای موجود برای xmpp
- ارزیابی لیست ویژگیهایی که ما داریم با قابلیتهای این سیستمها
بعد از انجام این بررسیها باید برویم سراغ انتخاب سرور و کلاینت. چون این پروتکل استاندارد شده و سرور و کلاینتهایی براش موجوده پس میشه گفت که چالشها، مزایا و معایبش یکی هست:
- چالشها:
- نیاز به آموزش زیاد
- نیاز به دستکاری و تغییر کدهای نوشته شده توسط دیگران: خیلی از ما در خوندن و دستکاری کد دیگران با مشکلات عدیدهای مواجه هستیم که خب معمولا باعث میشه از این کار بترسیم.
- مزایا:
- وجود نرمافزارها متن باز
- ریسک پایین کار
- معایب:
- پروتکل xmpp مبتنی بر xml هست که عملیات استخراج اطلاعات رو از نظر محاسباتی پر هزینه میکنه.
- پروتکل xmpp دارای extension های غیر استاندارد زیادی هست که همه سرورها و همه کلاینتها از اون پشتیبانی نمیکنن.
استفاده از IRC
خب ریسک این راهبرد یکم بیشتر از قبله، اما توسط ارتش آمریکا برای اطلاع رسانی در حین عملیات استفاده شده که نشون میده این ایده هم قابلیت اجرای عملیاتی داره. کارهایی که در اینجا هم باید انجام بشه شبیه xmpp هست:
- آشنایی با پروتکل IRC که خیلی ساده و راحت هست
- آشنایی با سرور و کلاینتهای موجود برای IRC
- ارزیابی لیست ویژگیهایی که ما داریم با قابلیتهای این سیستمها
بعد از انجام این بررسیها باید برویم سراغ انتخاب سرور و کلاینت. چالشها و مزایا و معایب این روش از این قراره:
- چالشها:
- نیاز به دستکاری و تغییر کدهای نوشته شده توسط دیگران
- مزایا:
- نیاز به آموزش قابل قبول
- وجود نرمافزارها متن باز
- ریسک پایین کار
- پروتکل IRC مبتنی بر متن بوده و بسیار ساده است.
- معایب:
- پروتکل IRC مبتنی بر متن بوده و به سختی یا با هزینه بیشتر میشه اطلاعات بایتنری رو از طریق اون انتقال داد.
جمع بندی
اگه من بخوام جمع بندی کنم من حداکثر سعیم رو میکنم که سراغ «اختراع مجدد چرخ» نرم. جاهایی که با کمبود قدرت محاسباتی کلاینت مواجهم یا قرار نیست با این اطلاع رسانی آنی «شاخ غول» بشکنم، استفاده از IRC به علت ساده تر بودنش قابل قبول تره اما اگه موقعیت عجیب غریب باشه احتمالا میرم سراغ xmpp.
امیدوارم این مطلب به دردتونه خورده باشه! همین!