העיקרון הזה הוא חלק מעמודת האופטימיזציה של הביצועים ב-Google Cloud Well-Architected Framework. הוא כולל המלצות שיעזרו לכם לשלב גמישות, כלומר היכולת להתאים את המשאבים באופן דינמי על סמך שינויים בדרישות של עומס העבודה.
גמישות מאפשרת לרכיבים שונים במערכת להתרחב באופן עצמאי. התאמת המשאבים בצורה ממוקדת יכולה לשפר את הביצועים ולחסוך בעלויות, כי המערכת מקצה משאבים בדיוק במקומות שבהם הם נדרשים, בלי להקצות יותר מדי משאבים או פחות מדי משאבים.
סקירה כללית של העקרונות
דרישות הביצועים של מערכת משפיעות ישירות על המועד והאופן שבהם המערכת מתרחבת אנכית או אופקית. צריך להעריך את הקיבולת של המערכת ולקבוע את העומס שהמערכת צפויה לטפל בו כבסיס. לאחר מכן, צריך להגדיר איך המערכת תגיב לעלייה ולירידה בעומס.
כשהעומס גדל, המערכת צריכה להרחיב את הקיבולת שלה בצורה אופקית, להגדיל את הקיבולת שלה בצורה אנכית או לבצע את שתי הפעולות. כדי לבצע הרחבה אופקית, מוסיפים צמתים משוכפלים כדי לוודא שלמערכת יש קיבולת כוללת מספקת שתענה על הביקוש המוגבר. במקרה של הרחבה אנכית, מחליפים את הרכיבים הקיימים באפליקציה ברכיבים עם קיבולת גדולה יותר, יותר זיכרון ויותר נפח אחסון.
כשהעומס יורד, המערכת צריכה להקטין את קנה המידה (אופקית, אנכית או גם וגם).
מגדירים את הנסיבות שבהן המערכת תבצע הגדלה או הקטנה של הקיבולת. תכננו להגדיל את הקיבולת של המערכות באופן ידני בתקופות ידועות של עומס תנועה גבוה. אפשר להשתמש בכלים כמו התאמה אוטומטית לעומס (automatic scaling), שמגיב לעלייה או לירידה בעומס.
המלצות
כדי לנצל את הגמישות, כדאי לעיין בהמלצות שבקטעים הבאים.
תכנון לתקופות של עומס שיא
צריך לתכנן נתיב יעיל להרחבת הקיבולת עבור אירועים ידועים, כמו תקופות צפויות של עלייה בביקוש מצד הלקוחות.
כדאי לשקול להגדיל את הקיבולת של המערכת לפני תקופות ידועות של עומס תנועה גבוה. לדוגמה, אם אתם ארגון קמעונאי, אתם מצפים שהביקוש יעלה במהלך מבצעים עונתיים. מומלץ להרחיב אנכית או אופקית את המערכות באופן ידני לפני המכירות האלה, כדי לוודא שהמערכת תוכל להתמודד באופן מיידי עם העומס המוגבר או להתאים באופן מיידי את המגבלות הקיימות. אחרת, יכול להיות שיחלפו כמה דקות עד שהמערכת תוסיף משאבים בתגובה לשינויים בזמן אמת. יכול להיות שהקיבולת של האפליקציה לא תגדל מספיק מהר, ולכן חלק מהמשתמשים יחוו עיכובים.
במקרה של אירועים לא ידועים או לא צפויים, כמו עלייה פתאומית בביקוש או בתנועה, אפשר להשתמש בתכונות של התאמה אוטומטית לעומס כדי להפעיל התאמה דינמית לעומס שמבוססת על מדדים. המדדים האלה יכולים לכלול את ניצול המעבד, קיבולת ההגשה של מאזן העומסים, זמן האחזור ואפילו מדדים מותאמים אישית שאתם מגדירים ב-Cloud Monitoring.
לדוגמה, נניח שיש לכם אפליקציה שפועלת בקבוצת מופעי מכונה מנוהלים (MIG) של Compute Engine. האפליקציה הזו דורשת שכל מופע יפעל בצורה אופטימלית עד שהשימוש הממוצע במעבד יגיע ל-75%. בדוגמה הזו, אפשר להגדיר מדיניות של התאמה אוטומטית לעומס שיוצרת עוד מופעים כשניצול המעבד מגיע לסף. המופעים החדשים שנוצרו עוזרים לספוג את העומס, וכך לוודא ששיעור השימוש הממוצע במעבד יישאר אופטימלי עד שיגיע למספר המופעים המקסימלי שהגדרתם עבור ה-MIG. כשהביקוש יורד, מדיניות התאמה אוטומטית לעומס מסירה את המופעים שכבר לא נחוצים.
אפשר לתכנן הזמנות של משבצות משאבים ב-BigQuery או לשנות את המגבלות של הגדרות התאמה אוטומטית לעומס ב-Spanner באמצעות המידרוג האוטומטי המנוהל.
שימוש בהתאמת גודל חזויה
אם רכיבי המערכת שלכם כוללים Compute Engine, אתם צריכים להעריך אם שינוי גודל אוטומטי (autoscaling) חיזוי מתאים לעומס העבודה שלכם. התאמה אוטומטית לחיזוי של גודל הקבוצה חוזה את העומס העתידי על סמך המגמות ההיסטוריות של המדדים שלכם – לדוגמה, ניצול המעבד. התחזיות מחושבות מחדש כל כמה דקות, כך שהמידרוג האוטומטי מתאים במהירות את התחזית שלו לשינויים האחרונים בעומס. בלי התאמה אוטומטית לעומס מבוססת-חיזוי, מידרוג אוטומטי יכול לשנות את הגודל של קבוצה רק באופן תגובתי, על סמך שינויים בזמן אמת בעומס. התאמה אוטומטית לעומס מבוסס-חיזוי פועלת עם נתונים בזמן אמת ועם נתונים היסטוריים כדי לתת מענה לעומס הנוכחי ולעומס הצפוי.
הטמעה של ארכיטקטורות ללא שרתים
כדאי להטמיע ארכיטקטורה בלי שרת (serverless) עם שירותים בלי שרת (serverless) שהם גמישים מטבעם, כמו השירותים הבאים:
בניגוד להתאמה אוטומטית לעומס בשירותים אחרים שדורשים כוונון מדויק של כללים (לדוגמה, Compute Engine), התאמה אוטומטית לעומס ב-serverless היא מיידית, ויכולה להקטין את מספר המשאבים לאפס.
שימוש במצב Autopilot ב-Kubernetes
לאפליקציות מורכבות שדורשות שליטה רבה יותר ב-Kubernetes, כדאי לשקול מצב Autopilot ב-Google Kubernetes Engine (GKE). מצב טייס אוטומטי מספק אוטומציה ומדרגיות כברירת מחדל. GKE מתאים באופן אוטומטי את מספר הצמתים והמשאבים בהתאם לתנועה. GKE מנהל את הצמתים, יוצר צמתים חדשים לאפליקציות שלכם ומגדיר שדרוגים ותיקונים אוטומטיים.