הבדלים בין Snapshot לגיבוי

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

על מנת להדגים זאת, ניקח שני מימושים שונים שיהיו מוכרים לרוב הגולשים:

  • מימוש ראשון VMWare Snapshot
  • מימוש שני – AWS Snapshot

נאמר שיש לנו VM שיש בתוכו קובץ טקסט שבו כתוב "חץ קנה פיתה". נשמור את הקובץ וניצור Snapshot. עתה, נפתח את הקובץ הנ"ל ונשנה את הטקסט כך שיהיה כתוב "חץ קנה פיתה עם פלאפל". נשמור את הקובץ באותו שם.

עכשיו נעקוב אחר התהליך הנ"ל מקרוב. ברגע שיצרנו את ה-Snapshot לאותו VM, הוא מתחיל בגודל 0 בתים (או משהו קרוב לכך, יכול להיות שה-snapshot יכלול בתים ספורים בהתחלה). ברגע שערכנו את אותו קובץ טקסט ושמרנו אותו, הוא אינו שומר את השינוי לדיסק הקשיח הוירטואלי, אלא שומר אותו לתוך ה-snapshot. אם נבדוק, נוכל לראות שגודל ה-snapshot גדל בכמות הבתים שהוספנו לאותו קובץ טקסט (את הדברים הרבה יותר קל לראות "מבפנים" אם משתמשים במערכת ZFS, שהיווה "השראה" ל-VMWare כיצד ליצור snapshots). אם לאחר שיצרנו קובץ Snapshot, עבר זמן ויצרנו קובץ snapshot חדש, כל השינויים שניצור מעתה ישמרו ב-Snapshot החדש, וה-snapshot הקודם יעבור למצב read only.

המימוש השני של snapshot לשם הדוגמא יהיה AWS EBS Snapshot: הקמנו Instance (כלומר VM) עם מערכת ההפעלה שבחרנו, ולאחר מכן ביצענו מספר שינויים בהגדרות, הוספנו אפליקציות ועוד, וכעת אנחנו יוצרים Snapshot ב-AWS. ה-Snapshot הראשון שניצור ישמור את השינויים מהקמת ה-VM עד לרגע זה. אם ניצור Snapshot נוסף, הוא ישמור את השינויים שנוצרו מאז ה-Snapshot הראשון, כלומר כל שינוי שביצענו אחר ה-Snapshot הראשון ישמר בדיסק EBS ולא ב-snapshot ורק אם ניצור snapshot נוסף, השינויים יועתקו אליו.

המימוש של AWS Snapshot מאוד דומה לגיבוי אינקרמנטלי שאפשר ליצור עם תוכנת גיבוי לטייפ או VTL – אנחנו קודם כל יוצרים גיבוי מלא, ולאחר מכן כל גיבוי אינקרמנטלי מגבה בעצם את השינויים (Delta) מאז הגיבוי המלא האחרון.

מכאן נעבור לנקודה היותר "פילוסופית" – האם snapshot יכול להחליף את מקומו של הגיבוי? זה תלוי.

במקרים כמו VMWare התשובה היא "לא ממש" הואיל ויצירת Snapshot הוא דבר שצריך לבצע "ידנית". המערכת לא תיצור עבורך snapshot אוטומטית (למרות שלמערכת יש בהחלט דבר שנקרא Changed Block Tracking שמופעל אוטומטית ובכך המערכת יודעת לזהות כל שינוי שבוצע בדיסק, ואין זה משנה איזו מערכת הפעלה מדובר, כי אותה מערכת עובדת בבלוקים, לא ב-File system) ולכן גיבוי של המערכת ע"י תוכנת גיבוי (Veeam, Arcserve ושאר תוכנות) היא דבר חשוב ואף הכרחי.

בעננים ציבוריים כמו AWS לעומת זאת, יש צורך לעבוד בשיטה שונה (שלצערי יש לא מעט שמתחילים לעבוד עם AWS ולא מפנימים זאת): ב-AWS כדאי לבנות את מכונות ה-VM כ"שלדים" (templates) ולשמור את הקבצים המשתנים ב-EFS או ב-S3. כך, בונים VM, מגדירים את הדברים הקבועים, מוסיפים סקריפט שידע להעתיק את הקבצים הנחוצים מ-S3 או EFS, יוצרים snapshot ולאחר מכן ממירים את זה ל-Image בפורמט AMI סגור. נדפק ה-VM? פשוט מקימים חדש מה-AMI כשאחד הפרמטרים הוא בעצם הרצה של הסקריפט שיצרנו כך שלאחר הקמת ה-VM/Instance – הוא יעתיק את הקבצים וידווח לנו מה כתובת ה-IP הפנימית של ה-VM החדש.

ב-ZFS הדברים שונים. מכיוון ש-Snapshot ב-ZFS אינו תופס מקום בדיסק (0 בתים), ישנה שיטה פשוטה ליצור אוטומטית snapshots כל זמן שתרצה. אני לדוגמא עובד עם ZFS שיוצר snapshots כל שעה, כל יום, כל שבוע, כל חודש, כל שנה – ומגדיר את המערכת שתשמור לי 50 snapshots אחורה. מבחינת שרידות, ZFS תומך במערך RAID (שנקרא RAIDZ) עד רמה שלישית (כלומר: המערכת יכולה לתפקד עד למצב שבו יש שלושה דיסקים תקולים) עם תמיכה מלאה ב-Hot Spare. מעבר לכך, מערכת ZFS נותנת גם "להשתולל" עם מערכי RAIDZ כך שניתן להקים שתי מערכות RAIDZ3 ולצוות אותן יחד כ-RAIDZ1. בזבוז מטורף של דיסקים? בהחלט, אבל למי שיש תקציב – בכיף. מה עם גיבוי לטייפ? יש כאלו שמגבים אחת לזמן מה לטייפ ויש כאלו שפשוט מעדיפים להשתמש בתשתית ה-ZFS ופקודות ה-send/receive המובנות על מנת לגבות את ה-ZFS למערכת מרוחקת. (אפשר כך לבנות אחסון DR בזול. אגב, מקומות רבים בחו"ל משתמשים בשיטה הזו).

לסיכום: "snapshot אינו מחליף גיבוי" – זו הצהרה שאינה נכונה תמיד. יש מקרים שזו הדרך היחידה שלך לגבות (עננים ציבוריים), ויש מקרים שמימוש ה-Snapshots (כמו ב-ZFS) אינו מצריך גיבוי לקלטת כל יום. לגיבוי יש מקום חשוב ול-snapshot יש גם מקום חשוב וביטול אחד ו"הילול" הדרך השניה אינה בהכרח התשובה הנכונה.

שינויים בעולם ה-IT בחברות

כפרילאנסר, אני מפרסם פה ושם ש"אני מחפש עבודה" או "אני מחפש עבודות". אם תשימו לב, אינני מפרסם אלו תחומים אני מחפש בהם עבודה, מהסיבה הפשוטה שאם ההצעה שמגיעה אליי נוגעת לתחום שלי ואני יכול לבצע אותה – אקח אותה בשמחה. אם לא – אפנה אותה לאחד מחבריי הפרילאנסרים (לחבריי הפרילאנסרים המעוניינים, יש פורום שהקמתי בפייסבוק, אתם מוזמנים להירשם). כמו שמישהו אמר לי פעם: תחרות תמיד תהיה, אבל תמיד כדאי לעזור גם לחבריך המתחרים, אולי זה יחזור אליך בצורה טובה. אז אם יש לכם פרויקט או שאתם מחפשים פרילאנסר – צרו קשר.

אחד התחומים שהייתי רוצה להיכנס אליו (וזה מאוד קשה) הוא תחום ה"בין לבין": נניח ויש לנו את אלון, איש לינוקס בחברה גדולה ואלון החליט לעזוב את החברה לטובת משרה בחברה אחרת או שהחברה החליטה לאמר שלום לאלון. הכלל הפשוט הוא, שככל שהחברה גדולה יותר, כמות הזמן שיקח לאייש את המשרה – ארוכה יותר, וכאן יכולה להיווצר הזדמנות לפרילאנסר לקבל אולי עבודה למספר שבועות או חודשים לאייש את המשרה. מדוע זה קשה? כי זהו בדיוק התחום שחברות כמו מטריקס, Ness, One, SQLink ואחרות מכירות את הנפשות ומרוויחות יפה מהתחום.

יחד עם זאת, יצא לי בכמה פעמים לשוחח עם מספר מנמר"ים, CTO ומנהלי מחלקות IT. השיחה בד"כ נסובה על דברים שהם מחפשים במועמד הבא לאייש משרה בתחום ה-IT, ושמתי לב לכמה דברים מעניינים שאני רוצה לשתף עמכם:

  • הדרישות גדלו: אם פעם היו מחפשים אצל המועמד ידע ב-Windows, ידע התחלתי-בינוני בלינוקס, ידע ב-VMWare ואולי קצת ידע ב-Networking, הפעם רוצים שהמועמד יהיה בעל נסיון בתחומים שהם אינם IT כל כך: תדע Jenkins, GitLab, Code bucket – ולא מדובר על ידע של התקנת הכלי (כמה זמן לוקח להתקין Jenkins? דקות ספורות, לא כולל plugins שאינם רשמיים וכו') – אלא גם כתיבת Pipelines, ידע בניהול גרסאות ב-GIT, ידע ב-Docker, ידע ב-Kubernetes, ידע בהגדרות עננים ציבוריים (AWS, Azure ולפעמים גם GCP). לא שמעתי על הרבה שרוצים ידע ב-Terraform אבל אני מניח שאת זה הם משאירים לאיש DEVOPS (כן, Devops זה מתודות, אבל לך תתקן אנשים).
  • משכורות – אתה הולך לרכוש דירה? הולך להרחיב את המשפחה? הולכת להיות לך הוצאה גדולה? כדאי שתעזוב את תחום ה-IT לטובת תחומים אחרים יותר רווחיים. המספרים ששמעתי נעים בין 13-20K ברוטו. טוב לצעירים, פחות טוב לנשואים, אבות לילדים וכו' וכו'.
  • Kubernetes, Helm, Terraform, Ansible, AWS, Azure – ורצוי גם ידע ב-Python, אלו הדרישות שדורשים מאנשי Devops, חוץ מידע בכלי CI/CD. שימו לב: בסטארטאפים מצפים מכם שתלמדו הרבה יותר ממה שציינתי – ומהר. כלי נוסף שחברות עדיין לא ממש גילו ויש מצב שירצו להריץ אותו – נקרא KOPS. ממליץ לכם להכיר אותו.
  • שכר לאנשי Devops: משום מה במקומות רבים חושבים שהשכר של איש Devops אמור להיות שכר כמו של איש IT. עצתי לכם: תדעו למכור את עצמכם ולהתמקח. עם כל הכבוד לתחום ה-IT, איש Devops צריך לדעת הרבה יותר וללמוד מהר דברים חדשים, התחום מתקדם במהירות מטורפת!
  • אל "תינעלו" על ענן ציבורי מסוים! ידוע לי שבחברות גדולות רבות פשוט "מתים" על Azure, אבל בשוק יש המון חברות (ובמיוחד סטארטאפים) שמשתמשים ב-AWS ו-GCP ועדיף לכם להכיר את כולם. כל ספקי הענן הציבורי מציעים כמות קרדיטים חינמית בתור התחלה אבל זה לא תמיד מספיק (תזכרו: הקרדיטים הראשוניים הם לזמן קצוב בלבד של חצי שנה או שנה). לכן אני ממליץ: תתנחמדו לאנשי מכירות של ספקי הענן הציבורי ותבקשו בנימוס קרדיטים. טיפ קטן: אני ממליץ ללמוד את הנושאים דרך Linux Academy (למרות השם שלהם, הם מלמדים גם על דברים שאינם לינוקס) ולהשתמש ב-Lab שלהם, אתם תקבלו מספר מכונות וירטואליות חינמיות שפועלות במשך זמן קצוב.
  • קראו בין השורות לגבי משרות. בלא מעט מקרים באתרים כמו Alljobs ניתן לקרוא את המפרט של נושאים שהחברה רוצה שהמועמד ידע ויכיר, אבל לפעמים אפשר לראות שהחברה בעצם מחפשת איש Devops שיהיה גם איש IT ואם אפשר – שיכין קפה לפעמים. ממשרות כאלו אין הרבה לאן להתקדם, חפשו דברים שמתאימים לכם, לא להיות כלבויניקים.
  • הנה משהו מעניין ששמעתי ולא מאדם אחד: אין לכם נסיון (חוץ ממה שהתנסיתם בבית)? אל תבקשו לעבוד בחינם. אתם יכולים לדבר על משכורת התחלתית כלשהי שתעלה לאחר תקופה מסויימת/דיון שכר וכו' – והכי חשוב, להיות כן: אם אין לך נסיון מספק, תאמר זאת ותאמר שאתה מוכן בשביל זה להסתפק במשכורת כלשהי (עדיף לא לציין מספר). תנסו לתחמן, יש סיכוי גדול שיתפסו זאת ולא יזמנו אתכם להמשך תהליך.

תחום ה-IT עובר שינויים וחברות רבות מנסות "לדחוף" תחומים שאינם IT קלאסי למשרה. במקביל, יותר ויותר חברות עוברות לעננים ציבוריים וכמות משרות ה-IT מצטמצמת (רואים זאת כיום במיוחד בתחום התקשורת, אגב – זה שיש לך ידע מעולה עם CCNA זה נחמד, איך הידע שלך ב-VPC ושאר דברים הקשורים בתקשורת בענן מעבר ל-VPN?). העננים הציבוריים תופסים יותר ויותר מקום, החל מחברות קטנות, סטארטאפים ועד לחברות גדולות שכבר עושות מספר פעמים "חושבים" אם לרכוש ברזלים נוספים וכל עניין DEVOPS נהיה דבר מובן מאליו בתוך החברה.

המעבר לענן ציבורי – התהליכים המקדימים

דמיינו לעצמכם סיטואציה פשוטה: יש לכם 20 שרתים בחברה (פיזיים) שמערכת vSphere רצה עליהם. הכל מתקתק ועובד טוב עד שיום אחד האחראי על ה-vSphere בחברה מפוטר עקב סיבה כלשהי. האם יהיה קשה למצוא עובד חלופי לאותה משרה? לא ממש, השאלה למה אתה מצפה: אם לדוגמא העובד שפוטר היה כותב סקריפטים ב-Powershell או ב-PERL לאוטומציה של ה-vSphere ורוב העבודה היתה נעשית באוטומציה כלשהי ללא שימוש ב-GUI – אז כן, אתה תתקשה למצוא מחליף (וגם אם תמצא, תצטרך לשלם לו הרבה יותר ממה שחשבת). אם לעומת זאת אתה מחפש מישהו שינהל רק ברמת הממשק Web, תמצא לא מעט כאלו בקלות ותוכל לשלם להם משכורת יותר נמוכה אפילו (תלוי בכישורי המו"מ שלך והבטחון העצמי של המועמד). מצד שני, אם יש לך תקלות שמתאפיינות במסך סגול וגוגל לא ממש עוזר – תתכונן לשלם והרבה, בין אם זה ל-VMware או למישהו מומחה.

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

מה בעצם העבודה שהרוב יציעו ויעשו? הם יעשו מה שאני קורא "Copy Paste". נניח שיש 10 מכונות VM, הם פשוט יעלו אותן לענן כ-Instances, יקצו להן כתובות IP חיצוניות פר Instance (תתפלאו כמה חוסר מקצועיות יש בנושא), יגדירו Security Group שנושאת מטוסים יכולה לעבור דרכו, חס ושלום VPC חדש ונורמלי, או ניתובים קצת יותר מוקשחים. אם הלקוח מתעקש על Firewall, אז יתקינו איזה משהו שקיים ב-Market עם חוקים מאוד "רפים". אני לא מנסה "ללכלך", אני בדרך כלל מי שמגיע אחרי כן לבדוק מדוע הדברים לא עובדים טוב וזה מה שאני מוצא. אני כמובן שלא אומר שכולם כך, יש דווקא לא מעט אנשים מקצועיים בתחום.

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

בהעברת התשתית לענן יש לנו 3 מטרות חשובות:

  • הורדת המחיר פר מכונה
  • קבלת ביצועים יותר גבוהים
  • הגנה יותר נאותה.

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

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

כך ניתן להגיע למצב שבמקום "לזרוק" X מכונות VM לענן, אפשר לתכנן בצורה מיטבית מ-אפס את הכל ולנצל טכנולוגיות עכשוויות גם לקבל ביצועים יותר גבוהים וגם לשלם מחיר יותר נמוך  וכמובן – אבטחה הרבה יותר רצינית ומודרנית, לא רק חסימה של פורטים ב-Firewall.

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

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

בניית מכונות VM בצורה יותר טובה

תחום הקונטיינרים קיבל בשנים האחרונות דחיפה רצינית תודות לפתרונות כמו Docker, OpenShift, Kubernetes ומערכות רבות נוספות, ואחד הדברים הראשונים שכל מי שנכנס לעולם הקונטיינרים לומד הוא שקונטיינרים זה דבר זמני – אתה מפעיל, מכבה, וכל התוכן שבקונטיינר עצמו – נעלם, ולכן משתמשים בפונקציות כמו Volume (במערכות כמו Kubernetes יש לנו את PV/PVC) כדי למפות משאב חיצוני (כמו תיקייה במכונה) אל קונטיינר ושם יאוחסן המידע, כך שגם אם הקונטיינר נמחק, ה-DATA נשאר.

עם כל הכבוד לקונטיינרים, אף אחד לא הולך למחוק את כל מכונות ה-VM / instances שיש להם כדי לעבוד אקסלוסיבית עם קונטיינרים (יש כמובן כאלו, אבל לא ניכנס לזה בפוסט זה), אבל יש משהו חשוב שאפשר ללמוד מעולם הקונטיינרים וליישם במכונות VM.

הדבר שאני מדבר עליו – חלוקה.

נניח ואנחנו צריכים VM שיתן לנו שרות מסוים. נניח SQL, שרת Web, שרת GIT, ועוד ועוד, כל דבר שנותן לנו שרות. ברוב המקרים שאני ראיתי – מקימים VM, מתקינים עליו את מערכת ההפעלה הרצויה ואת האפליקציה שתתן לנו את השרות הרצוי. היכן יאוכסן ה-DATA שאותו אפליקציה תנגיש? בתוך ה-VM. אחרי הכל – תמיד אפשר להגדיל דיסקים וירטואליים, זכרון וכו'.

אבל הבעיה הכי גדולה במכונות VM כאלו שבונים – קשורה לשחזור נתונים. נניח שהקמנו שרת Gitlab או שרת MySQL או שרת SQL וכל הזמן זורמים אליו נתונים חדשים ועדכוני נתונים. לפתע מכונת ה-VM מפסיקה לפעול או שיש תקלה שיקח זמן לתקן אותה. מכיוון שזו מכונת VM, בדרך כלל אפשר פשוט לשחזר אותה מגיבוי (או אם בוצע snapshot לאחרונה).

הבעיה הגדולה משחזור גיבוי של מכונה כזו: אתם תאבדו נתונים שנכנסו מאז הגיבוי האחרון. נכון, במקרים של SQL או MySQL אפשר פשוט ליצור DUMP לפי הרצת שחזור ואז למחוק את הנתונים לאחר השחזור ולהעלות את ה-DUMP, אבל במקרים אחרים זה קצת יותר מסובך: מה אתם עושים עם שרת Gitlab לדוגמא שמאבד את הסנכרון? יש לכך כמובן פתרונות, אבל שוב – אפשר להימנע מכל הבעיות האלו.

איך נמנעים? די פשוט: מתחילים להשתמש בשרותי ה-Network File שקיימים, דוגמאות:

  • אם אנחנו מרימים MySQL או SQL של מיקרוסופט על לינוקס, אפשר למפות את התיקיות DATA שהשרות נזקק להן – למפות ל-NFS Share (אם אתם מריצים SQL של מיקרוסופט על לינוקס עם NFS, ודאו כי מדובר ב-NFS 4.2 וה-mount צריך לכלול את הפרמטר nolock)
  • אם אתם מרימים שרת אפליקציית GIT או שרת WEB – אפשר למפות ל-NFS את התיקיה שה-DATA עצמו (כמו קבצי php,html, גרפיקה וככו') יאוחסן. כל מה שצריך זה פשוט ליצור בסטורג' את ה-NFS Share ולבצע mount שיוגדר בקובץ fstab.
  • ב-Windows נשתמש באותן שיטות, רק עם SMB במקום NFS.

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

אני מניח שיהיו לא מעט מתנגדים לשיטה (במיוחד מנהלי סטורג' שפתאום מגיעים אליהם עם דרישות ליצור עוד ועוד NFS/CIFS Share) אך זו השיטה שבין כה תצטרכו להשתמש בה עם קונטיינרים בעתיד, ובסופו של יום – שיטה זו חוסכת זמן רב אם מכונה שנותנת שרות למשתמשים רבים נופלת באמצע היום ואין הרבה זמן לבדוק ולטפל בבעיה (במיוחד אם אין ידע מספק בחברה על התקלה ואיך לטפל בה), וזו בדיוק הסיבה שאני ממליץ לחברות ועסקים "להמיר" מכונות VM לעבוד בשיטה כזו ולחסוך זמן התאוששות. אגב, אחד המקומות שבהם גם תוכלו להשתמש בשיטה כזו היא בעננים ציבוריים (באמזון זהו שרות EFS שמספק NFS לכל ה-Instances שלך לדוגמא).

לסיכום: מכונות VM לא צריכות להיות "מפלצות VM" עם דיסקים בגדלים של מאות ג'יגה עד טרהבייטים. בדרך כלל אין צורך ש-VM מבוסס לינוקס לדוגמא יהיה בגודל של יותר מ-10-20 ג'יגהבייט. אם ה-VM נותן שרותים, אני ממליץ פשוט לאחסן את הנתונים לשרותים דרך NFS/CIFS, כך גם תקבלו מהירות read/write יותר גבוהה (דיסקים וירטואליים עדיין יותר איטיים בהשוואה ל-NFS "טבעי", אגב), וגם כשתצטרכו לשחזר מ-snapshot או גיבוי, לא תצטרכו לדאוג לגבי עניין האם ה-DATA החשוב מעודכן.

פרויקט נימבוס – מחשוב הענן הממשלתי

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

anan

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

  1. אחד הדברים הבולטים לטובה במסמך הוא התייחסות למחשוב ענן כמו שספקי הענן הציבורי מציגים ומוכרים ולא כל מיני "ענני צעצוע" שכל מיני חברות בארץ מציעות/מוכרות. התנאים עצמם ישר פוסלים את אותם "ענני צעצוע" בכך שיש דרישות שלספקים בארץ אין אותם, הן מבחינת הכנסות והן מבחינת Availability Zones (שמשום מה במסמך הם נקראים "Domains"), מיקומים גיאוגרפים וכו' ואף אחד מהספקים בארץ גם לא מציע 500+ שרותים שונים באותו ענן.
  2. אני שמח לראות שבמשרד האוצר מחפשים שהזוכה יקים בעצם Region אחד ובתוכו Availability Zones אולם לעניות דעתי, חשוב שבמשרד יתעקשו על כך שה-AZ יהיו במרחק רב אחד מהשני.
  3. נקודה שלדעתי חסרה במסמך וחשוב שתצוין (ושהמשרד יעמוד על כך) – שה-AZ יהיה מחובר בחיבורי תקשורת מספקי אינטרנט שונים ולא מספק יחיד. רק לפני חודשים ספורים אלפי אתרים נותקו מהאינטרנט עקב "תקלת תקשורת" של ספק אינטרנט מרכזי. האם משרד האוצר רוצה לחוות חוויה כזו?
  4. אם המתמודדים הם בעצם ספקי הענן הציבורי, מומלץ לבקש לדעתי במסמכי המכרז כי הספק הזוכה ייבא וישתמש בציוד שלהם ולא בציוד COTS. הציוד של ספקי הענן שונה לחלוטין מציוד שחברות רוכשות החל ברמת המעבדים, זכרונות, לוחות, אחסון, תשתיות תקשורת וכו' ויש סיבה טובה לכך – ביצועים הרבה יותר גבוהים.
  5. בבקשה, בבקשה – בלי Azure Stack. כתבתי כאן מדוע לא.
  6. נקודה נוספת שאולי כדאי שמשרד האוצר יחשוב לגביה – שה-AZ יהיו מחוץ ל-Data Centers של ספקי האינטרנט שונים במיקומים כמו הגליל ובאר שבע לדוגמא. בחירה במקומות כאלו יכולה לייצר באופן ישיר מספר מקומות עבודה ובאופן עקיף לאורך זמן – יותר ויותר חברות שיעבדו במקומות אלו.

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

  • מיקרוסופט – Azure
  • אמזון – AWS
  • גוגל – GCP
  • אורקל – Oracle Cloud
  • IBM Cloud

הסיבה? אם נלמד מההיסטוריה, בכל צומת אפשרית משרד האוצר בחר בפתרונות של מיקרוסופט, גם כשלא היה מדובר ב-Client. נכון, משרד האוצר גם בחר בפתרונות של רד-האט (ו-SuSE?) אולם במקרה הזה אני בספק אם מיקרוסופט לא תזכה. אחרי הכל, בשביל "לקוח" אסטרטגי כזה שהוא ממשלתי – מיקרוסופט תסכים לעשות כל פליק פלאק אפשרי. אם אמזון או גוגל יזכו – אהיה בהחלט מופתע.

יש משהו אחד שקצת לא מסתדר לי עם המכרז והפרויקט עצמו. כן, זה בהחלט דבר טוב שמשרד האוצר עושה צעדים להקים פה Region, אבל הבעיה הגדולה ביותר קשורה לשיטות העבודה והפיתוח במשרדי הממשלה השונים ושוחחתי בעבר עם לא מעט עובדים במשרדים הממשלתיים על כך: צריך לשנות מקצה לקצה את כל מתודות העבודה. להתחיל לעבוד מול GIT, לשלב CI/CD, אוטומציה, להוריד כמה שיותר את העבודה עם מכונות וירטואליות ולהתחיל לעבוד מול קונטיינרים ומול שרות/פלטפורמה כמו Kubernetes/OpenShift, לעבוד במתודה של Scale Out, להשתמש ב-Object Storage, להתחיל לעבוד במתודות Serverless אולי, ועוד ועוד – וכל אלו הם דברים שונים ממה שהמשרדים משתמשים כיום. אם משרד האוצר הולך לשלם על Region עם מספר AZ ושיטות העבודה ישארו השיטות הישנות, אז ניצול ה-Region יהיה אחוזים בודדים בלבד, ובכך יווצר בזבוז כספים משווע (ומה לעשות, לא מדובר פה בתשלום חד פעמי אלא חודשי), ולכן אני תוהה אם משרד האוצר מוכן כבר עכשיו לתכנן מהלך הדרגתי לעבור למתודות העבודה החדשות.

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

האם ה-Nvidia Grid עדיין רלוונטי?

כל מי שמתכנן וכל מי שהתחיל לעבוד עם מכונות וירטואליות בתצורת VDI בוודאי שמע ומכיר את ה-Grid של nvidia. פתרון ה-Grid מבוסס על מספר חלקים כמו ה-GPU, שרת רשיונות וכמובן חלקים נוספים הקשורים לפתרון ה-VDI עצמו בשרת וב-Client.

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

הבעיה קשורה יותר לכסף. בעבר הרחוק היית רוכש את פתרון התוכנה, את כרטיסי ה-GPU, מגדיר את הדברים ומתחיל לתת לעובדים שלך לעבוד, אבל כיום הדברים כרוכים בתשלום חודשי, והדברים מגיעים לכך שבחישובים של תשלום ל-3 שנים לדוגמא, עדיף לרכוש את הפתרונות של AMD המתחרה. שם אין תשלום חודשי והביצועים אינם פוחתים בהשוואה למה ש-nvidia נותנת, כולל פתרונות הדורשים OpenGL או DirectX 11/12 לעבודה, ויש תמיכה מלאה בפרוטוקולי Client של VMWare, של Citrix ושל מיקרוסופט.

אחד הנושאים שעולים לאחרונה בכל הקשור ל-Virtual GPU/Grid ותמיכה – קשור ל-AI ו-Deep learning. יותר ויותר חברות גדולות מגלות פלטפורמות כמו Tensor Flow או Caffe ומעוניינים לרתום את תשתית ה-Grid שלהם לשימוש עם אותם פלטפורמות.

טכנית – זה בחלט אפשרי. אם לדוגמא עובדים עם CUDA – אז אין שום בעיה להריץ/לאמן/לקמפל קוד גם על מעבד גרפי סופר פשוט שקיים במחשב נייד, ובוודאי שעל Virtual GPU אם הוא קיים על מכונות וירטואליות. האם זה יעבוד? כן.

אבל מבחינת ביצועים – כל כרטיסי ה-GPU מסידרה K,M,P במשפחת ה-GRID או Tesla או Quadro לא יתנו ביצועים גבוהים, במיוחד אם משתמשים בכרטיסים אלו לצרכי VDI – או אז במקרים כאלו המכונה מקבלת רק חלק קטן מה-GPU והביצועים .. בהתאם. כרטיסי Tesla או Quadro מסידרה V או T הרבה יותר מתאימים ליישומים אלו, אולם אם מדובר בכמות עבודה רצינית שאינה חד פעמית, אני ממליץ לנטוש מערכת GRID ולרכוש שרתים שיכולים להכיל מספר כרטיסי GPU ואז למפות מספר כרטיסים למכונה וירטואלית או מיפוי 1:1 בין GPU למכונה וירטואלית. יש כמובן גם אפשרות לרכוש כרטיסי RTX אולם כרטיסים אלו אינם מתאימים כל כך לשרתים הואיל והאיוורור שלהם הוא מהצד (Blower) ובמקרים רבים השרתים אינם בנויים לאיוורור כרטיסי GPU מהצד אלא מאחור.

נקודה חשובה לסיום: CUDA היא טכנולוגיה של Nvidia וחברות רבות משתמשות בטכנולוגיה זו במקום ב-OpenCL שנתמכת על ידי כל החברות האחרות. כבר בשנה הקרובה, אינטל הולכת להיכנס בסערה לשוק כרטיסי ה-GPU והיא תעשה את כל המאמצים לשכנע עסקים וחברות לרדת מ-CUDA ולהשתמש באותן פלטפורמות פיתוח עם OpenCL וכמובן – עם הכרטיסים שהיא תציע.

לסיכום: אם אצלכם בחברה חושבים להשתמש/לפתח בתחומי ה-AI או ה-Deep Learning, כדאי לחשוב על הנקודות שצוינו בפוסט זה. פתרונות ישנים לא תמיד מתאימים ולמרות הפתרונות של Nvidia – היא אינה השחקן היחיד בשוק ואין צורך לוותר על תאימות פלטפורמות כדי לעבוד לכרטיסי GPU אחרים או ל-OpenCL.

כמה מילים על Azure Stack וספקי אינטרנט

ספקי ענן ציבוריים, כמו ספקי שרות אינטרנט (ISP) מחפשים דרכים שונות כדי לגדול. אחת הבעיות הגדולות ביותר שיש לספקי ענן ציבורי הן חברות שהיו רוצות לזרוק את הכל לענן – אך אינן יכולות עקב סיבות בטחוניות, רגולציה, חששות שונים ועוד, ולפיכך החלו ספקי הענן להציע "שרות מקומי" – השרתים יושבים אצלך בחווה, ואתה מקבל מעין ענן קטנטן – עם כל המגבלות שתיכף ארחיב לגביהן. אמזון מציע שרות כזה בשם Outposts ומיקרוסופט מציעה את Azure Stack.

בישראל החלה חברת Med One להציע שרותים המבוססים על Azure Stack ואני מאמין שהמתחרים בארץ כבר במחשבות או בדרך לרכוש ולהציע את השרותים הללו. חשוב לי להדגיש – הפוסט הזה אינו בא "לקטול" ספק ISP זה או אחר אלא לתת דגש לגבי פתרון Azure Stack (אם יש איזו חברה בארץ שהולכת להכניס את ה-Outposts של אמזון – אשמח אם היא תוכל ליצור עימי קשר).

קצת על Azure Stack: מיקרוסופט פיתחה מערכת שהיא "מיני Azure". מיני בכל מובן: מעט מהשרותים שתמצא בענן של Azure תמצא אותם כאן, התמחור שונה בהשוואה להשכרה  קלאסית של מכונות VM/קונטיינרים/אחסון בלוק/אחסון אובייקטים וכמובן – תעבורה. על כל פיפס אתה צריך לשלם – כמו בענן של Azure, גם ב-Azure Stack (כן, גם אם רכשתם בעצמכם את ה-Azure Stack לחברה שלכם, אגב).

מערכת Azure Stack בנויה לשימוש ב-2 אופנים: Connected ו-Disconnected, כאשר ב-Connected אתם יכולים להעביר את התשתית הוירטואלית/מכונות/קונטיינרים/אחסון לענן האמיתי של Azure ובמצב Disconnected – האינטרנט מנותק, והכל רץ מקומית בארונות של ספק ה-Azure Stack שלכם (או אצלכם מקומית אם רכשתם את המערכת).

השאלה הראשונה שהכי חשובה שתישאל – למי זה מיועד? וכאחד ניטרלי שמסתכל מהצד, קשה לי לענות על כך. אם אתם רוצים לעבוד עם ענן של מיקרוסופט, לכו ישר ל-Azure. חברות בטחוניות? יכולות לרכוש בעצמן ולעצמן את המערכת (כל יצרני השרתים מוכרים – ממש "בזול" – 7 ספרות בדולרים!). אלו שחייבים שה-DATA שלהם ישאר רק בארץ? אולי הם.

החסרונות של Azure Stack לעומת היתרונות – גדולים:

  • הסיבה המרכזית שחברות עוברות לענן – זה ה-Scaling שאותו לא מקבלים באותה צורה ובאותו גדול בהשוואה לענן עצמו. כנ"ל לגבי שרידות – לכל ספק ענן ציבורי יש Zones ויש Regions ואפשר להקים שרידות נפלאה. איזו שרידות תקים ב-Azure Stack? בין שרתים שהכל מקומית? אנשים שוכחים בכל פעם את התקלות שיש פה לכל מיני ISP שמשביתות אלפי לקוחות במכה אחת, ובענן ציבורי אפשר לבנות מערכת שגם תעמוד ברעידות אדמה, זה לא כזה מסובך.
  • ביצועים – עם Azure Stack אנחנו חוזרים שוב למודל ה-Enterprise מבחינת ציוד, וזאת בניגוד מוחלט למה שיש בענן ציבורי: באף ענן ציבורי אין שרתי מותג, אין דיסקים Enterprise, אין מתגים של מותג מסוים – הכל בניה "מקומית", החל מרמת המעבד והזכרון וכלה באוורור, ובעברית: מכונת VM שרצה בענן תרוץ יותר לאט על השרתים הקנייניים שמריצים את Azure Stack כי גם המעבד וגם הזכרון שונים (ספקי ענן רוכשים גרסאות Custom של מעבדים וזכרונות הרבה יותר מהירים ממה שיש בשרתים הרגילים).
  • מחירים: בניגוד למצב רגיל שאתה לוקח מספק Hosting כלשהו מכונת VM נניח עם 4 ליבות, 8 ג'יגה זכרון, 40 ג'יגה דיסק ותעבורה של 5 מגהביט והכל כלול במחיר אחד – כאן הכל שונה, אתה משלם על כל פיפס בנפרד. נתראה בחשבונית החודשית (וכן – התכוונתי ל-Azure Stack. מיקרוסופט מכתיבה זאת).
  • שרותים – הבסיסיים נמצאים + עוד כמה שרותים. השאר? עדיין נמצאים רק בענן הציבורי.
  • תאימות API בין ריצה ב-Azure Stack ל-Azure הרגיל – חלקית בלבד. תצטרכו לעשות לא מעט פליק פלאק כדי להעביר דברים מהענן מקומית וההיפך.

מיקרוסופט מנסה כבר שנתיים למכור את ה-Azure Stack ואין לה הרבה הצלחה עם זה. היא גם מוציאה את Azure Stack HCI שמנסה להתחרות בפתרונות מקומיים (vSAN, Nutantix, Simplivity) שהיתרון היחיד שלו – זה אינטגרציה עם Azure. זה יכול להיות מעניין אולי עבור חלק מהחברות, רק שכדאי לקחת בחשבון שלהגדיר את הדברים שם – אתם תתלשו שערות מהראש.

לסיכום: אני לא מוצא ממש יתרונות לשימוש ב-Azure Stack מקומי או אצל ספק ISP. אם אתם צריכים משהו סגור וגדול – תחשבו על Open Stack כי גם עם Azure Stack תצטרכו צוות שלם (שעדיף שידע לינוקס) כדי לתחזק את הדבר הזה, שלא לדבר על כך שאתם תצטרכו לרכוש את הכל מחדש (אין אפשרות להשתמש בציוד קיים), רק שבמקרה של Open Stack אתם יכולים להשתמש בתשתית קיימת והוא גם הרבה יותר זול. אם אתם מחפשים להשתמש בגלל ה-Latency, אז תחשבו לשלב שימוש בשרות CDN וכך יהיה אפשר לנטרל חלק גדול מה-Latency.

מעבדי הדסקטופ החדשים של AMD

ביום ראשון, ה-7/7/2019, חברת AMD תשחרר רשמית את מעבדי הדסקטופ החדשים שלה במשפחת ה-Ryzen 3000. זה יהיה דור שלישי למשפחת ה-Zen (הראשון היה Zen, השני היה +Zen והשלישי Zen 2).

הדור החדש של מעבדי הדסקטופ מבית AMD מציג משהו שונה ומרענן: לראשונה, המעבדים של AMD נותנים ביצועים שאינם נופלים מהמעבדים של המתחרה המובילה, אינטל, לא רק באפליקציות המשתמשות ב-Multi Threaded (דבר ש-AMD ניצחה את אינטל עוד בדור השני בהשוואה למעבדים שאינטל הוציאה באותה תקופה) אלא גם לראשונה ב-Single Threaded, וגם הפעם מבחינת תמחור, AMD מציגה מחירים זולים בהרבה בהשוואה למה שאינטל מבקשים (מה שכמובן גורר כרגע הודעות בחדשות הטכנולוגיות שאינטל הולכת לחתוך את המחירים ב-עד 15%. אינטל כמובן לא מוכרת למשתמש הקצה כך שההנחה בסופו של דבר תגיע אולי ל-3-4%).

ישנם כמה דברים שאהבתי בהכרזה של המעבדים החדשים מבחינת תכונות, להלן חלק מהן:

  • תאימות אחורה: אינטל שוברת תאימות מבחינת תושבת מעבד – על ימין ועל שמאל. רוצה מעבד חדש? קנה בדרך גם לוח חדש. ב-AMD לעומת זאת עדיין עובדים עם תושבת ה-AM4 הידועה, ויש סיכוי גבוה שאם יש לך מערכת AMD עם תושבת AM4 ואתה מעוניין לשדרג למעבד עם 4-8 ליבות, תצטרך פשוט לשדרג BIOS, להחליף מעבד (ואת המאוורר – הוא כלול באריזה), להפעיל את המחשב ולהנות, גם אם המחשב שלך בן 3 שנים. ישנם מעבדים ל-AMD שממש לא מומלץ להריץ על לוחות ישנים (מעבדים עם 12 או 16 ליבות) עקב בעיות VRM, אבל רוב האנשים לא מחפשים לרכוש מעבדים כאלו.
  • מחשבה קדימה: AMD היא הראשונה לתמוך רשמית ב-PCIe 4.0 והלוחות אם החדשים שיצאו באותו תאריך כוללים את התמיכה הזו (ולפיכך מחירי לוחות האם יהיו יותר יקרים מבעבר). שוב, זה לא ממש רלוונטי לאלו שרוכשים מחשבים עבור הרצת משחקים, אבל אם צריך ביצועים יותר גבוהים מבחינת SSD NVME לדוגמא, היא שם. גם מבחינת חיבוריות חיצונית יש תמיכה לסטנדרט האחרון של USB (הכוונה ל-USB 3.1 Gen 2) ללא צורך בשבב נוסף על לוח האם.
  • חסכון בחשמל: ב-AMD עברו לתהליך יצור של 7 ננומטר, מה שמוריד את צריכת החשמל ואכן המעבדים החדשים צורכים פחות – במעבדים בקצה הנמוך, וכך מעבדים זהים מדור קודם של AMD שהצריכו 105 וואט מינימום – יורדים בדור החדש ל-65 וואט.

עם המעבדים החדשים נוצרות הזדמנויות חדשות ליצרני תכנים שמעוניינים בביצועים גבוהים מצד אחד, אך לא מעוניינים להוציא $1600 על מעבד 16 ליבות בקצה הכי גבוה (בהשוואה ל-AMD). מעבד כמו Ryzen 9 3950X יעלה לך .. 750$ (ואם יש לך לוח X470 קודם מהקצה הגבוה, לא תצטרך להחליף אותו, יספיק שדרוג BIOS, כל עוד אינך מבצע Overclocking). במבחנים ש-AMD פרסמה, כל תוכנות העריכה הפופולריות רצות יותר מהר על המעבדים של AMD בהשוואה למתחרים באותה כמות ליבות מבית אינטל.

לסיכום: משפחת ה-Ryzen 3000 עם ארכטיקטורת Zen 2 הם המעבדים הראשונים ש-AMD מוציאה אחרי 3 שנות עבודה על המעבדים הללו. החלק הבא יהיה קשור לשרתים, דור שני של משפחת מעבדי EPYC עם מעבדים הכוללים עד 64 ליבות במחיר זול בהרבה ממה שאינטל מבקשים ואחריו, לקראת סוף השנה, AMD תוציא את "המפלצות" – מעבדי Threadripper שמיועדים ליוצרי תכנים כבדים, תחנות עבודה וכו' ולפי השמועות – יצא גם מעבד Threadripper עם 64 ליבות (אם כי עם 4 ערוצי זכרון, בניגוד לאחיו הגדול EPYC שתומך ב-8 ערוצי זכרון).

כמה מילים על WSL 2

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

מיקרוסופט בשנים האחרונות ביצעה כמה שינויים על מנת לכלול תאימות למערכות אחרות. כך לדוגמא ה-command prompt הישן קיבל מתיחת פנים הן ב-Power Shell ומאוחר יותר גם בתאימות להצגת טרמינלים מרחוק (בחיבור SSH או Telnet). זה לא היה מושלם – אבל זה היה צעד חשוב, במיוחד כשמיקרוסופט החלו לשלב גם SSH Client בתוך Windows 10 לגרסאותיו השונות.

בכנס Build האחרון מיקרוסופט הציגה את ה-Windows Terminal שלה – שיפור משמעותי לעומת ה-CMD הישן והקונסולה של PowerShell. הפעם יש טאבים, תמיכה ב-Emoji, קאסטומיזציה ועוד ועוד. בקצרה זה נראה כך:

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

מכאן נעבור לנושא הפוסט: WSL 2.

למי שאינו מכיר, WSL (ראשי תיבות Windows Subsystem for Linux) זו מערכת שמיקרוסופט פיתחה שמשתלבת עם ה-NT Kernel (כן, Windows 10 מבוסס על NT, כמו רוב גרסאות ה-Windows בשנות ה-2000). המערכת הזו משמשת כ"מתרגם" מה-API של ה-Linux Kernel (גירסה 4.4 של ה-Linux Kernel) ל-NT API. בנוסף, המערכת גם דאגה להרשאות מיוחדות של קבצים ותיקיות כך שלא היה צורך ליצור Partition של לינוקס מצד אחד, ומצד שני קבצים בינאריים של לינוקס לא יכלו לרוץ על Windows שלא מותקנת בה WSL. כל הקונסטרוקציה הזו נועדה לתת מספר דברים:

  • לאפשר לבנות הפצות לינוקס ידועות שירוצו ישירות עם ה-WSL ללא צורך במערכת לינוקס ב-VM
  • לאפשר להריץ אפליקציות לינוקס בהתאם להעדפות שלכם.
  • אין צורך בלשלב קוד GPL כמו ה-Kernel לתוך המערכת.

הדבר הזה עבד לא רע… אלא אם היית רוצה להתחיל להשתמש בזה ברצינות עם המערכת, כמו לקמפל קוד, להתקין NPM וכל דבר שהיה קשור לקבצים – שם ה-WSL היה גרוע. כמה גרוע? אם נניח פעולה של פתיחת קובץ דחוס היתה לוקחת דקה במערכת לינוקס טבעית, עם WSL זה היה תהליך איטי מאוד (אתם מוזמנים להסתכל במבחני השוואה כאן), כך שכל מי שרצה להשתמש ברצינות ב-WSL היה יורד מזה מהר מאוד לאחר שהיה חווה את הביצועים האיטיים. מי שחשב להשתמש בקונטיינרים עם WSL או עם דרייברים של לינוקס היה מגיע למסקנה המרה ש-WSL לא יכול להריץ דברים כאלו. מצד שני – זה היה אחלה דבר בשביל להריץ דברים מרחוק כמו Ansible, התחברות למערכות מרוחקות עם מפתחות וכו' וכו'.

מיקרוסופט היו בהחלט מודעים לעניין, והם הבינו שהטריקים של המרה ל-NT-API לא ממש יעזרו. דרוש פתרון אחר ועדיף פתרון "טבעי".

התוצאה: WSL 2.

השינוי המהותי עם WSL 2 שהפעם יש מעין "מיני VM" קטן שעושה Boot ומטעין גירסה מאוד מקוצרת של ה-Kernel, אך ללא ה-1001 דרייברים שמגיעים עם ה-Linux Kernel וכל הדרייברים הנחוצים שלינוקס צריך – הוא מקבל אותם דרך דרייברים Paravirtualized (קצת מזכיר את ה-VMWare Tools שמתקינים). כך, מצד אחד ה-Kernel רץ בצורה מבודדת כ-VM קטנטן, ומצד שני מיקרוסופט לא צריכה להסתבך עם ה-GPL: הם ישחררו את שינויי הקוד שהם צריכים לשחרר ואין נגיעה ישירה לקוד של Windows.

בשיטה הזו, ה-WSL 2 מקבל מספר דברים:

  • אפשרות להשתמש בגירסת Kernel מודרנית (אני מאמין שמיקרוסופט תוציא מסמך איך לקמפל קרנלים משלך לשימוש ב-WSL 2)
  • אפשר להשתמש בדברים כמו cgroups, להריץ קונטיינרים (docker, cri-o וכו')
  • כל גישת ה-File/Directory תעבור דרך דרייבר שמיקרוסופט תשחרר ש"ידבר" עם NTFS, ומיקרוסופט טוענים כי בדיקות שלהם מראות כי הביצועים משתפרים פי 20 בהשוואה ל-WSL 1.
  • יותר אפליקציות יוכלו לרוץ.

עדיין קיימות מספר שאלות מהותיות: האם נוכל להשתמש בציודי USB? מה לגבי שימוש בלינוקס וכרטיסים פיזיים במערכת (כמו שימוש ב-CUDA מתוך ה-WSL 2), שימוש בדסקטופ גרפי (Wayland) ועוד – אבל אני מניח שבחודשים הקרובים נקבל על כך תשובות.

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

אחסון: כמה שווה השקט שלכם?

כל חברה בארץ שרוכשת ציוד למחלקת ה-IT, דורשת אחריות ולעיתים היא מוכנה לשלם מעט יותר בשביל להרחיב אחריות. לא מעט חברות בארץ רוכשות לדוגמא שרתים שמגיעים כברירת מחדל עם 3 שנות אחריות ואותן חברות מעדיפות לשלם מעט יותר ולהרחיב את האחריות החל מהיום הראשון למשך 5 שנים, כי מצופה שהשרתים ירוצו לפחות ל-5 שנים. אחרי הכל, כמעט אף חברה פרטית או ציבורית לא רוכשת שרתים שירוצו למשך שנה שנתיים ומשם הם יעברו גריטה (טוב, חוץ ממשרד הבטחון, לא ניכנס לזה…)

אחד הדברים שגורם לשמיטת לסת אצל מנמר"ים, CTO, מנהלי IT וכו' – הוא מחיר הארכת אחריות פוסט רכישה – במיוחד בסטורג'. בשרתים זה לא ממש issue – נגמרה האחריות, מתחילים להזמין שרתים, מחברים אותם עם ה-HBA לסטורג', עושים מיגרציה ל-Cluster וקדימה, מתחילים לעבוד עם הברזלים החדשים.

אבל בסטורג', להגדיר את הדברים, להחליט מה החומר שיעבור, למפות את הדברים מחדש וכו' – זה פרויקט, בין אם מדובר ב-NAS מסכן קטן ובין אם מדובר בסטורג' שהוא Cluster אימתני במחיר של 7 ספרות בדולרים.

אז מה קורה שסטורג' מסיים את חייו מבחינת אחריות ורוצים לחדש? תקבלו הצעת מחיר נחמדה שמתחילה ב-10000 דולר ויכולה להגיע גם ל-20-50 אלף דולר לשנה אחת. כולם כמובן ימליצו לכם לשלם, אבל בואו נפרוט את זה לרגע. אתם הולכים לשלם סכום של 10-50 אלף דולר (תלוי בסטורג') על:

  • 2-3 שיחות טלפון לשאול שאלות תמיכה
  • 1-2 דיסקים תקולים להחליף.

וזהו.. (כל הדברים הם כמובן בממוצע).

מה עם הטיעון של "שקט" או "ניהול סיכונים"? פתאום כל מנמ"ר שרואה נייר ובו כתוב המחיר הזה לשנה – זורק את טיעון ה"שקט" מהחלון! הוא פשוט יבקש מהאנשים למצוא פתרונות אלטרנטיביים.

ואז מגיעה השאלה הקשה: לבלוע את הגלולה ולשלם על הארכת האחריות או להתחיל לחפש סטורג' אחר?

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

אז כ-שרות לקוראים וללקוחות פוטנציאליים, הנה כמה נקודות שאני ממליץ עליהם אם אתם נמצאים במצב כזה (תרומות של שאוורמה וזירו או ציוד יד שניה יתקבלו בברכה 🙂 ):

  • הציוד שמתקלקל בדרך כלל בסטורג' הוא – דיסקים, בין אם מכניים או SSD, ולכן אני ממליץ לרכושחומרה-כמה-שווה-השקט-שלכם מהיצרן (או מחברות צד ג' כמו אולטרייד ואחרים) 2-3 דיסקים מכניים ו-SSD, מה שיש לכם בסטורג' – שישבו בארון. זו התקלה הכי שכיחה בסטורג' ובמקרה וילך לכם דיסק, יקח כמה דקות לטפל בתקלה בלי לשלם לאף אחד.
  • חפשו חברות צד ג' שנותנות שרות לסטורג' שלכם. אני חושב ש-We Ankor מספקת אבל אני לא בטוח לאיזה ציוד היא מספקת שרות ואם היא מספקת שרות כשלציוד תמה האחריות. אתם מוזמנים לשאול בפורומים בפייסבוק, חברים וכו' (לי אין קשר ישיר, אבל אם יש חברות שמוכרות שרותי תחזוקה/תמיכה לציודים כאלו – שלחו לי מייל, בהזדמנות אפרסם או אפנה אליכם אם יתקבלו פניות). מכיוון שאתם לא הולכים להשבית את הסטורג' שלכם מחר בבוקר, דברו עם צד ג' על אחריות לשנה פלוס.
  • תתחילו להוציא "קול קורא"/מכרז לרכישת סטורג' בין החברות השונות. הנה פוסט שכתבתי לפני זמן קצר על נקודות עקרוניות וכמובן אל תשכחו את עניין ה-IOPS.
  • סטורג' מבוסס מוצר קוד פתוח? בניגוד למה שהרבה חושבים, אין שום קשר בין אם החברה משתמשת במוצרי קוד פתוח לבין שימוש בסטורג' מבוסס קוד פתוח (אגב, כשאתם עושים קניות ומשלמים ב-PayPal לדוגמא – רוב התשתית שדרכה עוברים פרטיכם – היא בקוד פתוח). כשאני ממליץ על פתרון כזה, אני ממליץ על פתרון שיש לו "אבא ואמא" מצד החברה המוכרת ונותנת תמיכה כמו SuSE ישראל, כך שיש תמיכה מסביב לשעון אם יש בעיה, בדיוק כמו בסטורג' קנייני. ההבדלים הגדולים: מחיר הרבה יותר זול וחופש לבחור על איזה ציוד זה ירוץ. אני לא אתקין ללקוח לדוגמא מערכת Ceph שמשכתי מ-GitHub (למעט אם זה PoC וגם אז, בדרך כלל אני אתקין גירסת Trial מסחרית). אגב, בקרוב אעלה וידאו הדגמה של המוצר.
  • לא חשוב איזה סטורג' קנייני תרצו לרכוש – אם אתם רוצים IOPS גבוה, שרידות רצינית וכמות אחסון גבוהה (50 טרה ומעלה נטו) – המחיר הולך להיות גבוה, במקרים רבים יותר ממה שאתם חושבים בהתחלה. במקרים שאתם מקבלים הצעות מחיר והם מאוד רחוקים מהתקציב שחשבתם להשקיע – יהיה כדאי לחשוב על "Offload" של הדברים, כך שרק הדברים שחייבים מצב "פרודקשן" ישבו על הסטורג' החדש והשאר ירוץ על הסטורג' הישן או להקים סטורג' מבוסס קוד פתוח כסטורג' משני או שלישוני. כל סטורג' רציני שעולה עשרות אלפי דולרים ניתן להרחבה גם ל-100 טרה ומעלה בלי בעיה.
  • בקשו הצעות מחיר שכוללות 5 שנות אחריות או 7 שנים (כמדומני שכל הגדולים מציעים גם 7 שנים) מראש. כמו שציינתי, רכישת הארכת אחריות בנפרד היא דבר מאוד יקר ואת המחיר הזול אפשר להשיג בעת הרכישה, לא לאחר מכן.

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