ארכיון יומי: 9 נובמבר, 2011

עוד שרתים לאוויר

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

זה התחיל בכך שהיום כל "שירות" באינטרנט מהקטן ועד לענק מקבל את התואר "ענן" – מילה שיווקית. וכלה בכך שאנשים בטוחים שריבוי שרתים = ביצועים טובים יותר.

אז הבעיה היא שאנשים כבר לא חושבים ומשקיעים בלכתוב מערכות טובות ויעילות (אולי למעט ארתיום ?), אלא אומרים "מה הבעיה, תמיד אפשר להוסיף עוד מכונה". ואז הופכים את המילה high availability לעוד מילת שיווק ריקה מתוכן.

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

ואז אנחנו מגיעים לתשתיות. שמעתי מהרבה מנהלי תשתיות בארץ את התשובה "אז מה אם מהווינדוז שלי אני יכול להפיק רק 80 בקשות בעוד שבלינוקס תוכל לספק לי 100 בקשות על אותה מערכת ? אז אני אוסיף עוד שרת". תארו לכם שבשביל 5 שרתי לינוקס אתם תהיו צריכים בגישה הזו 10 שרתי ווינדוז, ותעשו חישוב האם זה כלכלי ? או אם יש לכם 20 שרתי לינוקס, זה כבר 40 שרתי ווינדוז… תכפילו ב2 בשביל התוצאה ותראו האם המערכות שלכם מתאימות למה שאתם צריכים. כמובן שסיפקתי את ווינדוז כדוגמה חייה, אבל זה לא כל הסיפור, אלא רק ניסיון להסביר את הבעיה בצורה פשוטה.

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

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

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