طراحی و توسعه وب سایت و نرم افزارهای تحت وب
طراحی و راهاندازی وبسایت در شرایط عادی هم یک فرآیند تخصصی و حساس است؛ اما در شرایط فعلی اینترنت ایران، این موضوع بهمراتب پیچیدهتر و چالشبرانگیزتر شده است.
تحریمهای بینالمللی، محدودیت دسترسی به سرویسهای خارجی و قطعی موقت اینترنت که داشتیم و داریم و احتمالا خواهیم داشت، اما اینبار با یک تجربه جالب نیز مواجه شدیم و فهمیدیم که اینترنت به مدت ۲۰ روز و به طور کامل هم می تواند قطع شود! منظور ما از اینترنت همان اینترنت است و چیزی به عنوان اینترنت داخلی و اینترنت بین الملل نداریم (اینترانت داریم یا اینترنت). اینترنت قطع است و اینترانت وصل!
در تجربه اخیر اینترنت نه فقط برای کاربران و ISP ها بلکه برای دیتاسنترها هم قطع شد و هیچ سروری از داخل ایران با خارج از ایران ارتباطی نداشت! حال با این شرایط که ممکن است باز هم اتفاق بیفتد و دیگر مشخص شده کلید اینترنت را هر زمان نیاز باشد قطع میکنند، حتی بیست روز! بنابراین باید چاره ای بیاندیشیم، طراحی سایت در ایران دیگر یک پروژه عادی نیست بلکه یک پروژه با اعمال شاقه است!
در چنین شرایطی، وبسایتی که بدون در نظر گرفتن واقعیتهای زیرساخت اینترنت ایران طراحی شود، دیر یا زود دچار مشکل میشود؛ نتیجه اش هم مشخص است و از دسترس خارج شدن سایت، افت شدید سئو، نارضایتی کاربران و در نهایت آسیب جدی به کسبوکار.
برای جلوگیری از این اتفاقات، طراحی سایت باید پایدار و متناسب با شرایط خاص اینترنت ایران انجام شود؛ بهگونهای که حتی در زمان اختلال یا قطعی اینترنت، کمترین آسیب ممکن به سایت و کسبوکار وارد شود.
برخلاف بسیاری از کشورها، زیرساخت اینترنت ایران همواره با شرایط غیرقابل پیشبینی مواجه بوده است. قطع یا محدود شدن دسترسی به اینترنت بینالملل، فیلترینگ سرویسها، اختلال در DNS و ناپایداری ارتباط، همگی عواملی هستند که مستقیماً روی عملکرد یک وبسایت تأثیر میگذارند.
در این شرایط، سایتی که وابستگی زیادی به منابع خارجی داشته باشد یا بدون در نظر گرفتن این محدودیتها طراحی شده باشد، عملاً در زمان بحران از کار میافتد. از کار افتادن وب سایت یکطرف و مشکلات پس از آن، افت رتبه سئو، کاهش فروش و مشکلات دیگر هم طرف دیگر.
طراحی سایت پایدار به این معنا نیست که سایت شما هرگز از دسترس خارج نشود؛ بلکه یعنی:
در این بخش سعی میکنیم عمده مشکلاتی که در قطعی یا به گفته مسئولان «اختلالات اینترنت» رخ میدهد را مرور کنیم. برخی کاملا مشخص است و برخی نیز در قطعی گسترده و نا امیدکننده اخیر عملا تجربه شده است!
یکی از رایجترین مشکلات، میزبانی سایت روی سرورهای خارج از ایران است. این یک مشکل رایج نیست. بلکه مشکل ما در ایران است. اینکه سایتی در یک دیتاسنتر بین المللی میزبانی شود خیلی هم خوب است. نسبت به کیفیت دیتاسنتر و سرویس ها و خدماتی که ممکن است ارائه شود عالی هم هست. اما برای ایران اصلا خوب نیست و در زمان قطعی یا محدود شدن اینترنت، دسترسی کاربران داخل ایران به این سرورها عملاً قطع میشود.
نتیجه؟
راهکار:
انتخاب هوشمندانه محل سرور یک راه حل مناسب است، استفاده از سرورهای داخل ایران یا معماری ترکیبی (Hybrid)، و در نظر گرفتن سناریوهای بحران در زمان انتخاب زیرساخت سایت.
بسیاری از سایتها از فونتها، کتابخانهها و پکیجهایی که روی CDNهای بین المللی میزبانی میشوند استفاده میکنند؛ مانند Google Fonts، jsDelivr، Cloudflare و مشابه آنها. در حالت عادی بسیار کار هوشمندانه و ایده الی است و نه تنها به کاهش بار سرور اصلی کمک میکند بلکه دانلود موازی، کاهش زمان لود صفحه، تحویل محتوا از نزدیکترین نقطه جغرافیایی و …. را نیز شامل می شود. اما در طراحی سایت هایی که قرار است در ایران استفاده شوند به لطف اینترنت عالی که داریم برعکس عمل میکنند!
در زمان قطعی اینترنت بینالملل، این منابع لود نمیشوند و نتیجه آن:
راهکار:
تمام منابع حیاتی سایت باید بهصورت محلی (Local) میزبانی شوند. کتابخانهها، فونتها و فایلهای استاتیک باید روی سرور خود سایت یا در سروری در ایران قرار بگیرند تا در هر شرایطی در دسترس باشند.
سایتهایی که بهشدت وابسته به جاوااسکریپت هستند (SPAهای سنگین، انیمیشنهای زیاد، اسکریپتهای پیچیده)، در شرایط اینترنت ناپایدار عملکرد بسیار ضعیفی دارند.
طراحی سبک، استفاده هوشمندانه از جاوااسکریپت، رعایت Progressive Enhancement و اولویت دادن به محتوای اصلی حتی در شرایط اینترنت ضعیف.
بسیاری از وبسایتها برای مدیریت DNS دامنه یا تحویل سریعتر محتوا از سرویسهای خارجی CDN استفاده میکنند. در شرایط عادی این موضوع عالی است. علاوه بر اینکه بسیاری از حملات ۷ لایه پوشش داده می شود، باعث بهبود سرعت و کیفیت تحویل محتوا هم خواهد، اما در شرایط اینترنت ایران، بهخصوص هنگام قطعی یا اختلال در ارتباط با بین الملل، این وابستگی به یک نقطهی آسیبپذیر جدی تبدیل میشود.
در زمان قطع دسترسی این مشکلات بهوجود میآید:
در چنین شرایطی، حتی اگر سرور سایت داخل ایران باشد، استفاده از DNS یا CDN خارجی میتواند باعث شود کل وبسایت عملاً از کار بیفتد. جایگزین ایرانی هم وجود دارد ولی کیفیت این کجا و آن کجا، در شرایط قطعی اینترنت هم تجربه نشان داد سرویس داخلی یعنی همان که هر وقت نیاز باشد قطع میشود!
در طراحی سایت مختص افراد ایرانی، باید وابستگی به DNS و CDN خارجی به حداقل برسد یا برای آن سناریوی جایگزین در نظر گرفته شود. استفاده از GeoDns، پیادهسازی معماری تحویل محتوا متناسب با شرایط ایران نقش مهمی در پایداری سایت ایفا میکند.
بسیاری از وبسایتها از اسکریپتها، افزونهها یا قالبهایی استفاده میکنند که برای فعالسازی یا ادامه عملکرد، نیازمند اعتبارسنجی لایسنس از سرورهای خارجی هستند. این فرآیند معمولاً بهصورت دورهای و کاملاً وابسته به اینترنت انجام میشود.
در شرایط قطعی یا محدود شدن اینترنت، این موضوع میتواند مشکلات جدی ایجاد کند:
در برخی موارد، حتی اگر سایت برای کاربران باز شود، بخشهای مهمی از آن بهدلیل عدم تأیید لایسنس کار نخواهند کرد، که این موضوع میتواند به تجربه کاربری و اعتبار کسبوکار آسیب جدی وارد کند.
راهکار خاصی در این مواقع نیست و باید در نرم افزاری که قرار است در ایران به درستی کار کند، انتخاب ابزارها و اسکریپتها را با دقت ویژهای به موضوع اعتبارسنجی لایسنس ها طراحی کنیم!
موارد مطرح شده تا اینجا تنها بخشی از مشکلاتی بود که ممکن است بتوانیم برای آن یک راهکار مناسب پیدا کنیم. بسیاری از مشکلات دیگر نیز با قطعی اینترنت به وجود خواهد آمد که اگر برای ان سناریوی مشخصی نداشته باشید حتما دچار مشکلات عمده ای خواهید شد.
بسیاری از مدیران سایت ها هیچ برنامهای برای زمان قطعی یا اختلال اینترنت ندارند یا یک مشکل غیرقابل پیش بینی در وب سایت ندارند. به طور مثال ایجاد کانال های ارتباطی مختلف برای دسترسی به کاربران و اطلاع رسانی (اگر چه ممکن است آن هم قطع شود!)، استفاده از api های داخلی جهت ارسال پوش نوتیفیکیشن یا مدیریت درست وضعیت سایت در زمان بحران و …. میتواند حداقل کاربرانتان را تا حد زیادی از نگرانی خارج کند.
به هیچ شکل ممکن! وقتی سایت شما با در نظر گرفتن تمام شرایط واقعی اینترنت ایران نیز طراحی شده باشد قطعا آسیب میخورید. فقط شدت و ضعف آن متفاوت است. ما به عنوان یک شرکت طراحی سایت در یزد سعی کردیم سایت هایی را طراحی و کد نویسی کنیم که در شرایط اینترنت ایران تا حد زیادی پایدار و مقاوم عمل کنند.
به عبارتی در زمان قطعی اینترنت
این دقیقاً همان تفاوت بین یک سایت «معمولی» و یک سایت «حرفهای، پایدار و آیندهنگر» است. وگرنه قطعی اینترنت قطعا به وب سایت، شما و کسب و کارتان آسیب خواهد زد و تنها می توان آن را به حداقل رساند.