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

چند وقت پیش تصمیم گرفتم چند تا از پیام‌رسان های داخلی و خارجی رو بررسی کنم اما باخودم گفتم همینجوری یهویی که نمیشه رفت سراغ نقد و بررسی!مخاطب باید اول یه تصور کلی از نحوه کار پیام‌رسان ها و پیچیدگی اونا داشته باشه، اینجوری شد که تصمیم گرفتم این متن رو بنویسم« بخونید کپی کنم :) ».خب دیگه شروع کنیم.توسعه‌ی پیام‌رسان‌ها، در روزگار ما موضوعی مهم و همه‌گیر است که حواشی گسترده‌ای هم دارد. این حواشی گسترده بیش از آنکه فنی باشد، پیرامون ابعاد اجتماعی و فرهنگی مربوط به پیام‌رسان‌ها است. اما واقعیت آن است که تا زمانی که اطلاعات حداقلی در مورد پیچیدگی‌های فنی توسعه‌ی یک پیام‌رسان نداشته باشیم، نمی‌توانیم ابعاد اجتماعی و فرهنگی پیام‌رسان‌ها را هم به روشنی درک کنیم. به همین مناسبت قرار است در چند پست متوالی، به بررسی پیچیدگی توسعه‌ی فنی پیام‌رسان بپردازیم. موضوعی که در عین داشتن جذابیت، مغفول مانده و کمتر به آن پرداخته نشده است.فن‌آوری پیام‌رسان، یک فنآوری بسیار پیچیده است که با ۳۹ تکنولوژی مختلف در ارتباط است؛ تعدادی از این تکنولوژی‌ها، به اصطلاح تکنولوژی‌های های-تک (High-Tech) هستند. از این‌رو توسعه‌ دادن یک پیام‌رسان، به‌معنای ارائه‌ی تنها یک محصول نیست. هم‌زمان با توسعه‌ی یک پیام‌رسان باکیفیت، فن‌آوری‌های دیگری نیز توسعه می‌یابد که به صنعت آی‌تی یک کشور کمک خواهد کرد.حالا از مقدمه‌ها می‌گذریم و پیچیدگی‌های فنی توسعه پیام‌رسان می‌پردازیم. برای توسعه‌ی یک پیام‌رسان چندین مؤلفه‌ی بسیار مهم وجود دارد. برخی از این موارد را معرفی کرده و توضیحی کوتاه درباره‌ی هرکدام می‌آوریم۱- بلادرنگ بودنبلادرنگ بودن به این معناست که در دنیای پیام‌رسانی، یک محصول خوب باید در کوتاه‌ترین زمان ممکن واکنش نشان داده و عملیات مورد نظر کاربر را حداکثر در چند ده میلی ثانیه انجام دهد. برای مثال اگر کاربر پیامی ارسال ‌می‌کند، انتظار دارد در کسری از ثانیه پیامش ارسال شده، به گیرنده برسد و به‌محض دریافت توسط گیرنده، از خوانده شدن پیامش باخبر شود. اگر در طول پروسه‌ی ارسال پیام (شامل ارسال پیام به سرور، تأیید دریافت پیام توسط سرور به کاربر اول، ارسال پیام از سرور به کاربر دوم، تایید دریافت پیام توسط کاربر دوم به سرور و در نهایت اعلام دریافت توسط کاربر دوم به کاربر اول)، کوچک‌ترین کندی از سمت کاربر حس شود،‌ کارآیی پیام‌رسان دچار چالش خواهد شد! بنابراین عملکرد پیام‌رسان حتی از تراکنش‌های بانکی هم باید سریع‌تر باشد.رسیدن به این سرعت نیاز به زیرساخت فنی (سرور) کاملا بهینه و کارا دارد. علاوه‌بر این مشکلات زیرساختی در شبکه‌ی سرویس‌دهندگان اینترنت نیز به پای پیام‌رسان نوشته خواهد شد. برای مثال اگر در شبکه انتقال داده از سرور به کاربر کندی وجود داشته باشد، مقصر امر پیام‌رسان تلقی می‌شود. هیچ کاربری به مشکلات ارائه‌دهنگان اینترنت یا مخابرات و شبکه‌ی سراسری اینترنت کشور فکر نخواهد کرد.۲- تنوع سرویسبرای توسعه‌ی پیام‌رسان باید سرویس‌های زیادی توسعه داده شوند. توسعه‌ی هر سرویس، رویه‌ی مستقلی دارد که مستلزم طی کردن روال‌های تحلیل، طراحی و پیاده سازی است. بررسی،‌ توسعه و آپدیت این فیچرها نیز نیازمند بررسی و برنامه‌ریزی جداگانه‌ای است. تمام این عوامل که توسط تیم فنی پیام‌رسان مدیریت می‌شود، پیچیدگی کار توسعه‌ی پیام‌رسان را بیشتر می‌کند.۳- قابلیت اطمینانیکی از مهم‌ترین پیچیدگی‌های توسعه پیام‌رسان قابلیت اطمینان است. در یک پیام‌رسان باید توجه داشت که تمامی پیام‌ها و فایل‌ها می‌بایست به درستی ارسال، دریافت، ذخیره و بازیابی شود. عدم امکان دسترسی به حتی یک فایل یا پیام مبادله شده از طرف کاربران قابل قبول نیست و کاربران فارغ از مسائلی که در زیرساختهای شبکه و مراکز داده بروز می‌کند، انتظار دارند با اطمینان ۱۰۰% به همه اطلاعات خود در هر زمانی دسترسی داشته باشند. به عنوان مثال فرض کنید به دلیل نوسانات برق یکی از حافظه ها دچار سوختگی شود یا سروری در اثر گرمای زیاد در مرکز داده، به صورت خودکار خاموش و از دسترس خارج شود. هدف طراحی‌های پیچیده در پیام‌رسان به نحوی است که در برابر بروز چنین اختلالاتی مقاوم باشد.پیچیدگی این موضوع زمانی دو چندان می شود که تعداد کاربران شما در مقیاس چندین میلیون کاربر و تعداد پیام‌ها و فایل‌ها در مقیاس چند صد میلیون باشد و از چندین مرکز داده بهره جویید.۴- تنوع کلاینت‌هاهنگامی‌که پیام‌رسان شما از نسخه‌ها مختلف پشتیبانی می‌کند، بحث تنوع کلاینت‌ها مطرح می‌گردد. تیم فنی توسعه‌دهنده می‌بایست متشکل از تیم‌های تخصصی برای اندروید، iOS، ویندوز، مک و لینوکس باشد. دستگاه‌‎ها و سیستم‌عامل‌های گوناگون، تفاوت‌های ساختاری و امکانات و ابزارهای متنوعی دارند که نسبت به یکدیگر کاملا متفاوت هستند. از این رو توسعه برنامه ای همچون پیام‌رسان که مدت زمان استفاده زیادی در طول شبانه روز دارد، باید کاملا بهینه و کارا باشد تا بهترین استفاده را از منابع محدود گوشی‌ها داشته باشد. روال‌ های تولید نرم‌افزار از تعیین دقیق نیازمندی‌ها در هر محیط تا تحلیل، طراحی، پیاده‌سازی و تست باید به صورت مستقل در هر دستگاه به صورت کامل و جداگانه اجرا شوند و همزمان یکپارچگی آنها نیز حفظ شود. بدون تسلط بر مشخصات و امکانات سیستم‌عامل‌ها و محیط هر دستگاه، امکان توسعه نرم‌افزار کارا برای آن دستگاه غیر ممکن خواهد بود.۵- پیچیدگی هر کلاینتهمانطور که قبل‌تر مطرح شد، پیام‌رسان‌ها می توانند از کلاینت‌های مختلف پشتیبانی نمایند. علاوه‌بر بحث تنوع کلاینت‌ها، پیچیدگی‌هر کلاینت نیز قابل تأمل است.به‌عبارت دیگر هر کلاینت پیچیدگی خاص خود را دارد. ورژن‌های مختلف در هر کلاینت، محدودیت‌ها و امکانات متفاوت، رفتارهای متفاوت در اجرای هر فیچر، میزان مصرف باطری و منابع متفاوت و … باعث بروز این پیچیدگی‌ها خواهد شد.۶- اشتراک‌گذاری فایلمبحث مهم بعدی که برای کاربر بسیار اهمیت دارد، قابلیت اشتراک‌گذاری فایل در پیام‌رسان است که به نوبه خود، پروژه‌ای عظیم است. در این مبحث، دو مولفه بسیار اهمیت دارد: ۱- تعداد آپلود و دانلود ۲- ترافیک آپلود و دانلود.از نکته‌های قابل توجه در پیچیدگی‌های اشتراک‌گذاری فایل، این است که حجم فایل‌های دانلودی کوچک هستند اما تعدد درخواست دانلود از سوی کاربر بسیار بالا است. راه حل های متنوع و زیادی در دنیا برای عکس صورت مسئله پیامرسانها وجود دارد؛ یعنی وقتی تعداد فایلها محدود ولی حجم آنها بزرگ است از راه حل های مبتنی بر توزیع بار ترافیک (CDN) استفاده می‌شود.پیچیدگی ناشی از حجم ترافیک عظیم در سرویس ابری، علاوه بر امکانات شبکه ای، ناظر بر توان ذخیره‌سازی و بازیابی نیز هست. به طور مثال زمانی که ترافیک ورودی در مدت چند ساعت، بیش از چند ده گیگابیت در ثانیه است، ناگزیر باید از راه‌حل‌های توزیع شده، مقیاس‌پذیر و با دسترس‌پذیری بالا استفاده کرد. در صورت بروز هرگونه اختلال در مراکز داده یا زیرساخت شبکه و اینترنت، گزینه های جایگزین برای شبکه، سرورها، حافظه‌های ذخیره‌سازی و یا حتی مراکز داده در نظر گرفته می شود.۷- امنیتجمع شدن حجم بزرگی از اطلاعات حساس کاربران در دیتابیس‌های پیام‌رسان، شامل لیست مخاطبان، موقعیت‌های مکانی، تماس‌ها، پیام‌های ارسال و دریافت شده، عکس و … انگیزه‌ی بالایی برای هک این سرویس‌ها به هکرهای داخلی و خارجی می‌دهد. بنابراین کاربر باید اطمینان داشته باشد که اطلاعات شخصی وی هرگز در دسترس کسی قرار نخواهد گرفت و هک نخواهد شد. اطمینان کاربر از حفظ حریم شخصی‌اش سبب اقبال او به استفاده از سرویس پیام‌رسان خواهد شد. بومی نبودن یک محصول، می‌توان راه را برای دسترسی به اطلاعات شخصی کاربرانش باز کند.۸- توسعه پذیریدر اوایل راه توسعه‌ی پیام‌رسان‌ها، فیچرها و امکانات ساده‌تری مثل امکان ارسال و دریافت پیام، نمایش اخرین وضعیت و… مورد نظر طراحان بوده است. با گسترش بیشتر پیام‌رسان‌ها، امکانات بیشتری مثل ارسال و دریافت فایل، تماس‌های صوتی و تصویری، مکان‌یابی، ارسال صوت و … به پیام‌رسان‌ها اضافه شد که مزیت‌های رقابتی پیام‌رسان‌ها محسوب می‌شدند. بنابراین پیام‌رسان‌ها باید از ابتدا به گونه‌ای طراحی شوند که همواره امکان اضافه کردن قابلیت‌ها و فیچرهای جدید را داشته باشند. به این ویژ‌گی «توسعه‌پذیری» می‌گویند. معماری توسعه‌پذیر نیازمند رعایت موارد زیر است:بومی‌سازی تکنولوژیداشتن نیروی بومی متخصص بر تکنولوژی، محصول و سرویسدر اختیار داشتن کد منبع برای تمام اجزای سامانهداشتن نیروی متخصص مسلط بر تمام اجزای سامانه۹- حجم عظیم دادهپیام‌رسان‌ها با حجم عظیمی از داده سروکار دارند. پیام‌های کاربران، میلیون‌ها فایلی که در روز جابه‌جا می‌شوند، چند هزار تماس صوتی و تصویری در روز، انبوه مطالب مربوط به هزاران کانال و گروه و… بار سنگینی را به پیام‌رسان‌ها تحمیل می‌کنند. فقط به این فکر کنید که چندصدهزار پیام دریک لحظه در پیام‌رسان جابه‌جا می‌شود و پیام‌رسان باید بدون هیچ درنگی، هر پیام را از فرستنده گرفته و بلافاصله به گیرنده‌ تحویل دهد و خطا هم نکند! حجم داده‌های یک پیام‌رسان هرروز بسیار بیشتر از روز قبل می‌شود و هیچ خطا و اشتباهی هم در جریان انتقال داده‌ها پذیرفته نیست.منبع: soroush-app.ir/blog