להתגלגל עם Ruby On Rails – חלק ג'

במאמר הקודם סקר זהר ארד את מנגנוני ה-Cache וההשפעות שלהם על סביבת הפיתוח. הפעם מתרכז ארד במדדי הביצועים ויכולות ה-Scalability.

ruby-vs-php2בפוסטים הקודמים הסברתי את יתרונות השימוש בתשתית רובי און ריילס (חלק א'). ופרטתי על מנגנוני cache ויכולת העבודה מול מסדי נתונים (חלק ב'). בפוסט זה, השלישי מתוך ארבעה, נדבר קצת על הביצועים ועל הגודל:

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

מדד ה Scalability (עברתנו ל'גדילות') מתייחס ליכולת של היישום להגדיל תפוקה ביחס להגדלת המשאבים הזמינים לו. לדוגמה, אם יישום X ישרת 1000 בקשות בשניה ע”ג שרת אחד, ו 2000 בקשות בשניה ע"ג שני שרתים, יהיה ניתן לומר שליישום יכולת גדילות לינארית.
השאלה האם ריילס הינה תשתית בעלת ביצועים טובים ויכולות גדילות טובות הינה שאלה מעט בעייתית מכייוון שהתשובה כרוכה ברובה לא בריילס עצמה (או בכל תשתית פיתוח אחרת לצורך העניין) אלא בעיקר ביישום הנדון, צורת כתיבתו, החומרה עליו הוא מופעל ועוד כהנה וכהנה. למעשה, כל אתר, בהגיעו לגודל מסויים, יאלץ להתמודד אם בעיות של גדילות, ללא קשר לתשתית עליה נכתב.
אולם, ישנם שני היבטים שכדאי לקחת בחשבון בקשר לרובי ולריילס הקשורים בעיקר לביצועים. הראשון הינו רובי, הנחשבת עדיין לשפה מעט איטית בגירסאות שלפני 1.9 (הגירסה הנוכחית), בה הוכנסו שיפורי הביצועים   משמעותיים ביותר. השני הינו מגוון כלי העבודה שריילס מספקת בכדי להאיץ ולהקל את הפיתוח (לדוגמה Object-Relational-Mapping – הרכיב הממפה מחלקות ביישום לטבלאות במסד הנתונים). השימוש בכלים אלו מביא איתו מחיר של ירידה מסויימת בביצועים מכיוון שהוא כרוך בהרצת קוד נוסף (ולכן זמן הרצה וצריכת משאבים נוספים). חשוב לציין שהיבט זה אינו ייחודי לריילס, ולמעשה כל שימוש בתשתית פיתוח כרוך בתשלום מס ביצועים על חשבון רווח במהירות או קלות פיתוח.
למעשה, השאלה החשובה בכל הקשור לביצועים אינה 'כמה מהר ריילס עובדת בהשוואה לתשתית X' אלא 'כמה מהר נוכל להגיע ליעדינו אם נשתמש בריילס כתשתית'. המחיר העתידי שאולי נשלם בביצועים אם נבחר בתשתית זו או אחרת הוא כאין וכאפס לעומת התפוקה שנרוויח בהווה אם נשתמש בתשתית המאפשרת לנו לתכנת במהירות, ביעילות ובאופן המוזיל את עלויות הפיתוח (הגבוהות פי כמה מעלויות חומרה חדשה).

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

אם נרצה להגיע למחוז חפצנו במהירות וביעילות, ריילס תהווה ללא ספק בחירה מצויינת. ואם נוכל בדרך גם להנות ולחסוך כסף, על אחת כמה וכמה. ובינתיים ? בעודנו מחכים לחלק ד' שיעסוק בריילס בסביבת העבודה (התקנה, פריסה, עורכי קוד וכו'), נוכל לבקר באתר הרובי-און-ריילס הישראלי –  לקרוא, להתעדכן, להחכים ואף לתרום לקהילת הריילס הישראלית.

זהר ארד

בן 35, קיבוצניק שהדרים לעיר הגדולה, מפתח client-side בנשמתו (מטהקפה, קול הקמפוס 106fm ואחרים). משתמש מקינטוש מושבע (שחוטא גם בלינוקס בשעות הפנאי). מעדיף הכל פשוט, מינימליסטי ועובד טוב ומשתדל להמנע מדברים עם הלוגו של מיקרוסופט ונהגי מוניות כעסנים. אוהב הרבה Web, מתובלת בג'אווהסקריפט, HTML, CSS, פייתון ורובי, ספרים, פפאיות ומוזיקה מהחנות (בדיסק המקורי). מתנודד תדיר בין אקזיסטנציאליזם לאינדיבידואליזם ונכון להיום עדיין אוחז ב-fetish לא מוסבר לצבים.

הגב

4 Comments on "להתגלגל עם Ruby On Rails – חלק ג'"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 
Sort by:   newest | oldest | most voted
Erez Ben Shoham
Guest

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

זהר
Guest

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

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

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

eladmeidar
Guest

פעם ראשונה שאני נתקל במאמרים נורמליים על רובי און ריילס בעברית, ישר כוח.

דנה
Guest

אם כבר תרגומים – אולי "זמזומילים" במקום זמזומי מילים? מתבקש :)

wpDiscuz

תגיות לכתבה: