הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
לשרת את כל אתרי החדשות בארץ בעזרת... CppCMS
אני לא יודע אם שמתם לב, אבל בשנה האחרונה קצב הפיתוח של תשתית CppCMS ירד בצורה ניכרת. ריכזתי את מרבית המאמצים במערכת פרסום מיוחדת הבנויה על תשתית ה־CppCMS שפותח עבור לקוח.
הפרויקט נקרא ליניקום.
היום, כשליניקום כבר פעיל זמן רב ומתוחזק ע"י צוות מורחב, אני אוכל להקדיש יותר זמן לתשתית CppCMS עצמה.
מספר מילים על "ליניקום":
"ליניקום" הוא מנוע שמביא פרסומות תלויות תוכן ומותאמות למשתמש לאתרים שונים בקלות רבה. מרבית אתרי החדשות הגדולים בארץ משתמשים בשירותי ליניקום, ביניהם: ynet, הארץ, מאקו, Jerusalem Post, ואללה ועוד רבים אחרים כולל מספר אתרים גדולים בחו"ל.
להלן כמה עובדות מעניינות:
- ליניקום מבוססת על טכנולוגית CppCMS
- המערכת משרתת כ־10,000,000 פניות המותאמות למשתמש ביום - קרי כ־115 פניות בשניה.
- בשעות העמוסות הקצב מגיע לכ־160 פניות בשניה.
- השרת מייצר תעבורה יוצאת ממוצעת של כ־11 מגאביט בשניה.
- צריכת זיכרון הכוללת של המערכת (שרת וואב, בסיס נתונים, יישום, מערכת ההפעלה) הוא בסביבות 360MB
- העומס הממוצע על המעבדים הוא כ-5%
- השרת רץ על c1.medium instance בודד ב־Amazon EC2
המערכת רצה מאחורי lighttpd ומשתמשת ב־PosgreSQL לשמירה וניהול הנתונים בצורה אינטנסיבית, עם זאת, מרבית הנתונים הנדרשים בזמן אמת שמורים ומנוהלים בזיכרון.
כמעט כל פניה לשרת דורשת עיבוד נתונים על מנת לספק פרסומות מותאמות אישית, מבחינה טכנית, זה אומר שלא ניתן לעשות "מיקור חוץ" של הפניות האלה לקבצים הסטטיים וכל פניה של כל לקוח צריכה להיות מטופלת בנפרד.
מערכת הפרסום הזו, היא הדוגמה הקלאסית לשימוש בטכנולוגיית CppCMS - מערכת שצריכה להיות מהירה ואפקטיבית. מערכת שמסוגל להתמודד עם עומסים גבוהים ולעתים חריגים ללא בעיות ולספק איכות השירות גבוהה ביותר.
שימוש בנתונים השמורים בזיכרון, ניהול נתונים שלא יכולים להיות שמורים בזיכרון מטמון - זה המקום בו יכולות CppCMS באות לידי ביטוי במלואן. יכולת גדילה גבוהה עם דרישות תחזוקה מינימליות, אמינות גבוהה - האם אלה שמאפשרים לדאוג לצד העסקי בלי לחשוב על בעיות ביצועים אפשריות.
תגובות
מדהים! סתם לשם השוואה, אם היית צריך לכתוב מערכת דומה המבוססת על LAMP - מה היו דרישות המערכת המוערכות לדעתך?
תראה, ב-LAMP זה היה הרבה יותר קשה לבנות את המערכת בגלל שבכלל מאוד קשה לשתף מידע בין פניות שונות לשרת ובכלל היה צריך לפתח מספר כלים נוספים.
אם כבר להשוות ל-Java/JSP או Django, Rails ודברים אחרים.
בכל אופן - כיוון שלממש את המערכת הזו די מסובך אני לא אכנס להשוואה. המספרים מדברים בעד עצמם.
אתה אשם במפגע שקרא ליניקום? ☺ סתם, אני יודע שאתה לא אשם בשימוש הנורא שעושים בשירות, אבל השיכתוב של קישורים כדי שיעברו דרך ליניקום ראוי לגינוי חמור. מזל שקל לחסום את השכתוב הזה.
האמת, מעבר לקישורים יש שם עוד כמה סוגי פרסום נוספים שלדעתי לא מציקים ומאוד יפים.
אלו ביצועים ממש מרשימים.
הוסף תגובה:
חובה לאפשר JavaScript כדי להגיב.