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