ניצול הגמישות

Last reviewed 2024-12-06 UTC

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

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

סקירה כללית של העקרונות

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

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

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

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

המלצות

כדי לנצל את הגמישות, כדאי לעיין בהמלצות שבקטעים הבאים.

תכנון לתקופות של עומס שיא

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

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

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

לדוגמה, נניח שיש אפליקציה שפועלת בקבוצת מופעי מכונה מנוהלים (MIG) של Compute Engine. האפליקציה הזו דורשת שכל מופע יפעל בצורה אופטימלית עד שהשימוש הממוצע במעבד יגיע ל-75%. בדוגמה הזו, אפשר להגדיר מדיניות של התאמה אוטומטית לעומס שיוצרת עוד מכונות כשניצול המעבד (CPU) מגיע לסף. המופעים החדשים שנוצרו עוזרים לספוג את העומס, וכך לוודא שהשימוש הממוצע במעבד יישאר בשיעור אופטימלי עד שיגיע למספר המקסימלי של מופעים שהגדרתם עבור ה-MIG. כשהביקוש יורד, מדיניות שינוי הגודל האוטומטי מסירה את המופעים שכבר לא נדרשים.

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

שימוש בהתאמת גודל חזויה

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

הטמעה של ארכיטקטורות ללא שרת (serverless)

כדאי להטמיע ארכיטקטורה בלי שרת (serverless) עם שירותים בלי שרת (serverless) שהם גמישים מטבעם, כמו השירותים הבאים:

בניגוד לשינוי גודל אוטומטי בשירותים אחרים שדורשים כוונון עדין של כללים (לדוגמה, Compute Engine), שינוי הגודל האוטומטי ב-serverless הוא מיידי, ויכול להקטין את מספר המשאבים לאפס.

שימוש במצב Autopilot ב-Kubernetes

לאפליקציות מורכבות שדורשות שליטה רבה יותר ב-Kubernetes, כדאי לשקול מצב Autopilot ב-Google Kubernetes Engine‏ (GKE). מצב אוטומטי מספק אוטומציה וגמישות כברירת מחדל. ‫GKE משנה את גודל הצמתים והמשאבים באופן אוטומטי על סמך התנועה. מערכת GKE מנהלת את הצמתים, יוצרת צמתים חדשים לאפליקציות שלכם ומגדירה שדרוגים ותיקונים אוטומטיים.