CDN چیست و چگونه کار می‌کند؟

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

CDN چیه؟

CDN چیست؟ چرا از CDN استفاده کنیم؟ [اینفوگرافیک]

واقعیت اینه که سایت‌های بزرگی مثل گوگل یا یوتیوب لزوماً از یه سرور فوق‌العاده قوی و قدرتمند استفاده نمی‌کنن که همه‌ی بار ترافیک رو به‌تنهایی تحمل کنه. در عوض، این سایت‌ها از یه تکنولوژی هوشمند به نام CDN یا همون شبکه‌ی توزیع محتوا (Content Delivery Network) بهره می‌برن.

چطور کار می‌کنه؟

حالا شاید بپرسید این تکنولوژی دقیقاً چطور کار می‌کنه؟ اجازه بدید با یه مثال ساده از سایت میهن‌وردپرس توضیح بدم. فرض کنید ما یه سرور اصلی داریم که توی تهران قرار داره و داخل دیتاسنتر برج میلاد میزبانی میشه. حالا بیاید سناریویی رو تصور کنیم.

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

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

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

DDOS چیه؟

حالا جالبه بدونید که بعضی از هکرها از همین نقطه‌ضعف برای حمله به سایت‌ها استفاده می‌کنن. اسم این نوع حمله DDOS یا Distributed Denial of Service هست. توی این حمله، هکرها با استفاده از تعداد زیادی سیستم (که ممکنه آلوده به ویروس باشن)، هزاران یا حتی میلیون‌ها درخواست جعلی به سمت یه سایت می‌فرستن. اون‌قدر این فشار زیاد می‌شه که سرور دیگه نمی‌تونه پاسخ بده و سایت داون می‌شه. در واقع، سایت از شدت شلوغی ساختگی، نفسش بند میاد!

هدف اصلی از DDOS معمولاً ایجاد اختلال، آسیب زدن به اعتبار سایت یا حتی باج‌گیریه. واسه همینه که استفاده از تکنولوژی‌هایی مثل CDN می‌تونه خیلی مؤثر باشه، چون باعث می‌شه فشار به‌صورت هوشمند بین چندین سرور تقسیم بشه و حمله سخت‌تر موفق بشه.

CDN چه مزایایی داره؟

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

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

به این سرورهای میانی که بین کاربر و سرور اصلی قرار می‌گیرن، سرور لبه یا همون Edge Server می‌گن. وقتی کاربر یه درخواست مثل باز کردن یه صفحه یا دیدن یه عکس ارسال می‌کنه، سرور CDN اون درخواست رو دریافت می‌کنه. حالا اگه اون محتوا (مثل یه عکس یا فایل CSS) قبلاً روی سرور CDN ذخیره شده باشه، همون‌جا بدون نیاز به تماس با سرور اصلی، مستقیماً به کاربر نشون داده می‌شه.

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

نکته‌ی جالب اینجاست که تعداد این سرورهای لبه (Edge Servers) کم نیست. شرکت‌هایی که خدمات CDN ارائه می‌دن، معمولاً توی هر مرکز استان یکی دو تا از این سرورها رو قرار می‌دن. این یعنی تقریباً همیشه یه سرور نزدیک به کاربر وجود داره که می‌تونه درخواست‌ها رو سریع‌تر پاسخ بده.

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

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

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

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

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

در واقع، چون رضایت کاربر یکی از معیارهای اصلی گوگل برای رتبه‌بندی سایته، هر چیزی که باعث بهتر شدن تجربه‌ی کاربری بشه، یه امتیاز مثبت برای سئوی شما محسوب می‌شه. بنابراین استفاده از CDN، به‌طور غیرمستقیم می‌تونه رتبه‌ی شما رو در نتایج جستجو بالا ببره.

کجا خدمات CDN ارائه میدن؟

توی ایران هم سرویس‌های CDN خوبی وجود دارن که می‌تونید ازشون استفاده کنید. مثلاً شرکت‌هایی مثل آروان‌کلاود یا ابر دراک که با وجود چالش‌ها و محدودیت‌هایی که دارن، جزو ارائه‌دهنده‌های قابل قبول و حرفه‌ای در این حوزه محسوب می‌شن. تجربه‌ی کاربران زیادی نشون داده که این سرویس‌ها می‌تونن به بهبود سرعت سایت، کاهش مصرف منابع سرور و البته افزایش پایداری کمک کنن.

البته این معرفی‌ها جنبه‌ی تبلیغاتی نداره؛ شما می‌تونید خیلی راحت با یه جست‌وجوی ساده در گوگل، سرویس‌های CDN داخلی و خارجی دیگه‌ای رو هم پیدا کنید و بر اساس نیاز و بودجه‌تون بهترین گزینه رو انتخاب کنید.

در کنار سرویس‌های داخلی، یه سری CDNهای معروف و قدرتمند خارجی هم وجود دارن که در سطح جهانی استفاده می‌شن. مثلاً سرویس‌هایی مثل Cloudflare یا Amazon Web Services (AWS CloudFront) جزو بهترین و پرکاربردترین CDNهای دنیا هستن. این سرویس‌ها معمولاً زیرساخت خیلی قوی‌ای دارن، قابلیت‌های امنیتی پیشرفته‌ای ارائه می‌دن و توی توزیع هوشمند محتوا واقعاً عملکرد بالایی دارن.

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

صحبت آخر

ما توی میهن‌وردپرس قبلاً از سروری با ۱۶ گیگابایت رم استفاده می‌کردیم، اما چون از CDN استفاده نمی‌کردیم، به مرور زمان با افزایش ترافیک سایت مجبور شدیم رم سرور رو تا ۱۲۸ گیگابایت ارتقا بدیم. با این حال، همچنان این ارتقا به‌تنهایی جوابگوی حجم بالای درخواست‌ها نیست و به همین دلیل داریم به‌صورت جدی تحقیق می‌کنیم تا یه سرویس CDN مناسب انتخاب کنیم و ازش استفاده کنیم.

امیدوارم شما هم با انتخاب زیرساخت مناسب، بتونید سایتی سریع، امن و قابل‌اعتماد داشته باشید که همیشه در خدمت کاربراتون باشه. شاد و سربلند باشید.🙂

نظر شما در این مورد چیه؟

  1. U38410 ۲۳ تیر ۱۴۰۰

    سلام و وقت بخیر
    من دامنه سایتم را از یک شرکت و هاستم را از شرکت دیگر که هر دو ایرانی هستند و جزو لیست پیشنهادی مقاله مربوطه شما هستند تهیه کرده ام. مسلما DNS هاست را در شرکت دامنه ثبت باید کرد. حال اگر برای سایتم که پسوند .com دارد از CDN کلاودفلر استفاده کنم و دو DNS کلاودفلر را در شرکت دامنه اضافه کنم آیا نیازی هست که DNS های هاست ایرانی ام (دو تا) را هم اضافه کنم یا آنها را پاک کنم و فقط دو DNS کلاودفلر در قسمت مدیریت دامنه باقی بماند(چون به اندازه چهار گزینه جای خالی دارد). آیا در سرعت و کارایی سایت تاثیری دارد. به نظر شما کدامیک بهتر است:
    1- فقط دو DNS هاست
    2- فقط دو DNS کلاودفلر
    3- هر دو با هم که جمعا چهار تا می شود.
    ممنون

  2. U29295 ۲۱ اردیبهشت ۱۴۰۰

    سلام آپارات از cdn استفاده می کند ؟
    از کجا cdn می گیرد ؟

  3. U29295 ۲۰ اردیبهشت ۱۴۰۰

    سلام چند تا سوال داشتم
    1 هاست من در آلمان است اگر اینترنت ها را قطع کنند و فقط به سرور های داخلی دسترسی داسته با شیم سی دی ان کاری می کند یعنی جلوی قطع شدن سایت ما را می گیرد
    2 آیا سی دی ام های ایرانی خوب هستن سی دی ان آروان کلود ؟
    3 آیا ارزش خرید دارد ؟
    ممنون

  4. U37317 ۳ فروردین ۱۴۰۰

    سلام عیدتون مبارک

    1-ببخشید شما از کدام cdn استفاده میکنید؟
    2-بهترین cdnپیشنهادی شما چیست؟
    3-همچنین چون کاربران شما در ایران هستند شما قطعا از cdn ایرانی استفاده میکنید یا خارجی؟؟

    • Reza Rad رضا راد ۵ فروردین ۱۴۰۰

      سلام سال نو مبارک
      ۱. فعلا هیچکدام
      ۲. آروان کلود وابر دراک خوب هستند. آروان کلود که جدیدا مشکلات زیادی داره
      ۳. فعلا هیچکدام. سی دی ان خیلی کاربردی و خوب توی ایران تقریبا نداریم

      • U37317 ۶ فروردین ۱۴۰۰

        تشکر از شما

        برای سایتی مثل شما یا سایت من که کاربرانم تمام ایرانی هستند آیا باید cdn ایرانی استفاده کنم یا خارجی هم میشود؟؟ میخاهم از لحاظ سرعت و سئو این cdn برایم کاربردی باشد.

        همچنین هاستی که من استفاده میکنم خودش cdn مناسب داره که راه اندازیش کنم آیا به نظر شما مناسب هست که از cdn هاست خودم استفاده کنم؟؟ (طی تیکتی که پرسیدم گفتند بعضی از cdnهای هاست در ایران و بعضی در خارج هستند)

  5. U11538 ۱۲ اسفند ۱۳۹۹

    پوستر ویدیو چقدر زیباس

  6. U29295 ۵ اسفند ۱۳۹۹

    سلام
    1اگر ما سایت مان را بروز کنیم یا یک صفحه را تغییر دهیم برای کاربر تغییر اعمال می شود ؟
    2 بعد چه مدتی ؟
    3اگر مطلب جدی دی منتشر کنیم باعث تاخیر در زمان ایندسک نمی شود ؟
    4اگر سرور در آلمان باشد چی ؟
    5برای سایت خبری خوب است ؟

    • Reza Rad رضا راد ۵ اسفند ۱۳۹۹

      درود بر شما
      ۱. بله
      ۲. بستگی به تنظیمات cdn داره
      ۳. خیر
      ۴. تفاوتی نداره
      ۵. بله عالیه

  7. U28063 ۵ اسفند ۱۳۹۹

    استاد عالی بودید ممنون از شما

  8. U36799 ۵ اسفند ۱۳۹۹

    برای یک وب سایت ایرانی، هاست خارجی بهتره یا ایرانی

  9. U25682 ۵ اسفند ۱۳۹۹

    بهترین CDN چی هست از نظر شما

  10. U6192 ۳۰ تیر ۱۳۹۷

    سلام آموزش ساخت cdn ندارید خیلی گشتم ندیدم
    دقیقا میخوام از روش شما استفاده کنم خوشحال میشم راهنمایی کنید
    https://mihanwp.com/wp-content/uploads/2017/07/cdn.gif

    • U11404 ۳۰ تیر ۱۳۹۷

      سلام
      در حال حاضر همین آموزش موجود است. می توانید برای موارد بیشتر در گوگل جستجو کنید.

  11. کاربر مهمان ۱۱ تیر ۱۳۹۷

    سلام برای استفاده از سی دی ان از چه وبسیت‌های می‌شه تهیه کرد و آیا تو ایران کسی این سرویسو رو ارائه میده ؟

  12. U11661 ۲۷ خرداد ۱۳۹۷

    هاست من که داخل ایران هستش. ولی بین cloudflare و آروان کمی گنگ هستم. کلود فلیر داخل ایران هم سرور نداره ولی ی شرکت بین المللی حساب میشه و گواهی ssl رایگان هم داره.به نظر شما برای من که هاست داخل ایران دارم کدوم بهتره؟

  13. U11661 ۲۴ خرداد ۱۳۹۷

    سلام آقای حسینی. بنده برای استفاده از cdn کمی دو دل هستم. به نظر شما اکنون کدام سرویس در ایران بهتر عمل می کند؟ هنوز هم آروان را پیشنهاد می کنید؟

    • Reza Rad رضا راد ۲۴ خرداد ۱۳۹۷

      سلام هنوز پیشنهاد نمی کنم. باید مشکلاتش رو برطرف کنن البته اگر هاستتون داخل ایران هست اره خوبه استفاده کنید

  14. کاربر مهمان ۱۲ مهر ۱۳۹۶

    سلام. شما خودتون از کجا cdn گرفتید و کجارو پیشنهاد میکنید

  15. U7402 ۲۰ شهریور ۱۳۹۶

    سلام،
    بهترین CDN ایی که یک استارتآپ داخل ایران می تونه الان استفاده کنه چی هست؟ آیا کسی تجربۀ کار با http://cdniran.ir رو داشته؟ خدماتشون چطوریه؟ پیشنهادتون چیه؟ Cloud Flare؟
    یه سوال دیگه ام که ذهن ام رو مشغول کرده این هست که آیا آرون کلود برای خودِ دیجی کالا هست؟ یعنی سرمایه گذارای اصلیش از دیجی کالا هست؟!

    • Reza Rad رضا راد ۲۰ شهریور ۱۳۹۶

      سلام قبلا آروان استفاده میکردیم بد نبود اما باید کمی صبر کرد تا استیبل بشه

      • U7402 ۲۰ شهریور ۱۳۹۶

        بله اما دیگه سرویس اقتصادی ارائه نمی کنه و حداقل سرویسی که ارائه می کنه ماهیانه 300هزارتومان هزینه اش هست که اصلا به صرفه نیست. اما خب خوبیش اینه که چون در ایران سرور داره، بهتر از Cloudflare می تونه باشه

  16. کاربر مهمان ۵ مرداد ۱۳۹۶

    سلام . من چند وقتیه دارم درباره cdn میخونم . بعضی از دوستان میگن خوبه و بعضی ها میگن که خوب نیست. و این که به مدت 4 ساعت سایت را کش میکنه و درصورت ارسال مطلب جدید مطلب توی سایت نمایش داده نمیشه و یا اگر تغییری دادیم مثلا پوسته رو ویرایش کردید تا 4 ساعت تغییرات قابل مشاهده نیست و یا اگر به دلایلی سایت ارور 500 یا 503 بخوره ، به مدت 4 ساعت متوجه نمیشیم که سایت down شده و این خودش ایرادی بزرگی هست . خواستم ببینم واقعا این طوره و آیا شما با توجه به مشکلاتی که در بالا خدمتتون عرض کردم استفاده از cdn رو پیشنهاد میکنید؟؟ و آیا برای ایراداتی که گفتم راه حلی هست؟؟
    در کل مزیاد های خوبی داره از جمله ایمنی سایت و افزایش بارگذاری صفحات وب سایت.

    • Reza Rad رضا راد ۵ مرداد ۱۳۹۶

      سلام خیر اگر درست تنظیم بشه سریعا بدون مشکل نشون میده سایت رو. در مورد ارور ۵۰۰ یا ۵۰۳ میتونید تنظیم کنید توی پنل سرویس دهنده کش تا دقیقه ای پاک بشه کش از روی سرور CDN

  17. کاربر مهمان ۵ مرداد ۱۳۹۶

    سلام خسته نباشید cdn ایران هم داریم؟