BinaryVision

CDN למתחילים

מאת בתאריך 26/03/12, תחת כללי

ככל שאתר הופך להיות פופלרי יותר, המשאבים הנדרשים מהשרת שמארח אותו עולים, ככל שיש יותר מבקרים השרת נאלץ לנצל יותר רוחב פס, להריץ יותר תהליכים ולבצע יותר קריאות לכונן קשיח. כל אלו יובילו בסופו של דבר לניצול מלא של השרת והוא לא יוכל לשרת מעבר לכמות מסויימת של מבקרים. הפתרון הפשוט הוא רכישה של שרת בעל מפרט טוב יותר (מהירות כונן, כמות זכרון, חיבור מהיר יותר…), אבל לאתרים קטנים שמתחילים לגדול זה לא תמיד אפשרי מבחינה כלכלית.

הפתרון שיוצג כאן מבוסס על CDN – Content Delivery Network, הוא יהיה ממוקד ברעיון של Reverse Proxy ופחות ברעיון של ביזור המידע, למרות שמידע סטטי מטבעו עם הגישה אליו הוא ישמר על שרתי CDN שונים ובכך יהפוך להיות מבוזר. הפתרונות כולם בחינם, אך דורשים דרכי יישום שונים ועליהם נעבור.

The Coral Content Distribution Network

או בקיצור, CoralCDN. קיימת מ-2004 ומציעה את שירותיה בחינם לכל דורש, ללא צורך בהרשמה. ההטמעה של השירות היא על-ידי ניתוב מחדש ל-Domain שלהם (nyud.net) כאשר הכתובת האתר הישנה משמשת כ-Subdomain. הנה מספר דוגמאות:

www.binaryvision.co.il -> www.binaryvision.co.il.nyud.net
www.binaryvision.co.il/example -> www.binaryvision.co.il.nyud.net/example
www.binaryvision.co.il:80 -> www.binaryvision.co.il.80.nyud.net

ניתן להטמיע את השינויים הללו ברמת השרת וואב (דוגמה מ-Apache, שימוש ב-mod_rewrite), נניח ואני רוצה שהתוכן שנמצא בספריה 'images' יטען דרך ה-CDN, אני אכניס את החוק הבא ל-htaccess:

RewriteEngine on RewriteCond %{HTTP_USER_AGENT} !^CoralWebPrx RewriteCond %{QUERY_STRING} !(^|&)coral-no-serve$ RewriteRule ^/images/(.*)$ http://%{HTTP_HOST}.nyud.net/images/$1 [R,L]

הקריאה הראשונית עדיין תגיע לאתר, אך טעינת התוכן עצמו תתבצע דרך ה-CDN, כך שהבקשה עדיין תופיע בלוג של השרת. CoralCDN מטמינה את המידע ל-12 שעות (היא לא תבצע בדיקה לשינוי בתוכן לפני כן), לכן אם רוצים לשנות את התנהגות זו צריך לעשות שימוש ב-mod_expire:

<IfModule mod_expires.c> <Location /images/> ExpiresActive on ExpiresDefault "access plus 60 minutes" </Location> </IfModule>

השימוש ב-CoralCDN אינו מוגבל אך ורק לספקי תוכן (אתרים) אלא גם למשתמשים פרטיים שמעוניינים לעשות שימוש ברשת המבוזרת של CoralCDN, וזאת על-ידי הוספת הדומיין nyud.net לאתרים בהם הם מבקרים. לעוד מידע בקרו באתר הבית של CoralCDN.

CloudFlare

הוקמה ב-2009 וכיום יש לה 14 ארונות בחוות שרתים באזורים שונים בעולם. הם דורשים הרשמה לשירות שלהם (בחינם) וההגדרה היחידה שהמשתמשים שלהם צריכים לעשות, זה לכוון את הבקשות DNS לדומיין לשרתי DNS של CloudFlare.

דרך הפאנל ניהול של הדומיין קובעים איזה סאב-דומיין יעבור דרך השרתי CDN של CloudFlare ואיזה לא (משמע גישה ישירה לשרת):

לעוד מידע, בקרו באתר הבית של CloudFlare.

Incapsula

גם כן הוקמה ב-2009, ובבעלותה 9 ארונות בחוות שרתים באזורים שונים בעולם. הם דורשים הרשמה ומציעים חבילה בחינם. בשביל לעשות שימוש בשרתי CDN של Incapsula יש לעשות שימוש בשרתי DNS שלכם ולבצע הפניית CNAME לכתובת שהוקדשה לכם (במקרה של Naked Domain, תצטרכו להפנות לכתובות IP).

למידע נוסף, בקרו באתר הבית של Incapsula.

פריסת שרתים

CoralCDN:

CloudFlare:

Incapsula:

ולסיכום השוואה

CoralCDN CloudFlare Incapsula
הרשמה לא כן כן
תעבורה כ-10 גיגה ביום, עם תנאים נוספים. לא נאמר במפורש 25 גיגה בחודש
שרתים מאות ברחבי העולם 14 ארונות בחוות שרתים באזורים שונים בעולם 9 ארונות בחוות שרתים באזורים שונים בעולם
מערכת ניהול לא כן כן

 
הפתרונות החינמיים שהוצגו כאן יתאימו לכל מי שיש אתר קטן שמתחיל לגדול והוא מתקשה לספק את הביקוש הגובר מצד המבקרים אך באותו הזמן אין ביכולתו להעלות את תקציב ההוצאות שלו על האירוח. הפתרונות החינמיים שהוצעו כאן יכולים גם להתאים לאתרים שנחשבים לבינוניים מבחינת כמות מבקרים, עם זאת, יש כבר לשקול פתרונות מקצועיים יותר שלא נדונו כאן.
 

קישורים למידע נוסף:

http://en.wikipedia.org/wiki/Content_distribution_network

http://en.wikipedia.org/wiki/Reverse_proxy

http://en.wikipedia.org/wiki/Coral_Content_Distribution_Network

http://en.wikipedia.org/wiki/CloudFlare

http://en.wikipedia.org/wiki/Incapsula

:, , , , ,
5 תגובות:
  1. Fate

    מעניין,
    רגע אז מה זה השירות של Amazon? עם השרתים וכל זה, מה זה נותן?

  2. iTK98

    Amazon S3 או EC2 (וגם CloudFront) הוא שירות של מיחשוב מבוזר שאתה משלם לפי המשאבים שאתה צורך (תעבורה, קריאות, עיבוד). השירות S3/EC2 מבוסס על אשכול שרתים (Clustered), האתר שלך למעשה גדל עם כמות הגדלה של המבקרים, ואתה משלם תעריף קבוע (Per Gigabyte, CPU) למשאבים שהאתר שלך צורך. (S3 מדבר על אירוח של קבצים, EC2 מדבר על מחשוב ענן, ו-CloudFront מדבר על CDN מובהק. הראשון יתאים לאירוח קבצים סטטים ישירות על שרתי אמזון, השני יתאים לקבצים דינמיים, והשלישי יבצע את הביזור עם הגישה לאתר שלך)
    המודל הזה לא יתאים לאתרים שאינם מרווחים כסף מהמבקרים שלהם (פרסום, מכירה), שכן למעשה יותר מבקרים באתר יובילו להוצאות גבוהות יותר באירוח של S3/EC2.
    אמזון לא מספרת יותר מדי על איך הרשת שלה בנויה, אבל נראה שיש לה 5 נקודות הימצאות בעולם (PoP) ובכל מיקום קיים אשכול של שרתים שגם גודלו לא ידוע (סביר להניח שמדובר בעשרות שרתים לפחות).
    הם מציעים שנה בחינם (משאבים מוגבלים) לנרשמים חדשים (S3 או EC2) לא יצא לי לבדוק זאת.

  3. אבי קינן

    CoralCdn הוא ה-CDN הכי איטי שקיים,
    בנוסף, הפניית ה-REWRITE שכתבת ל-images, רק תאט את הטעינה עוד יותר.

    בד"כ, מי שצריך CDN מחזיק אתר ריווחי, לכן הוא ישתמש בפתרונות בתשלום והרבה יותר יעילים,

    אני משתמש ב-MaxCDN לכמה פרוייקטים בארה"ב/אירופה, מאוד זולים ויעילים, אין להם שרתים בישראל.

    2 נקודות לסיום:
    1. החברה השולטת בתחום היא AKAMAI, המחיר הממוצע ל-1TB עומד על 400$.
    2. אתר שיושב על שרת בישראל ופונה לשוק הישראלי, לא צריך CDN.

  4. iTK98

    ההפניה תאט בגלל האופן שבו היא נכתבה או בגלל שיש שימוש ב-CoralCDN? אני מבין כי ישנה האטה מכך שהקלינט צריך ליצור חיבור חדש להוסט חדש (dns query) ולשלוח בקשה חדשה. במקרה של קבצים קטנים אכן תהיה האטה, אך במקרה של קבצים גדולים (שכבר הוטמנו) ההפניה תפחית את העומס מהשרת. במקרה של CoralCDN הבקשה באה אחרי שניגשו לאתר בגלל המודל שלהם, ולא לפני שניגשו לאתר (המודלים הנפוצים יותר שבהם אתה צריך לשנות את ההפניית DNS שלך) לכן המודל הזה במהותו איטי יותר.

    אין כאן ויכוח שהשירותים שהוצעו כאן "איטיים" (חוטא בהכללה) או שהם לא בסטדנרטים של שירותים אחרים בתשלום. מה שנדון כאן מיועד לשוק מסויים שאינו מעוניין להגדיל את ההוצאות אך צריך לתת מענה למספר לקוחות שגדל מבלי לשנות את המודל העסקי שלו.

  5. אבי קינן

    ההפנייה תאט בין 0.1 ל-0.3 שנייה לכל תמונה, הפנייה לוקחת זמן נוסף.

    מעבר לכך, CDN הוא פתרון מעולה,
    הנקודה היא ש-CORALCDN מאוד מאוד מאוד איטיים,
    הנה ווידאו שמשווה טעינה בין השרת שלי ל-CORAL (אחרי שבוצע PULL לתוכן):
    http://yui.co.il/q0rhs

השאר תגובה

מחפש משהו?

תשתמש בטופס למטה כדי לחפש באתר: