آنچه در این مقاله میخوانید:
بسیاری از فعالیتهای آنلاین، از توزیع فایلهای رسانهای گرفته تا به حداقل رساندن زمان بارگذاری فایلهای استاتیک یک وبسایت، هم برای صاحب محتوا و هم برای بازدیدکنندگان (کاربران) آن بسیار مهم است. با توجه به نیاز روزافزون وبسایتها برای تحویل سریع محتوا و برطرف نمودن مشکلات مربوط به تأخیر، استفاده از فناوری CDN بهعنوان یک راه حل واقعی مطرح شد. بنابراین، طراحی معماری CDN مناسب برای توزیع محتوای بهینهشده به کاربران در سراسر جهان امری ضروری محسوب میشود.
انتخاب معماری زیرساخت برای شکل دادن به هویت محصول CDN و در عین حال تعیین ارزش ارائهی آن بسیار مهم است. بلوکهای اصلی زیرساخت CDN، PoPها (نقاط حضور) هستند؛ PoPها مراکز داده منطقهای هستند که وظیفه آنها برقراری ارتباط با کاربرانی است که در مجاورت این PoPها قرار دارند.
استفاده از مراکز توزیع محتوای منطقهای، زمان رفت و برگشت (RTT) را کاهش میدهد و وبسایت شما را برای همه بازدیدکنندگان، بدون توجه به موقعیت جغرافیایی آنها، سریعتر میکند.
بهطور معمول، هر PoP شامل چندین سرور و روتر است که مسئولیت ذخیرهسازی (Caching)، بهینهسازی اتصال و سایر ویژگیهای تحویل محتوا را دارند. برای CDNهایی که راه حلهای امنیتی ارائه میدهند، PoPها شامل سرورها و ماشینهای جلوگیری از حملات DDoS هستند، که سایر عملکردهای مرتبط با امنیت را نیز انجام میدهند.
به یاد داشته باشید، وظیفه CDN این است که میزبانی معمولی شما را با کاهش مصرف پهنای باند، به حداقل رساندن تأخیر و ارائه مقیاسپذیری مورد نیاز برای مدیریت بارهای ترافیکی غیرعادی، بهبود ببخشد. تمامی موارد ذکرشده، فقط با طراحی معماری شبکه بسیار قوی قابل دستیابی است؛ معماریای که CDN شما را به یک خط سریع اختصاصی در بزرگراه اطلاعات تبدیل کند.
چهار اصل مهم برای طراحی CDN
عملکرد (Performance)
یکی از وظایف اصلی CDN بهحداقل رساندن تأخیر است. از نقطه نظر معماری، این بدان معناست که باید برای اتصال بهینه، PoPها در تقاطعهای اصلی مرکز شبکه، که دادهها در آن حرکت میکنند، قرار بگیرند.
یکیدیگر از نکات مهم، امکانات فیزیکی است. بهعنوان یک اصل، شما همیشه میخواهید که PoP شما در مرکز داده ممتازی باشد، که در آن ارائهدهندگان ستون فقرات (backbone) با یکدیگر همتا میشوند (ارتباط برقرار میکنند) و ارائهدهنده CDN شما با سایر CDNها و اپراتورهای اصلی توافقنامههای همتا ارتباط برقرار میکند. چنین توافقاتی CDNها را قادر میسازد تا زمان رفت و برگشت را به میزان قابل توجهی کاهش داده و استفاده از پهنای باند را بهبود بخشد.
مقیاسپذیری (Scalability)
CDN ها که برای مسیریابی با سرعت و حجم بالا ساخته شدهاند، باید بتوانند هر مقدار ترافیک را مدیریت کنند. معماری CDN باید با فراهم نمودن منابع شبکه و پردازش انبوه در تمامی سطوح، تا منابع محاسباتی و ذخیرهسازی موجود در هر یک از سرورهای ذخیرهسازی، این انتظارات را برآورده سازد.
همانطور که انتظار میرود، CDNهایی که خدمات امنیتی DDoS ارائه میدهند، به مقیاسپذیری بسیار بالاتری نیاز دارند. برای برطرف کردن این نیازها، آنها سرورهای اختصاصی ساخته شده برای کاهش حملات DDoS (اسکرابر) را مستقر میکنند. این سرورهای اختصاصی بهصورت جداگانه میتوانند حجم ترافیکی زیادی را مدیریت کرده و در هر ثانیه دهها گیگابایت را پردازش کنند.
قابلیت اطمینان (Reliability)
مقیاس زیرساخت CDN، یک سیستم بدون اشکال را به یک سیستم غیر محتمل آماری تبدیل میکند. با این حال، همین مقیاس میتواند به اطمینان از انعطافپذیری رکورد و قابلیت دسترسی بالا کمک کند، که همین امر موجب میشود تا ارائهدهندگان CDN بتوانند به قراردادهای سطح خدمات (SLA) خود متعهد باشند.
CDNهای تجاری، هم با مرحلهبندی دقیق چرخههای تعمیر و نگهداری و هم با ادغام افزونگی سختافزار و نرمافزار اضافی، رویکرد ” بدون نقطه شکست” را اتخاذ میکنند. همچنین بسیاری از آنها، سیستمهای بازیابی را مدیریت کرده تا ترافیک را در اطراف سرورهای از کار افتاده هدایت کنند. علاوهبراین، ارائهدهندگان CDN برای افزونگی اضافی، با چندین اپراتور سروکار دارند و به کانالهای اختصاصی مدیریت خارج از باند تکیه میکنند، که در صورت بروز فاجعه امکان تعامل با سرورها را فراهم میکنند.
پاسخگویی (Responsiveness)
CDN ها بهطور مستمر در تلاش برای بهبود پاسخگویی هستند؛ میزان پاسخگویی با مدت زمانی که طول میکشد تا تغییرات پیکربندی در سطح شبکه اعمال شود، اندازهگیری میشود.
به خاطر داشته باشید که حتی کوچکترین تغییرات در پیکربندی، مانند دستور پاک کردن یک تصویر خاص از حافظه پنهان یا افزودن یک آدرس IP به لیست سیاه IPها، باید به همه POPها ارسال شود. هر چه شبکه بزرگتر و از نظر جغرافیایی گستردهتر باشد، مدت زمان بیشتری برای انجام این کار طول میکشد.
برای اطمینان از کیفیت خوب خدمات به مشتریان، CDN باید با در نظر گرفتن انتشار سریع پیکربندی طراحی شود.
توپولوژی CDN
بهطور کلی، دو نوع توپولوژی را میتوان برای CDN معرفی کرد: CDN پراکنده و CDN تلفیقی.
توپولوژی CDN پراکنده (CDN ساده)
CDNهای پراکنده از تعداد زیادی PoPهای متوسط و کم ظرفیت، که در مناطق جغرافیایی پر جمعیت قرار میگیرند، تشکیل شدهاند. این توپولوژی بر “مجاورت فیزیکی بهینه” تمرکز دارد. در نتیجه، یافتن PoPهای نزدیک به هم، که اغلب بیش از چند ده مایل از هم فاصله ندارند، رایج است.
CDNهای اولیه و قدیمی بر فرض اینکه تعداد PoPهای بیشتر، بهتر هستند، ایجاد شدند. البته، آن زمان انتقال دادهها بیشتر توسط کابلکشی مسی انجام میشد و کابلکشی فیبر نوری به ندرت انجام میگرفت، به همین دلیل، CDNها به مدل پراکنده نیاز داشتند. اما با گذشت زمان، با نصب کابلهای فیبر نوری بیشتر و با ادامه بهبود اتصال جهانی، مزایای به حداقل رساندن فاصله فیزیکی تا سرورها کاهش یافت. علاوه بر این، هرچه CDNها به معرفی ویژگیهای سفارشیسازی بیشتری ادامه دادند، توپولوژی پراکنده با کاهش پاسخگویی سیستمها و کندی سرعت استقرار پیکربندی، اهمیت خود را از دست داد.
با اینحال، حتی امروزه نیز مجاورت PoPها حائز اهمیت است. CDNهای پراکنده بهبود سرعت بیشتری را ارائه میدهند، که این مزیت به ویژه در مناطقی که از اتصالات کمی برخوردار هستند، مهم است. علاوه بر این، PoPهای کوچکتر را میتوان راحتتر مستقر کرد، که این ویژگی رشد سریع پوشش شبکه را ممکن میسازد.
مزایای استفاده از توپولوژی CDN پراکنده
- مجاورت فیزیکی، تأخیر را به حداقل میرساند.
- در مناطق کم اتصال مؤثر است.
- استقرار PoPهای کوچکتر آسانتر است.
معایب استفاده از توپولوژی CDN پراکنده
- هزینهی نگهداری بسیار بالا است.
- RTT توسط چندین نقطه اتصال، بسیار طولانی میشود.
- استقرار پیکربندیهای جدید دردسرساز است.
CDN تلفیقی (CDN سطح بالا)
CDNهای ادغامشده (تلفیقی) از تعداد کمی PoPهای با ظرفیت بالا تشکیل شدهاند، که بهصورت استراتژیک در مراکز داده اصلی قرار دارند و میتوانند به جمعیت بیشتری سرویسدهی کنند. با تکامل اتصال به اینترنت، این توپولوژی شبکه توانسته است رویکرد مدرنتری نسبت به “CDN پراکنده” برای توزیع محتوا اتخاذ کند.
مزیت اصلی توپولوژی تلفیقی، زیرساخت متمرکز آن است که مدیریت چابک و استقرار پیکربندی سریع را ممکن میسازد؛ این موارد هم به نفع کاربران نهایی و هم به نفع اپراتور شبکه است و کنترل بیشتر و پاسخگویی کلی بهتری را ارائه میدهد.
علاوهبراین، PoPهای با ظرفیت بالا انعطافپذیرتر هستند، که این قابلیت بهویژه در مورد کاهش حملات DDoS حائز اهمیت است.
علیرغم تمامی مزایای ذکرشده، توپولوژی تلفیقی در مناطق کم اتصال نمیتواند مؤثر باشد، زیرا PoPهای با ظرفیت بالا نیاز به استقرار پیچیدهتری دارند، که همین مسئله مانع از گسترش سریع شبکه میشود.
مزایای استفاده از توپولوژی CDN تلفیقی
- سرورهای با ظرفیت بالا برای کاهش حملات DDoS بهتر هستند.
- استقرار پیکربندی چابک (Agile) را فعال میکند.
- هزینه نگهداری کمتری دارد.
معایب استفاده از توپولوژی CDN تلفیقی
- کارایی پایینی در مناطق با اتصال کم دارد.
- RTT توسط چندین نقطه اتصال بسیار طولانی میشود.
- استقرار PoPهای با ظرفیت بالا سختتر است.
Pull CDN و Push CDN: کدامیک بهتر است؟
امروزه تعداد ارائهدهندگان CDN رو به افزایش است و کارکردی مشابه یکدیگر دارند. با استفاده از سرورهای استراتژیک در سراسر جهان، محتوا در سریعترین زمان ممکن به بازدیدکنندگان وبسایتها تحویل داده میشود. از طریق این سرورها، درخواستهای صفحهی وب سریعتر پاسخ داده میشوند و سرور مبدأ تحت فشار ترافیک قرار نمیگیرد.
از نظر معماری CDN، بهینهسازی محتوای وبسایت به دو روش امکانپذیر است: Pull CDN و Push CDN. هر یک از این روشها نقاط قوتی دارند، که میتوانند در شرایط مختلف، کاربردی و مفید باشند.
Push CDN چیست؟
روش Push CDN به نوعی از شبکه تحویل محتوا اشاره دارد، که در آن سرورهای CDN مشابه نحوه عملکرد سرور مبدأ (Origin Server) عمل میکنند. در این سناریو، سرور مبدأ محتوا را بهصورت خودکار یا دستی مستقیماً به سرورهای CDN ارسال میکند و به آن لینک میدهد. سپس، محتوای آپلود شده روی سرورهای Cache مختلف در سراسر جهان قرار میگیرد و براساس درخواست کاربران، محتوا به سمت PoPها ارسال شده یا به اصطلاح Push میشود.
قانون اصلی در اینجا این است که شما بهعنوان مالک وبسایت، مسئول محتوایی هستید که توسط CDN به کاربران تحویل داده میشود. هنگامیکه محتوایی را به سرور CDN، Push میکنید، دقیقا همان محتوا به بازدیدکنندگانی که درخواست دیدن آن را داشتهاند، ارائه میشود.
مزایای استفاده از روش Push CDN
مزیتی که روش Push CDN دارد این است که به شما امکان انعطافپذیری بیشتری درمورد انتخاب ارسال محتوا میدهد. بهعنوان مالک وبسایت و خالق محتوای آن، میتوانید مستقیما مشخص کنید که کدام محتوا به سرور CDN ارسال شود، چه زمانی آن محتوا منقضی شود و چه زمانی باید بهروزرسانی شود. بنابراین، امکان استفاده از ترافیک راحتتر و بهینهتر میشود؛ محتوا فقط زمانی در سرور CDN آپلود میشود که تغییراتی ایجاد شود، و این مسئله میزان ترافیک را پایین نگه میدارد.
Pull CDN چیست؟
روش Pull CDN کاملا برعکس روش Push CDN است. در این روش، خود CDN مسئول تحویل محتوای مناسب به بازدیدکنندگان وبسایت است. اتفاقی که در Pull CDN میافتد این است که شما، بهعنوان مالک وبسایت، محتوا را در سرور مبدأ رها کرده و URLها را بازنویسی میکنید تا به CDN اشاره کند.
سرورهای CDN بهطور اتوماتیک محتوای استاتیک را از سرور مبدأ واکشی (Fetch) کرده و یک کپی از این محتوا را برای کاربرانی که آن را درخواست میکنند، ارسال میکند. سپس، سرور CDN این نسخه از صفحه را تا زمانی که منقضی شود، کَش (Cache) میکند.
مزایای استفاده از روش Pull CDN
مزیت اصلی Pull CDN این است که تنظیم و پیکربندی آن بسیار آسان است، زیرا خود CDN بیشتر کارها را برای شما انجام میدهد. همچنین، به دلیل اینکه سرور CDN تنها با یک درخواست، همهی عناصر و فایلهای صفحهی وب را Pull میکند، مصرف ذخیرهسازی (Caching) را نیز به حداقل میرساند.
با این حال، روش Pull CDN نیز میتواند مشکلاتی به همراه داشته باشد، زیرا انعطافپذیری کمتری نسبت به Push CDN دارد. در واقع داشتن ترافیک اضافی رایج است، زیرا عناصر و فایلهای صفحه وب، حتی قبل از تغییر، مجددا درخواست میشوند.
همچنین، Pull CDN میتواند در مقایسه با Push CDN کندتر باشد، زیرا بازدیدکنندگانی که برای اولین بار به صفحه دسترسی پیدا میکنند یا کسانی که سعی میکنند پس از منقضی شدن عناصر و فایلهای CDN صفحه وب را باز کنند، ممکن است سرعت بارگذاری صفحه را کمی کندتر تجربه کنند.
Push CDN درمقابل Pull CDN
اگر فکر میکنید که انتخاب بین روش Push CDN و Pull CDN برای وبسایت شما، انتخاب بین مرگ و زندگی است، کاملا اشتباه میکنید! هر دو روش برای وبسایتها به خوبی کار میکنند و میتوانند وظیفه خود را برای مأموریتی که دارند (کاهش تأخیر و تسریع تحویل محتوا) انجام دهند. فقط در برخی موارد، یک روش بر دیگری ارجحیت دارد.
اما برای اینکه دید بهتری نسبت به انتخاب این روشها داشته باشید:
Pull CDN برای وبسایتهایی که ترافیک بیشتری دریافت میکنند، میتواند مناسبتر باشد؛ چون محتوا نسبتا ثابت میماند و ترافیک بسیار گسترده است. این روش برای زمانیکه میخواهید خیلی سریع، بدون نیاز به آپلود کردن دستی، سرورهای یک CDN را با وبسایت خود یکپارچهسازی (Integrate) کنید، بسیار مناسب است.
اما اگر وبسایت شما ترافیک کمی دارد، ممکن است Push CDN را ترجیح دهید؛ چون محتوا یکبار به سرور منتقل (Push) میشود، سپس تا زمانی که نیاز به تغییراتی داشته باشد، در آنجا باقی میماند. معمولا این روش برای زمانی که بخواهید محتوای بیشتر از 10 مگابایت را از طریق CDN تحویل دهید، پیشنهاد میشود.
معماری CDN
دو لایه اصلی در شبکه تحویل محتوا وجود دارد، که وظایف توضیح داده شده در بالا را انجام میدهند:
- لایه DNS: کاربران را به نزدیکترین سرور هدایت میکند.
- لایه پراکسی معکوس (reverse proxy): از سرور وبسایت تقلید میکند و دارای عملکردهای اضافی، مانند ذخیرهسازی یا افزودن قابلیت محافظت فایروال (Firewall Protection) است.
این مؤلفهها با هم کار میکنند تا زمان دریافت محتوا و ارائه خدمات به بازدیدکنندگان را کاهش دهند. این دو لایه، ویژگیهای اساسی یک CDN را تشکیل میدهند، زیرا لایه پروکسی معکوس میتواند شامل بسیاری از پراکسیهای معکوس مختلف باشد، مانند:
- پروکسی کَش (Caching Proxy) مانند Varnish Cache
- فایروال برنامه کاربردی وب (Web Application Firewall – WAF) مانند ModSecurity
- یک بات (Bot) که پروکسی معکوس را مسدود میکند
- یک پروکسی معکوس که تست A/B را فعال میکند
اگرچه CDNها ممکن است بر موارد مختلفی، مانند عملکرد یا امنیت تمرکز کنند، اما همه آنها به تنظیمات اولیه سرورهای توزیع شده و پراکسیهای معکوس نصب شده روی آن سرورها متکی هستند.
داشتن آگاهی لازم درباره معماری CDN و محل قرارگیری POPها و همچنین آگاهی از عملکرد سرورهای آن میتواند شما را نسبت به قابلیت اطمینان CDN مطمئن سازد. امیدواریم با مطالعه این مقاله، اهمیت طراحی معماری CDN را درک کرده و با توپولوژی CDN و مفاهیم Pull CDN و Push CDN به خوبی آشنا شده باشید.
اگر همچنان مردد هستید که “چرا باید از CDN استفاده کنیم؟” پیشنهاد میشود دو مقاله مهم شبکه توزیع محتوا چیست و مزایای CDN چیست را نیز مطالعه کنید.
ما در اَبر دِراک میخواهیم به شما کمک کنیم تا بهترین تجربه را در استفاده از سرویس CDN ایرانی داشته باشید. برای دریافت مشاوره رایگان، به صفحه “ارتباط با ما” مراجعه کنید.