סילומיות

במדעי המחשב ובאלקטרוניקה (כולל חומרה, תקשורת ותוכנה), סילוּמיוּת או מדרגיות (לעיתים קרובות משתמשים גם במילה סְקֵילָבִּילִיוּת בשאילה מ-scalability מאנגלית) היא היכולת של מערכת, רשת או תהליך, להתמודד בצורה אלגנטית עם כמות הולכת וגדלה של עבודה, או היכולת לגדול כדי לתת מענה לגידול בכמות העבודה. לדוגמה, המושג יכול להתייחס ליכולת של מערכת להגדיל את התפוקה שלה תחת עומס גובר כאשר מוסיפים לה עוד משאבים (בדרך כלל חומרה). ניתן להשתמש במושג במשמעות דומה גם בהקשר מסחרי. במקרה כזה סילומיות של חברה תרמז על מודל עסקי המאפשר צמיחה כלכלית בתוך החברה. סילומיות, כתכונה של מערכות, הוא מושג שבדרך כלל קשה להגדיר אותו, ובכל מקרה לגופו יש צורך להגדיר את הדרישות הספציפיות לקבלת סילומיות עבור אותם הפרמטרים שמייחסים להם חשיבות. זהו נושא חשוב ביותר במערכות אלקטרוניקה, בסיסי נתונים, נתבים ועבודה ברשת (networking). מערכת שהביצועים שלה משתפרים ביחס דומה ליכולות שנוספו לה כתוצאה מהוספת חומרה, נחשבת למערכת סקיילבילית (scalable system). נאמר כי אלגוריתם, תכנון, פרוטוקול תקשורת, תוכנה, או מערכת אחרת הם בעלי יכולת להתאים את עצמם בגודלם (to scale), אם הם יעילים ושימושיים גם כאשר מיישמים אותם למצבים "גדולים" (למשל קלט נתונים גדול או מספר גדול של צמתים (nodes) במקרה של מערכת מבוזרת). אם מערכת כושלת כאשר עומס העבודה גדל, אין לה את היכולת להתאים את עצמה בגודל - היא אינה סקיילבילית. רעיון הסילומיות רצוי בטכנולוגיה כמו גם במסגרות עסקיות. הרעיון הבסיסי הוא דומה – היכולת של עסק או של טכנולוגיה לקבל נפח עבודה גדל מבלי לפגוע ב-contribution margin (ההפרש בין הפדיון לעלות משתנה). לדוגמה, ציוד מסוים יכול להיות מסוגל לשרת עד 1,000 משתמשים, ומעבר ל-1,000 משתמשים יידרש ציוד נוסף, או שהביצועים ייפגעו (העלות המשתנה תגדל ותקטין את ה-contribution margin). סילומיות ניתנת למדידה בכמה ממדים שונים, כגון: סילומיות מנהלתית (administrative scalability) - היכולת של מספר הולך וגדל של ארגונים לחלוק בקלות מערכת מבוזרת יחידה. סילומיות פונקציונלית (functional scalability) - היכולת לחזק מערכת על ידי הוספת פונקציונליות חדשה, תוך השקעת מאמץ מינימלי. סילומיות גאוגרפית (geographic scalability) - היכולת לשמור על רמת ביצועים ושימושיות גם לאחר התרחבות ממצב של התרכזות באזור מקומי אחד, לצורה מפוזרת יותר גאוגרפית. סילומיות עומס (load scalability) - היכולת של מערכת מבוזרת להרחיב ולצמצם את מאגר המשאבים שלה כדי להתאים את עצמה לעומסים כבדים או קלים יותר. לחלופין, זאת יכולה להיות מידת הפשטות שבה מערכת או רכיב ניתנים לשינוי, הוספה או הסרה, על מנת להתאים לעומס משתנה. נהוג לחלק את השיטות להוספת משאבים נוספים לשתי קטגוריות רחבות: הכוונה בסילומיות אופקית היא להוספת צמתים (nodes) נוספים למערכת, כגון הוספה של מחשב חדש עבור יישום תוכנה מבוזר. דוגמה לכך יכולה להיות התרחבות (scaling out) מעבודה עם שרת רשת אחד לעבודה עם שלושה שרתים. ככל שמחירי המחשבים יורדים והביצועים שלהם ממשיכים להשתפר, מערכות זולות "רגילות" (commodity" systems") יכולות לשמש עבור יישומי מחשב הדורשים ביצועים גבוהים כגון יישומים לאנליזה סייסמית ויישומים לעיבוד נתונים ביוטכנולוגי, אשר בעבר היו ניתנים להרצה רק על ידי מחשבי-על. ניתן לחבר מאות מחשבים קטנים לאשכול על מנת להשיג כוח חישובי מצטבר שלעיתים קרובות עולה על זה של מחשבים מדעיים מבוססי מעבד RISC מסורתי. הכוונה בסילומיות אנכית היא להוספה של משאבים לצומת יחיד במערכת, בדרך כלל על ידי הוספת מעבדים או זיכרון לאותו המחשב. הרחבה "אנכית" כזאת של מערכות קיימות מאפשרת להן גם להשתמש בטכנולוגיות וירטואליזציה בצורה יעילה יותר, בכך שהיא מספקת יותר משאבים המתחלקים בין מערכות ההפעלה והיישומים השונים שמורצים על גבי המחשב. הניצול של משאבים מסוג זה, גם הוא יכולת להיקרא "scaling up". דוגמה לכך יכולה להיות הגדלת מספר תהליכי Apache daemon הרצים בו זמנית. לשני המודלים יתרונות וחסרונות. מספר גדול של מחשבים עלול לגרור קושי בניהול המערכת, כמו גם מודל תכנותי מורכב יותר ובעיות בתפוקה ובזמן ההשהייה במעבר הנתונים בין צמתים. בנוסף לכך, יש יישומים שאינם מתאימים לעבודה במודל חישוב מבוזר. בעבר, הבדלי המחירים בין שני המודלים העניקו יתרון לשיטת ה-"scale out" (הגדלת מספר המחשבים), עבור יישומים שהתאימו לפרדיגמה הזאת, אבל פיתוחים חדשים בטכנולוגיות וירטואליזציה טשטשו יתרון זה, מאחר שפריסה של מערכת וירטואלית חדשה מעל hypervisor (היכן שניתן), היא כמעט תמיד פחות יקרה לעומת קנייה והתקנה של מערכת אמיתית.