CDN مخفف Content Delivery Service به معنی شبکه/سرویس توزیع محتوا است که در واقع یک شبکه توزیع شده جغرافیایی از سرورهای مختلف است که به کاربران کمک میکند تا در کوتاهترین زمان ممکن به محتوایی که میخواهند دست پیدا کنند. این فرایند نیز به صورت کلی براساس یک الگوی بسیار ساده پیش میرود. محتوای یکسانی در سرورهای مختلفی به لحاظ جغرافیایی ذخیره شده و کاربر در زمانی که قصد دسترسی به محتوا را دارد سروری که نزدیکترین فاصله جغرافیایی را به این کاربر دارد مسئول ارائه محتوا خواهد بود. البته این اصلیترین کاریست که CDN انجام میدهد.
هدف اصلی که CDN دنبال میکند، بهبود وضعیت بهرهوری وبسایتهاست و این کار با مهمترین المان یعنی کاهش زمان انتظار برای بارگذاری محتوا صورت میگیرد. در این مطلب از وبلاگ پچیم قصد داریم شما را با CDN یا شبکه توزیع محتوا به خوبی آشنا کنیم و در رابطه با ویژگیها و فواید آن صحبت کنیم.
تاریخچهای کوتاه از شبکههای توزیع محتوا یا CDN
تاریخچه CDNها تقریبا به ۲۰ سال پیش برمیگردد، زمانی که ایده اصلی این بود که بتوانیم حجم عظیمی از محتوا را در سریعترین حالت ممکن به کاربران تحویل بدهیم. اولین شبکه توزیع محتوایی که در دنیا ایجاد شد مربوط به اواخر دهه ۹۰ است که در آن زمان ۱۵ تا ۳۰ درصد ترافیک اینترنت جهانی را به خود اختصاص داده بود. بعد از آن با ایجاد محتواهای چند رسانهای و بحث استریم داده، این دست از شبکهها، توسعه بسیار زیادی پیدا کردند و توانستند در بین شرکتها و استارتاپهای دنیا به شهرت و استفاده بسیار زیادی برسند. اما اگر بخواهیم به صورت مرتب و دستهبندی شده یک تاریخچه از CDN را ارائه دهیم میتوانید به لیست زیر نگاه کنید:
- نسل اول – Static CDN: اولین نسل از شبکه توزیع محتوا در سال ۱۹۹۸ توسعه یافت و هدف آن تسریع در فرایند تحویل دادههای استاتیک وبسایتها بود. در این نسل بیشتر تمرکز روی چگونگی مدیریت دادههای تکراری در سرورهای مختلف و مدیریت ترافیک سرورها بود. البته چون این تکنولوژی به تازگی توسعه یافته بود هزینه بسیار بالایی داشت و همه شرکتها نمیتوانستند از آن استفاده بکنند.
- نسل دوم – Dynamic CDN: نسل دوم شبکههای توزیع محتوا با گسترش انواع محتوای اینترنتی ایجاد شد. محتوایی مانند فایلهای صوتی و ویدیوها باعث شدند تا CDNها روشهای جدیدتری برای توزیع محتوا را پیش بگیرند. همچنین از آنجایی که دستگاههای موبایل به میدان آمده بودند نیاز بود که در بخشهای مختلفی بهینهسازیهای بسیاری صورت بگیرد. هزینه سرویسهای CDN در نسل دوم نیز به نسبت زیاد بود و به همین دلیل استفاده کمتری توسط شرکتهای نوپا داشت.
- نسل سوم – Multi-Purpose CDN: نسل سوم CDNها که با نام CDN چند منظوره عرضه شد همان شبکههای توزیع محتوایی را شامل میشوند که ما امروزه از آنها استفاده میکنیم. تمرکز اصلی این نسل روی بهینهتر کردن استفاده از پهنای باند، دسترسی فوق سریع کاربران به محتوا و مقرون به صرفه کردن سرویسها بود. با ورود تکنولوژیهایی مانند Cloud Computing، شبکههای توزیع محتوا به بخش جدایی ناپذیری از این مارکت تبدیل شدند. حال ما میتوانیم در لایهها و مدلهای مختلفی مانند SaaS، PaaS و BPaaS شاهد استفاده از CDNها باشیم. همچنین مزایا و ویژگیهای بسیار زیادی به دنیای CDNها عرضه شد که در ادامه مقاله با آنها نیز آشنا خواهیم شد.
CDN چگونه کار میکند؟
CDN مسافت و دوری کاربر از سرور مقصد را کاهش میدهد. CDN براساس یک شبکه جهانی، محتوای مورد نظر یک اپلیکیشن را در بین سرورهای مختلف به اشتراک میگذارد و در واقع در هر کدام این سرورها نمونههایی از محتوای اصلی را قرار میدهد. بعد از اینکار زمانی که کاربری در ایران قصد دسترسی به محتوای مثلا وبسایت گوگل را داشته باشد، بجای متصل شدن به سرور اصلی در آمریکا، به یک سرور نزدیکتر مثلا در امارات متحده عربی متصل میشود. این موضوع حجم درخواست از سرور اصلی را هم کاهش میدهد.
برای اینکه بهتر با این موضوع آشنا شوید بیایید با سناریویی که در آن خبری از CDN نیست، اهمیت وجود یک شبکه توزیع محتوا را توضیح دهیم.
بدون CDN وبسایتها و مرورگرها به چه شکلی درخواستها را مدیریت میکنند؟
زمانی که یک کاربر از طریق مرورگر وارد یک وبسایت میشود، یک ارتباط میان مرورگر و وبسایت اصلی شکل میگیرد. آدرس وبسایت ابتدا از طریق یک DNS محلی یا LDNS به یک آیپی آدرس تبدیل میشود. اگر DNS محلی نتواند آیپی آدرس مورد نظر را پیدا کند از DNSهایی در سطح بالاتر درخواست حل این مسئله را میکنند. در نهایت درخواست دسترسی ممکن است از Authoritative DNS Server (همان جایی که Zone میزبانی میشود) بگذرد و آدرس مورد نظر به کاربر ارسال شود.
بعد از این کارها، مرورگر کاربر به صورت مستقیم به سرور اصلی که محتوای وبسایت در آنجا قرار دارد متصل شده و میتواند محتوای مورد نظرش را دانلود کند. جدای از درخواست اصلی، هر درخواست زیر شاخهای که از طرف کاربر ارسال میشود نیز توسط سرور اصلی پاسخدهی میشود. همچنین محتوای استاتیک سرور در فضای کش مرورگر ذخیره خواهد شد. در این شرایط اگر کاربر دیگری بخواهد به این سرور دسترسی پیدا کند دوباره نیاز است که تمام مراحل بالا را پیش بگیرد. هر کدام از مراحلی که ذکر شد نیز کمی زمانبر است و در نتیجه میزان تاخیر کاربر در دسترسی به محتوا افزایش پیدا میکند. اگر محتوای مورد نظر کاربر نیز در سروری دورتر از مکان خود وی قرار داشته باشد این میزان تاخیر افزایش پیدا میکند.
CDN این مشکلات را چگونه حل میکند؟
زمانی که از یک شبکه توزیع محتوا استفاده کنید تغییراتی در این پروسه اتفاق میافتد. زمانی که کاربر از طریق مرورگر درخواست محتوای یک وبسایت را داشته باشد LDNS این درخواست را به یک CDN DNS Server ارسال میکند. این سرور بخشی از زیرساخت Global Server Load Balancer یا GSLB است. Load Balancing در اینجا وظیفه دارد تا تمام اطلاعات و محتوای موجود را پیدا کرده و در اختیار ما قرار دهد. توضیحاتی که در اینجا ذکر شد را میتوانید در تصویر زیر مشاهده کنید. به عنوان یک نکته آموزشی بگوییم که منظور از Edge در تصویر زیر مجموعهای از سرورهاست که محتوای وب را کش کرده و آن را تحویل میدهند.
بعد از اینکه DNS کارهایش را به صورت موفقیت آمیز انجام داد، کاربر یک درخواست HTTPS به Edge ارسال میکند. زمانی که Edge درخواست را دریافت کرد، سرور GSLB به Edge کمک میکند تا درخواست را از طریق بهینهترین مسیر انتقال دهد. بعد از این کار سرورهای Edge دادههای مربوط به درخواست ارسال شده را دریافت میکنند و آن را به صورت محلی ذخیره یا کش میکنند. از این به بعد تمام درخواستهای دیگر این کاربر از طریق این سرور پاسخ داده میشوند و نیازی به بازگشت به سرور اصلی نخواهد بود. در این حالت محتویات حتی در صورتی که فضای اصلی از کار بیافتد، از طریق سرورهای Edge به کاربر انتقال داده میشوند. در تصویر زیر نیز این فرایند ترسیم شده است.
فواید استفاده از CDN
بسته به اینکه چه نیازهایی داشته باشید و کسب و کارتان چه استفادههایی از CDN ببرد، میتوانیم فواید شبکه توزیع محتوا را به چهار قسمت تقسیم کنیم:
بهبود سرعت بارگذاری وبسایت
با فعال کردن CDN کاربران شما میتوانند از طریق نزدیکترین سرور موجود به موقعیت مکانی خودشان، محتوای وبسایت شما را بارگذاری کنند. این بدین معنیست که سرعت بارگذاری وبسایت شما افزایش یافته و کاربران با معطلی کمتری میتوانند از محتوای وبسایت استفاده کنند. هر چقدر سرعت وبسایت شما بیشتر باشد، مخاطب بیشتری تمایل به استفاده مداوم از وبسایت شما را خواهد داشت، همچنین این موضوع روی رنک سئو شما تاثیر گذار خواهد بود چرا که موتورهای جستجوگر به وبسایتهایی با سرعت بارگذاری پایین، نمره منفی میدهند. بنابراین داشتن یک CDN نرخ پرش وبسایت شما را کمتر کرده و بازدید کنندگان بیشتری میتوانند از وبسایت شما استفاده کنند.
کم کردن مصرف پهنای باند
هر بار که سرور اصلی به یک درخواست پاسخ میدهد، میزانی از پهنای باند مصرف میشود. هزینه پهنای باند در این دست از سرورها معمولا یکی از موضوعات پر هزینهایست که شرکتها باید آن را پرداخت کنند. CDN با استفاده از تکنیکهای مربوط به کشینگ و حالتهای دیگری از بهینهسازی که در بالا به آنها اشاره کردیم، حجم درخواستهای مشابه به سرور اصلی را کاهش میدهند و در نتیجه میزان مصرف پهنای باند کاهش پیدا میکند.
افزایش دسترسیپذیری به محتوا و افزونگی
متوقف شدن اپلیکیشن یا وبسایت یکی از دلایل اصلی از دست دادن مخاطبین است. این مشکل نیز نسبتا مشکل شایعی بوده و ممکن است برای هر کسی پیش بیاید. اما از آنجایی که CDN از یک ساختار محتوایی توزیعی استفاده میکند، حتی زمانی که یکی از سرورهای شما از کار بیافتد، درخواست مورد نظر کاربر از طریق یک فضای میزبانی دیگر قابل پاسخگوییست. به همین دلیل کاربران در شرایط مختلف میتوانند به محتوای وبسایت شما دسترسی داشته باشند و در نهایت امنیت محتوایی شما افزایش پیدا کند.
بهبود امنیت وبسایت
مجموع ویژگیهایی که CDN به ما ارائه میدهد باعث میشود تا امنیت وبسایت ما بهبود پیدا کند. یکی از این روشها نیز مقابله کردن با حملات DDoS است. در این حملات، حجم عظیمی از داده به یک سرور ارسال شده و کاری میکند که این سرور زیر بار حجم پردازشی بسیار زیادی از کار بیافتد. از آنجایی که CDN توانایی ارائه خدمات از طریق فضاهای میزبانی دیگر را دارد و همچنین میتواند درخواستها را بین سرورهای مختلف توزیع کند، در نتیجه به شکل موثری در مدیریت این حملات میتواند نقش داشته باشد.
انواع مختلف CDN
همه CDNها به یک شیوه کار نمیکنند و انواع مختلفی را شامل میشوند که کارهای متفاوتی را انجام میدهند. در اینجا با ۳ نوع پر استفاده از CDNها آشنا خواهید شد:
Peer-to-Peer CDN
اگر قبلا از تورنت استفاده کرده باشید کار با Peer-to-Peer CDN را تجربه کردهاید. این نوع از شبکه توزیع محتوا براساس پروتکل PTP کار میکند. در این حالت، محتوا روی Edgeهای مختلف کش نمیشوند، بلکه هر کاربری که در این شبکه حضور دارد میتواند محتوای یکسانی را در اختیار داشته باشد و آن را به اشتراک بگذارد.
بنابراین برای مثال، وقتی که یک کاربر فیلمی را از تورنت دانلود میکند، در همان حین بخشهایی از ویدیو را با دیگران نیز در پس زمینه به اشتراک میگذارد. این حالت از CDN بسیار مقرون به صرفه بوده و به سخت افزارهای پیچیده و گران قیمت نیازی ندارد.
Push CDN
با استفاده از Push CDN شما به عنوان صاحب یا توسعه دهنده وبسایت به صورت مستقیم وظیفه انجام کارهای مربوط به CDN را خواهید داشت. در این حالت به جای اینکه منتظر سرور PoP برای قرارگیری محتوا در زمان ایجاد درخواست باشید، شما قبل از اینکه حتی درخواستی ارسال شود، محتوا را به سرور ارسال میکنید. در واقع شما در این حالت به صورت آماده محتوای کش شده را ذخیره میکنید و تا زمانی که این محتوا حذف یا اصطلاحا Purge نشوند همانجا باقی خواهند ماند.
با استفاده از Push CDN شما کنترل کامل روی محتوای توزیع شده را خواهید داشت. چیزی که شما در PoP Server قرار میدهید در نهایت همان محتوایی خواهد بود که کاربران پس از درخواست، دریافت میکنند.
Original Pull CDN
شبکه توزیع شده Original Pull حالت استاندارد CDNها به حساب میآید. در این شبکه PoP Server محتوای صفحات وب را از سرور اصلی دریافت کرده و آنها را براساس درخواستهای کاربران کش میکند. در واقع این مورد براساس استانداردترین حالت ممکن پیادهسازی CDN در نظر گرفته شده و بیشتر شبکههای توزیع محتوا نیز از این الگو استفاده میکنند.
در چه مواقعی از CDN باید استفاده شود؟
گستره بسیار بزرگی از شرکتها و کسب و کارهای مختلفی از CDN استفاده میکنند و در واقع باید گفت که CDN یک بخش بسیار مهم برای این دست از کسب و کارها به حساب میآید. جدای از اینکه CDN میتواند برای هر حالتی مفید باشد اما ما در زیر لیستی قرار دادهایم که وجود CDN در آنها ضروری است:
- شرکتها و آژانسهای تبلیغاتی
- شرکتهای استریم (موسیقی، فیلم، بازی و…)
- شرکتهای آموزش آنلاین
- فروشگاههای آنلاین
- سیستمهای دولتی، بانکی و مالی
- مجلههای خبری
جمع بندی
CDN مطمئنترین روش برای توزیع درست محتوا در بین سرورها و فواصل جغرافیایی مختلف است. برای اینکه بتوانید بهترین تجربه را به مخاطبین خودتان از دسترسی به محتوا ارائه کنید، مطمئنا استفاده از یک CDN میتواند بسیار تاثیرگذار باشد. حضور CDN در بیشتر کسب و کارها در حوزههای مختلف یک ضرورت بوده و حتما باید به فکر پیادهسازی آن باشید.
در این مطلب از وبسایت پچیم ما از چیستی CDN، تاریخچه آن، چگونگی کار کردن، فواید و…. صحبت کردیم. همانطور که گفته شد بدون استفاده از CDN نمیتوانید به یک شرکت بینالمللی تبدیل شوید و به مخاطبین جهانیتان سرویسها را به خوبی ارائه کنید.