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