پیچیدگی‌های توسعه پیام‌رسان

در پست قبلی در مورد پیچیدگی‌های توسعه پیام‌رسان مقدمه‌ای گفتیم و به دو مورد «بلادرنگ بودن» و «تنوع سرویس» پرداختیم (اینجا). در این پست به ادامه موضوع خواهیم پرداخت.

۱. قابلیت اطمینان

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

پیچیدگی این موضوع زمانی دو چندان می شود که تعداد کاربران شما در مقیاس چندین میلیون کاربر و تعداد پیام‌ها و فایل‌ها در مقیاس چند صد میلیون باشد و از چندین مرکز داده بهره جویید.

برای مثال تیم فنی سروش‌پلاس پذیرای بیش از ۱۴ میلیون کاربر بوده و تاکنون انتقال بیش از  … پیام و … فایل را پشتیبانی کرده است.

۲. تنوع کلاینت‌ها

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

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

۳. پیچیدگی هر کلاینت

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

به‌عبارت دیگر هر کلاینت پیچیدگی خاص خود را دارد. ورژن‌های مختلف در هر کلاینت، محدودیت‌ها و امکانات متفاوت، رفتارهای متفاوت در اجرای هر فیچر، میزان مصرف باطری و منابع متفاوت و … باعث بروز این پیچیدگی‌ها خواهد شد.

۴. اشتراک‌گذاری فایل

مبحث مهم بعدی که برای کاربر بسیار اهمیت دارد، قابلیت اشتراک‌گذاری فایل در پیام‌رسان است که به نوبه خود، پروژه‌ای عظیم است. در پیام‌رسان سروش پلاس رکوردهای چند صد میلیون درخواست دانلود در روز وجود دارد. این درحالی است که در مقایسه با سرویس‌های اشتراک‌گذاری ویدیو، دستیابی به رکورد ۱۰ میلیون درخواست فایل در روز هدف بسیار بزرگی است. در این مبحث، دو مولفه بسیار اهمیت دارد: ۱- تعداد آپلود و دانلود ۲- ترافیک آپلود و دانلود.

از نکته‌های قابل توجه در پیچیدگی‌های اشتراک‌گذاری فایل، این است که حجم فایل‌های دانلودی کوچک هستند اما تعدد درخواست دانلود از سوی کاربر بسیار بالا است. راه حل های متنوع و زیادی در دنیا برای عکس صورت مسئله پیامرسانها وجود دارد؛ یعنی وقتی تعداد فایلها محدود ولی حجم آنها بزرگ است از راه حل های مبتنی بر توزیع بار ترافیک (CDN) استفاده می‌شود. پس برای غلبه بر این پیچیدگی تیم سرویس‌های ابری سروش‌پلاس توانستند به الگوریتم‌های ویژه‌ای در این زمینه دست پیدا کنند.

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

قسمت سوم این موضوع را در پست بعدی بلاگ سروش‌پلاس بخوانید.