מה שקורה בסייזינג נשאר בסייזינג?

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

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

הפעם אנחנו מתארחים במלון חדש, Resorts World, שמעבר להיותו מלון סופר דופר מפנק הוא גם אחת התחנות של ה Las Vegas Loop, אחד המיזמים היותר מוזרים של אלון מאסק. בעבר מאסק דיבר על ה Hyper Loop כפתרון אפשרי לתחבורה ציבורית מהירה, היה לו חזון לרשת מנהרות ואקום או יותר נכון תת לחץ בהן ישוגרו הנוסעים בקפסולות יעודיות. זה היה ניסוי מחשבתי מעניין ולאחר שמימן מחקר ראשוני בנושא מאסק שחרר את מסמכי המחקר לציבור על מנת לאפשר תחרות ופיתוח מהיר. היו מספר חברות שניסו להקים מייזם שכזה ביניהן וירג'ין של ריצ'רד ברנסון ולמיטב ידיעתי אף אחד מהמיזמים לא קיים יותר.

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

הרשת מאד מצומצמת עדיין, היא מכסה את חלקי ה Las Vegas Convention Center בשלוש תחנות ומקושרת אל Resorts world ושאר הרשת בשלבי תכנון או בניה ראשוניים אבל זה נראה לי מגניב ואני חייב לנסות, אדווח!

כל התמונות מאתר החברה כמובן.

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

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

התשובה היא, בעיני, לא.

תודה שקראתם וסוף שבוע נעים.

טוב בסדר זו בדיחה שעובדת פחות טוב בכתב אולי, תתעלמו. בכל מקרה התשובה היא כמובן לא והיא לא בגלל הרבה מאד סיבות. הסיבה הראשונה והעיקרית היא שבמרבית המקרים אנחנו פשוט לא יודעים מה הוא אותו עומס עבודה אליו אנחנו נדרשים לתכנן. תחשבו על כל שיחת אפיון שהייתם בה בחיים, כמה שאלות שונות נשארו ללא תשובה בשאלון שלכם, שאלון אמיתי או שאלון תיאורטי ובכל מקרה, שאלון. האם אתם יודעים אם האפליקציה מוטת כמות ליבות או מהירות ליבה? האם היא רגישה יותר לכמות זיכרון או ל מהירות תגובה מהדיסק? כמה מהמידע בדיסק הוא מידע חם וכמה קר? כמה מהר מתקרר המידע שאנחנו מחשביים כמידע קר? האם הקריאה והכתיבה נראו אותו דבר או שאנחנו כותבים רנדומלית וקוראים סדרתית? האם תהליכי ה Meta Data רצים במקביל לתהליכי user io או שמחכים ל off time? האם אנחנו מגדירים את כל ה over head כחלק מהעומס המתוכנן או מעבר אליו? מה לגבי אנומליות? מתקפות?

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

עכשיו תכפילו את העומס? עכשיו תכפילו את העומס פי עשר? עכשיו תכפילו את העומס פי 100? מתישהו, at scale, כל הנחות היסוד שעשינו עד עכשיו נשברות ולא תקפות יותר, מה שעובד על המחשב של המפתח לא בהכרח עובד על שרת פרודקשן ומה שעובד על שרת פרודקשן לא בהכרח עובד בקנה מידה של ספקית שירות קטנה ובדרך כלל לא עובד בקנה מידה של ספקית גדולה?

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

המקומות היחידים שאני מכיר שלוקחים מערכת לקצה ככה, אלו מקומות שמקריבים אמינות לטובת ביצועים. דמיינו מכונית Formula1 למשל, המכונה מתוכננת לעמוד בעומס מקסימלי למשך שעתיים, מתוחזקת על ידי צי של מהנדסים במשך כל השבוע בין המרוצים ומוחלפת כל שנה בדגם חדש יותר, מהיר יותר (לא תמיד מהיר יותר ראו המקרה של מרצדס בזמן האחרון למשל 😊), וזה נכון גם למשל, לפעמים, בסביבות HPC, אנחנו לא מתכננים מערכות כאלו לריצה ארוכת טווח, אנחנו לא צריכים את המערכת הזו לתפקד 100 אחוז במשך עשורים קדימה, אנחנו מקריבים את שרידות המערכת לטובת ביצועים, אנחנו רוצים לקצר את הזמן לקבלת המענה, תוצאת החישוב, שאלת המחקר.  

טוב יצא ארוך יותר ממה שחשבתי,

כמו תמיד מאד אשמח לשמוע מה חשבתם (הבת שלי ראתה שאני עובד על הפוסט הזה ושאלה אם אני מפורסם ואמרתי שלא אבל יש לי כמה עוקבים קבועים ואני גאה על כל אחת ואחד!),

בברכת בשורות טובות,

שישובו כל החטופים והחטופות במהרה אמן וכל החיילים והחיילות בריאים ושלמים!

שלכם כרגיל,

ניר מליק

Got Silk?!

בפוסט הקודם סיפרתי לכם שהצטרפתי לחברת קמינריו והיום זה הזמן לחשוף את המותג החדש שלנו, Silk!

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

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

אפשר לראות שיש קשר ישיר בין גודל הדיסק ב GB וכמות ביצועי ה IOPS העומדת לרשותו. אפשר לראות בהערות גם שיש כמות ה CPU וכמות ה IOPS בגלל ששרתים עם יותר CPU יכולים לגבל הקצאת תקשורת נדיבה יותר, Network egress caps. משמעות הדברים היא שיתכנו מצבים בהם לקוחות צריכים לשלם על נפח דיסק ריק כדי לקבל יותר משאבי ביצועים ועל מעבדים מיותרים כדי לקבל יותר משאבי תקשורת אל הדיסקים.

זה נראה כמו עולם הסטורג' של לפני 15 שנה כלקוחות נאלצו לקנות "עוד ספינדלים" כדי לקבל עוד ביצועים.

אמזון קצת יותר מתוחכמים וקצת יותר קרובים למערכות All Flash של העשור האחרון כי הם אומרים ללקוחות שלא צריך לקנות עוד נפח בשביל ביצועים, אפשר לשלם ישירות על הביצועים. הם קוראים לזה Provisioned IOPS (io1), הלקוח במקרה הזה צריך לשלם פרמיה גם על הנפח וגם על הביצועים אבל לא צריך לשלם על "נפח ריק".

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

השימוש ב SDP מאפשר לנתק את הקשרים האלו. אנחנו מייצרים שכבת אבסטרקציה כפולה שמנתקת את נפח הדיסק שבסופו של דבר צריך להתאחסן איפשהו ובין ביצועי הדיסק שמסופקים משכבת ה Compute שלנו אל שכבת ה Compute של הלקוח. הניתוק הזה מאפשר להתחיל לחסוך בכסף כי כבר לא חייבים את הדיסקים המהירים ביותר ואנחנו מוסיפים לכך יכולות שרידות ברמת הפלטפורמה שלנו ככה שאפילו לא צריך דיסקים Persistent מתחת לפלטפורמה, דיסקי SSD נדיפים הם כל מה שנדרש.

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

כלי שימושי נוסף שאנחנו מאפשרים ללקוחות הוא סנפשוטים רזים. תהליך יצירת סנפשוט בענן הוא תהליך ארוך ויקר. ב AWS למשל, בתהליך יצירת הסנפשוט מועתק המידע אל S3 ובכל סנפשוט נוסף יש להעתיק מידע נוסף, את המידע החדש. אנחנו מאפשרים ליצור סנפשוטים מידיים, מבוססי הצבעות בלבד, כך שאין צורך להזיז מידע או לשלם על נפח מידע נוסף ולכל סנפשוט ניתן לייצר View כלומר להשתמש בסנפשוט כהעתק עצמאי של המידע לשרתים אחרים, test/dev או אנליטיקה וכו'.

אנחנו רואים בבמוצע חסכון של 3:1 בשימוש ביכולות חסכון בנפח ולפחות עוד 30% חסכון על ידי שימוש בThin Provisioning וזה אומר שרק על ידי זה שריכזנו את המידע של הלקוח והכלנו עליו את היכולות האלו, הלקוח צורך עכשיו פחות מרבע מהנפח שהוא צרך קודם ובגלל שאנחנו לא נסנכים על ביצועי הדיסקים של תשתית הענן הרבע הזה הוא בדיסקים זולים יותר מהדיסקים הקודמים!

בפעם הבאה נדבר קצת על ביצועים, בתקווה ועד אז אבין את זה מספיק טוב בעצמי 😊

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

עדכון לפוסט!

כמו מהשמים שלחו לי לינק לסרטון הזה היום, החל מדקה 16:54 בערך אפשר לראות בדיוק כמה מורכבות האופציות לבחירת דיסקים ב AWS והתאמת ה EC2 instance לבחירה שלכם.

כבונוס, יש שם הדגמה של יכולות של blktrace. ביחד עם blkparse, btt ועוד סקריפט פייטון קטן (כן כן הרבה חלקים זזים) אפשר ממש להציג באופן קריא ונוח עד כמה ה IO שהשרת שלכם עושה הוא Sequential או Random, נתון שהרבה פעמים חסר לנו כשאנחנו באים לעשות סייזינג מסודר למערכות סטורג', אם אתם מאלו שעוד עושים כאלו דברים 🙂

credit AWS: https://youtu.be/wsMWANWNoqQ
credit AWS: https://youtu.be/wsMWANWNoqQ

כמו תמיד אשמח מאד לשמוע מכם!

שלכם,

ניר מליק