על בעיה X ופתרון Y

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

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

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

  • מה הפונקציונאליות שהוא מחפש
  • מה הפונקציונאליות שמאוד חשובה לו, ומה הפונקציונאליות שבשבילו זה יהיה "נחמד" אם קיים אך אותה פונקציונאליות אינה קריטית.
  • האם הוא מחפש פתרון Scale Up או Scale Out
  • האם הוא מחפש פתרון שישולב כ-Hyper Converge או שהוא מחפש פתרון של ברזלים נפרדים
  • ויש עוד לא מעט שאלות…

ההבדלים ביני (וכמובן אחרים), כיועץ ואינטגרטור בלתי תלוי (כלומר אחד שהוא אינו בעצם Reseller של ברזלים ממותגים) הם דברים חשובים כגון:

  • אינטגריטי – אם מישהו יבוא אליי ויבקש לדוגמא פתרון סטורג' Scale Out והדבר הכי חשוב לו זה iSCSI לדוגמא, אז אני אומר לו בפשטות שכרגע אין פתרון Scale Out בקוד פתוח (גם כמוצר מסחרי) שיש לו פתרון iSCSI ל-Scale Out בצורה טובה והוא יצטרך פתרון קנייני.
  • על מה הפתרון אמור לענות? לקוח רוצה X על מנת לפתור את בעיית Y. נעזוב לרגע את X, ונשמע מהלקוח מהו אותו Y. אין ספק, דרישותיו של הלקוח הן חשובות, אולם ברגע שמספרים לי מהו אותו Y, אז ניתן להעלות מספר פתרונות שיכולים לענות על Y וגם להתחשב בצרכי הלקוח.
    לדוגמא: ללקוח יש 20 מכונות VM שמשמשות לפיתוח והלקוח רוצה פתרון סטורג' עבורם Scale Up. במקרה כזה אני יכול להציע לדוגמא פתרונות מבוססים ZFS, בין אם כקוד פתוח נטו או מוצרים מסחריים ובהצעה שאגיש לו יוסבר מדוע הפתרון הזה טוב ויוצעו ללקוח מספר פתרונות מבוססים ZFS, כך שבסופו של דבר ה-Y הם אותם 20 מכונות VM וה-X יהיה פתרון מבוסס ZFS.

וכאן בעצם מגיעה השאלה המרכזית שלי…

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

חושבים לשדרג את הפצת הלינוקס שלכם? קראו

כפרילאנסר, אני תמיד מחפש עבודות במגוון תחומים (יש רשימה ארוכה של נושאים שאני נותן בהם שרות, מי שרוצה, קורות חיים תמיד זמינים כאן), ולפעמים אני מקבל משימות שבהם הלקוח מעוניין לשדרג את הפצת הלינוקס. לפעמים זה לשרת אחד, לפעמים זה ל-Image של Appliance, ולפעמים מגיעים הפרויקטים של שדרוג שמהווה אתגר גדול – מעבר בין הפצת לינוקס X להפצת לינוקס Y כשאין תאימות (במיוחד שצריך להעביר קבצים בינאריים ללא קוד מקור…).

השדרוגים הכי קלים לביצוע הם בגרסאות minor version. בד"כ כל הפצת לינוקס שמכבדת את עצמה שומרת על תאימות בינארית מלאה כך שאם התקנת לדוגמא CentOS או RHEL גירסה 7.0 ושדרגת לגירסה 7.5, התאימות הבינארית תישאר לגמרי (למעט kernel modules חיצוניים שאותם יש צורך לשדרג, לפעמים בנפרד, אבל בלינוקס יש את GRUB ותמיד אפשר לחזור גירסת kernel אחורה על מנת להעלות את המערכת ולהשתמש ב-DKMS כדי לשדרג לקרנל האחרון באופן אוטומטי).

השדרוגים היותר בעייתיים הם גרסאות Major, נניח מגירסת RHEL 6 ל-RHEL-7 (אגב, RHEL-8 בטא יחל בקרוב). מי שיעיין בתיעוד של ההפצה (כן, יש הפצות שעושים חתיכת תיעוד – כמו SuSE ו-RHEL, ויש כאלו שכותבים תיעוד כמו מברקים) יוכל לראות מה הדברים שהשתנו ולהיערך בהתאם (כן, קרה לי כבר כמה מצבים שהזמינו אותי לאחר שניסו לשדרג מבלי לקרוא והמכונות תקועות..). חשוב לזכור: כל הפצות הלינוקס שוברות תאימות בינארית בצורה זו או אחרת כשמשדרגים גרסאות Major ואם אתה מתעקש להריץ קבצים בינאריים ישנים שלא נוצרו עבור המערכת החדשה, אז תצטרך להכיר מקרוב את ספריות ה-compat למיניהן (וגם זה סיפור לא קל, אם קבצי ה-DEB או RPM מתעקשים לקבל רק ספריות שונות). במקרים רבים יש גם שוני בקבצי קונפיגורציה או בכלל במערכת השרותים (כמו המעבר ל-SystemD). חברות יצרניות ההפצה אינן מאלו ש"יזרקו לקוחות לכלבים" בכל הנוגע למעבר והן מציעות באותה גירסת Major תאימות אחורה (לשרותי upstart לדוגמא) כך שהסקריפטים שלך ירוצו, אבל מומלץ בחום לנצל את ההזדמנות ולעשות פרויקט המרה של הסקריפטים לשרותים החדשים (לאחר השדרוג).

השדרוג היותר מאתגר הוא שדרוג בין 2 גרסאות שונות של אותה הפצת לינוקס (נניח RHEL 5 ל-RHEL 7). במקרים רבים, נסיון שדרוג של החלפת קבצי REPO והרצת YUM UPDATE לדוגמא יתנו מערכת שאולי תרוץ, אבל זו תהיה מערכת שעלולה כל רגע לקרוס, ולכן לא מומלץ לשדרג ב"קפיצות" כאלו כלל וכלל אלא להקים מערכת חדשה, להגדיר אחד אחד את השרותים שצריך, ואז להעביר את האפליקציות. ברוב המקרים גם קבצי הקונפיגורציה יצטרכו להשתנות (ובחלק מהמקרים גם המיקומים שלהם… אהלן Docker עם גירסת CE מול גירסת הפצה!), ולכן שדרוגים כאלו יכולים לקחת גם ימים ספורים (תלוי במורכבות אותה מכונה. יש לא מעט כאלו שהתקינו בעבר לפני מעבר לוירטואליזציה 30 שרותים שונים על מכונת לינוקס אחת, לך תמיר את זה לגירסת לינוקס מודרנית).

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

לכן, אני ממליץ לחשוב לגבי הנקודות הבאות:

  • עדכונים בתוך אותה הפצה (כלומר עדכוני אבטחה ובאגים) – לעדכן תדיר, אחת לשבועיים או אחת לחודש.
  • שדרוג הפצה לגירסת Major הבאה – להמתין מעט ולא לרוץ לעשות זאת מיד כשההפצה יוצאת (במיוחד כשמדובר ב-Ubuntu ששם לצערי כמות הטסטים שמבוצעים היא די זעומה, גם בגרסאות LTS, חטפתי מספיק Kernel Panic גם כזה LTS). חכו עם זה חודשיים שלוש.
  • לא לשדרג הכל במכה אחת! נכון, יש היום Ansible ו-Puppet ו-Chef ומאוד מתחשק להשתמש בכלים הללו לשדרג באופן אוטומטי, אבל יש סיכוי גדול שיחד עם אותה אוטומציה תקבלו מספר מכונות שלא יעבדו, ולכו תסבירו לבוס מדוע המכונות לא עובדות.
  • אם אין לכם מומחה לינוקס ויש לכם מס' מכונות לינוקס שאתם רוצים לשדרג לגירסה החדשה – קחו יעוץ חיצוני לפני השדרוג (אני מכיר מקרה שאיש סיסטם חשב שגירסת שרתים זה גירסת Desktop והוא פשוט הריץ sudo apt update && sudo apt dist-upgrade לכל מכונות הרינדור ופתאום לא היה להם שום מכונת רינדור) וקחו את הזמן לשדרג, לא עושים זאת במהירות.
  • מעבר בין הפצות לינוקס או מעבר "קפיצה" בין גרסאות ישנה מאוד לחדשה – עדיף להתחיל מאפס ולהעביר שרותים וקבצים וקבצי קונפיגורציה לאט ובזהירות. להשאיר את המכונה הישנה פועלת, להעביר, לעבור לחדשה (עוד לא למחוק את הישנה) ורק כשהכל תקין וכולם מאשרים שהשרותים שהם משתמשים פועלים – אז אפשר לכבות את המכונה הישנה ועדיף לא למחוק אותה.

לגבי מכונות דסקטופ/לאפטופים והפצות לדסקטופ – יצאה גירסה חדשה? אחלה, אל תרוצו לשדרג, תנו לזה חודש חודשיים עד שיתקנו את הבאגים, כי מה לעשות, יש לא מעט מצבים בהם שדרוגים שוברים דברים קיימים במחשב, קימפולים של היצרן שמשאירים Unresolved symbol (מה שגורם לאפליקציות לא לרוץ), או שסתם דופקים את כל ה-REPO הפנימי ובשום מקרה לא להשתמש בפרמטר force (אלא אם בא לכם לשרוף כמה שעות טובות ולדפוק את הראש בקיר). נקודה חשובה נוספת: משתמשים בכרטיס nVidia או כל ציוד שמצריך מודול בינארי? המודולים לא יהיו תואמים במרבית המקרים להפצה שיצאה רק אתמול, אז תמתינו בסבלנות.

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

שלח לחמך על פני המים

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

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

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

אישית נתקלתי ב-2 המצבים, גם כאשר חברות יצרו עמי קשר לשאול אולי אני מכיר מישהו שיכול לעשות עבודה X וכן.. גם לי קרה שהיו לי מס' חודשים שלא היתה עבודה. לכן ניסיתי לחשוב על פתרון כלשהו שמצד אחד פרילאנסרים יוכלו לרשום את עצמם ופרטיהם בתוך טופס Google Form ומצד שני את הפלט אוכל להעביר לכל מיני חברות שמחפשות מדי פעם פרילאנסרים וכך יווצרו כל מיני "שידוכים" בין דורשי עבודה לקבלני עבודות לפרילאנסרים. נוסיף את העובדה שגוגל די "מחבב" (מבחינת מיקומים) את הבלוג הזה, כך ש-2 הצדדים יכולים להרוויח מכך (אני בכל מקרה לא מחפש להרוויח כספים מכך, אבל לא אתנגד לפיתה עם שווארמה 🙂 ).

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

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

תודה,
חץ בן חמו
[email protected]

דעה: הפרויקט בוטל/נפל/מעוכב/סטטוס-לא-ידוע

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

הסיטואציה די ידועה: טכנולוגיה חדשה נכנסה לשוק בשנה שנתיים האחרונות (זה לא משנה אם מדובר בקונטיינרים, Application Servers חדשים, Hyper Converge, SDN ושלל פתרונות חדשים אחרים) והנהלות חברות בינוניות וגדולות מעוניינות להכניס את אחת מהטכנולוגיות לחברה. הם פונים לחברת אינטגרציה שהם מכירים ומתחילים לדון בנושא ומבקשים לקבל מידע גם על פתרונות מתחרים (לפעמים ישירות מחברות משווקות או מחברות אינטגרציה אחרות), מידע כמה הפתרון יציב, עלויות רשיון, עלויות הטמעה, TCO, ROI ושלל מספרים ונתונים אחרים. לאחר זמן מה, ההנהלה ואנשים טכניים של החברה מתכנסים לחדר ישיבות והם מקבלים מנציגים חיצוניים שונים הדגמות והסברים על הפתרונות. בד"כ לאחר זמן מה החברה מחליטה ללכת על פתרון מסוים ואותה חברת אינטגרציה שנבחרת מתבקשת להקים PoC (כלומר Proof of Concept) בתשתיות הפנימיות של החברה על מנת להתרשם ו"לשחק" עם הפתרון.

בלא מעט מקרים, מתרחשת "נפילה" או בשלב ה-PoC או בשלבים התחלתיים של הקמת Pilot פוסט PoC, וברוב מוחלט של המקרים – הנפילות כלל לא קשורות לכמה הפתרון טוב, רע, מתאים או לא מתאים, אלא בגלל דברים אחרים לחלוטין.

להלן מס' דוגמאות מדוע מתרחשת הנפילה:

  • אי תאימות: לפני ה-PoC (או ה-Pilot) אף אחד לא טרח להציג מה הולך לעבור ל-Pilot ועצם ההמרה עצמה מצריכה כמות שעות גדולה כדי להמיר את האפליקציה לעבוד בסביבה החדשה. אני מכיר לדוגמא מקרה שבו חברה מסויימת רצתה להריץ אפליקציה ב-JAVA בקונטיינר. אין שום בעיה לבצע זאת, רק שהאפליקציה בכלל כתובה ב-++C והלקוח מתעקש שהאפליקציה תהיה אפליקציית JAVA, כלומר מישהו צריך לבצע porting של הקוד מ-++C ל-JAVA, וכל מי שמכיר את השפות יודע שמדובר ברוב המקרים במאות אם לא אלפי שעות עבודה שכלל לא סוכמו מבחינת מי ימיר והעלויות הנלוות. מקרה אחר שאני מכיר הוא שאפליקציה רצה בכלל תחת DOS ומה לעשות.. קונטיינרים לא מריצים DOS (זה אפשרי אבל די מורכב, במיוחד אם האפליקציה מעוניינת ליצור קשר עם .. מודם חיצוני עבור קופות רושמות בודדות. כן, שמעתי על בקשה כזו)
  • התנגדות לא רשמית מהצוותים: ההנהלה מעוניינת בפרויקט כולל מחלקת IT, אבל כשזה מגיע למפתחים ולשאר צוותים שצריכים להשתתף בפרויקט, אז פתאום זה-לא-דחוף, "אין זמן", יש דברים אחרים בראש למנהלי צוותים ובקיצור – יורדים מכל העניין, רק לא רשמית. (כן, אני מכיר 2 חברות ששילמו מקדמה ועד היום לא בוצע מאומה).
  • עוד דבר שקשור הוא הקפאה של הדברים, לעיתים עוד ברמת ה-PoC. התקבלה החלטה לצאת ל-PoC ואז התקבלה החלטה הפוכה. מדוע? אף אחד לא אומר. את זה אפשר לראות במיוחד במוסדות גדולים כמו חברות ממשלתיות. הדבר הכי לא נעים זה לחברות האינטגרציה הגדולות ששכרו אנשים חיצוניים כדי לעמוד ב-PoC ובפרויקט ועכשיו הפרויקט קפוא.

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

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

לכן, אם רוצים לבצע PoC או פיילוט, כדאי, לעניות דעתי, לוודא את הדברים הבאים:

  • לבצע את הפיילוט על רפליקציה של משהו קיים, ולתת לחברת האינטגרציה/אינטגרטור לראות מה בדיוק הולך לרוץ, במה זה כתוב, איזו מערכת הפעלה, וכל פרט נוסף על מנת שלא יגיע מצב שמגיע ה-PoC ואז יש צורך לבצע עבודה מסויימת גדולה שאיש לא הכניס אותה בשיקול הערכת שעות והערכה כספית. אישית אני ממליץ לפני שמחליטים בכלל ללכת על משהו – לחשוף את הפרטים הללו.
  • "ליישר שורות" – ההנהלה מחליטה X? אז כולם מתיישרים לפי ההחלטה, בלי שיתוף פעולה מצד מפתחים ואנשים אחרים – שום PoC או פיילוט לא יצליח והדבר היחיד שיוצא מזה זה חילופי האשמות מרומזות. כמו כן כדאי לטפל בכל כיסי התנגדויות/אי הסכמה מצד כל הגורמים. בחברות גדולות יש פוליטיקה ופוליטיקה במקרים רבים היא האויב מס' 1 להטמעת טכנולוגיות.
  • עבודה רציפה עם חברת האינטגרציה או האינטגרטור. לי, בתפקיד האינטגרטור הכי קל להקים את הפרויקט על תשתית הלקוח, לתת הסברים, להוציא חשבונית ולסגור עניין. הבעיה היא שלצוות הפיתוח וצוותים אחרים אין את הנסיון והידע שיש לי (לדוגמא) ובד"כ לוקח זמן ללמוד ואז צצות 1001 משימות אחרות שדוחות את המימוש ו… לא עושים כלום עם הפרויקט. לכן בד"כ מומלץ לעבוד עם האינטגרטור להעביר חלק מהתשתית, כך שהאינטגרטור עושה חלק, הצוות לומד ועושה חלק אחר, האינטגרטור בודק ומסייע וכך ממשיכים עד שאין צורך בשרותיו של האינטגרטור.
  • שילוב של טכנולוגיות אחרות. אפשר "לנצל" את הפרויקט בכך שהמערכות החדשות עדיין אינן מוגדרות Production ולהטמיע טכנולוגיות סמוכות, כמו אוטומציה משופרת, תזרים עבודה ושאר דברים.

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

מוגש כחומר למחשבה.

כשמעוניינים בהקמת מערכת ניטור לארגון

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

בד"כ ארגונים מעוניינים בהחלפת מערכת ניטור בגלל אחת הנסיבות הבאות:

  • מחיר: יכול להיות שהמערכת הוטמעה בגלל מחיר נמוך (או אפסי) כשהתשתית ב-IT היתה די קטנה אולם עתה שצריך להוסיף כך וכך בדיקות, יש צורך לשלם כמה אלפי דולרים לרשיונות (ובמקרים רבים הרשיונות הם לתקופות ולא תשלום חד פעמי לתמיד). במקרים אחרים החברה אימצה שימוש במערכת ניטור מבוססת SAAS שצריך לשלם עליה כל חודש ועתה החליטו שעדיף להקים משהו פנימי שלא צריך לשלם הרבה.
  • אי גדילה – במקרים רבים החברה מעוניינת במערכת שלא רק יודעת לנטר דיסק/רשת/מעבד לשרתים אלא לתת הרבה יותר מידע פר ציוד ובהתאם לסוג הציוד (לדוגמא: IPMI מפורט לשרתים, גרף תעבורה עם התראות פר פורט ב-Switch וכו') והמערכת הנוכחית לא נותנת זאת.
  • החלטות הנהלה: החברה לא מעוניינת במערכת הנוכחית ורוצה משהו אחר וזו ההחלטה הסופית.

וכשרוצים להחליף מערכת, ישנן מאות ואלפי פתרונות והצעות שונות ואת אותן פתרונות ניתן לחלק לחלוקה הבאה:

  • פתרון SAAS – אתה נרשם לחברה המציעה את השרות, מתקין Agents בשרתים שלך ובד"כ בתוך יום יומיים המערכת שלך מנוטרת מבפנים החוצה (ה-Agents שולחים מידע החוצה), יש לך תמיכה, והתשלום הוא פר חבילות סנסורים ("חיישבנים"), SLA של תמיכה וכו'.
  • פתרון קנייני – אתה מתקין שרת כ-VM, מתקין Agents וגם כאן תוך יום יומיים המערכת פחות או יותר חיה, רצה ומציגה את הגרפים וההתראות שאתה צריך. גם כאן התשלום הוא פר חבילות סנסורים, סוג SLA וכו'. הפתרון הוא פתרון קוד סגור.
  • פתרון קוד פתוח – אתה מקים VM עם SQL כלשהו (MySQL) ואפליקציית הניטור, מתקין Agents ותוך יום יומיים של הגדרות וכו' – תקבל התראות. התשלום הוא אפסי למעט אם מישהו מבחוץ מקים לך את המערכת (ואז התשלום הוא על העבודת הקמה), או שאם אתה מעוניין – רוב החברות שמציעות פתרון קוד פתוח מציעות או פתרון משלים כקוד סגור עם תמיכה או פתרון תמיכה SLA למוצר הקוד פתוח.

לפתרונות שציינתי לעיל – יש יתרונות בכך שהם די קלים, אבל יש גם דברים שכדאי לקחת בחשבון:

  • פתרון SAAS. נשמע מעולה, השאלה האם אתה מעוניין לתת לגורם כלשהו לדעת כל דבר מה שעובר אצלך במערכת? (כמות מכונות, מצב מכונות, לאן נכנס ויוצא טראפיק וכו'). הבעיה השניה עם SAAS זה שאתה לא יודע מה הם נוהלי האבטחה (אם יש, מעבר להודעת ה-PR שמופיעה באתר), מה קורה אם פורצים אל תשתית ה-SAAS של אותה חברה שמציעה את השרות, או מה קורה אם שרות ה-SAAS נופל כי התכנון היה גרוע.
    חסרון נוסף: האנשים הנוכחיים שלך אולי יכירו איך לכתוב לזה סקריפטים כדי להוסיף תמיכה בדברים, אבל ברוב המקרים לא תמצא אנשים שכירים חדשים שמכירים את הפתרונות הללו.
  • פתרון קנייני – קצת פחות חמור מ-SAAS, אולם רוב החברות דווקא מעדיפות שלא לרכוש פתרון קנייני בקוד סגור. גם כאן, עקומת הלמידה תחזור בכל פעם שיש לך מישהו חדש מכיוון שרוב האנשים לא מכירים כתיבות סקריפטים וכו' לתוכנות קנייניות.
  • פתרון קוד פתוח הוא דבר מעולה בכך שיש לך את הקוד ואתה יכול לעשות עם הדברים כרצונך. בנוסף, בתוכנות כמו Zabbix, Cacti, Icinga וכו' תוכל למצוא פורומים וגם פרילאנסרים בארץ שנותנים שרות על כלים אלו.
    יחד עם זאת – חשוב לשים לב לאותיות הקטנות. תוכנות ניטור כמו OpenNMS זמינות כקוד פתוח, אולם הגירסה הפתוחה אינה יציבה ואין לה תמיכה מסחרית והגירסה המסחרים שבקוד פתוח כן זמינה עם תמיכה, אך המחיר הוא שנתי כפי שניתן לראות בלינק לעיל.

מתוך האפשרויות לעיל, אני ממליץ ללכת על פתרון מבוסס קוד פתוח. כאן, וכאן תוכלו למצוא מספר תוכנות בקוד פתוח. תוכנה כמו Cacti טובה לגרפים, אבל פחות טובה להתראות. תוכנה כמו Zabbix טובה לגרפים והתראות ויש לה תמיכה מעולה ב-Windows. תוכנה כמו Icinga (שהיא בעצם Fork של Nagios) היא תוכנה מעולה אך מורכבת מאוד ומתאימה לאלו שנטשו את Nagios אבל רוצים עדיין משהו מוכר. לאלו שמחפשים לעומת זאת מערכת ניטור אבל שנותנת הרבה הרבה יותר מידע מאחרים ולהשקיע המון במערכת (ובתמורה תקבל אפשרויות שאילתות מאוד עמוקות עם התממשקות לכל ממשק קיים כמעט) – אז Prometheus של חברת Sound Cloud יכולה להיות הכלי בשבילכם (אם כי אני לא רואה לזה חבילה מסחרית).

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

  • החלק הראשון הוא לאסוף מידע – מה אנחנו רוצים לנטר? איזה שרתים? מה הם מריצים שחשוב לנו לנטר? ציודים שונים שרוצים לנטר? צריך לאסוף הכל לרשימה אחת כדי לוודא שתוכנת הניטור יודעת לתמוך בדברים ואם לא – האם ניתן למצוא לכך פתרון במסגרת אותה תוכנת ניטור. כמו כן התראות במייל, SMS וכו' דרך אותה תוכנת ניטור. שימו לב: בשלב זה אני לא ממליץ להכניס את הדברים הסופר-ספציפיים של אפליקציות שונות לרשימת העבודה.
  • החלק השני הוא הקמה והטמעה של הניטור בתשתית החברה. כאן החברה מחליטה אם ההקמה והטמעה יבוצעו על ידי העובדים שלה או ע"י גוף חיצוני. במידה ומדובר בגוף חיצוני, סביר להניח שהקמה כזו תתומחר דרך בנק שעות. כדאי למסור את הרשימה (כמותית, לא צריך כתובות IP וכו') ע"מ שהגוף החיצוני יעריך בשעות כמה זמן יקח, במה יש צורך, האם העבודה תבוצע מרחוק או מקומית, מחירים, מקדמות וכו' וכו'.
  • החלק השלישי קשור לרצון וידע שבחברה. כאן נכנסים הדברים שהחברה רוצה לנטר והם אינם חלקים רשמיים בניטור אלא יש צורך לכתוב סקריפטים שיתתמשקו עם ה-Agents של תוכנת הניטור על מנת לתת תוצאות. אפשר לדוגמא לקחת מישהו חיצוני שילמד את האנשים בחברה שיודעים לכתוב סקריפטים – איך לכתוב סקריפטים לתוכנת ניטור או שאפשר למסור את העבודה למישהו חיצוני. שימו לב – יש דברים שיכולים לקחת שעה שעתיים ויש דברים שיכולים "לשרוף" אפילו ימים! (תלוי כמה מפורט ו"עמוק" צריך להיכנס כדי להוציא נתונים שונים) ולכן אם מוציאים זאת החוצה, כדאי מראש לסכם הערכות זמנים לפי בנק שעות כולל בדיקת זמן אמן שאכן מתקבלות תוצאות כפי שמצופה.

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

בהצלחה

ההבדל בין קוד פתוח למוצר מסחרי מבוסס קוד פתוח

לפני מספר חודשים פרסמתי בכמה מקומות סקירה מקוצרת על פרויקט של Red Hat שנקרא oVirt. הפרויקט הזה הוא בעצם ה"תשובה" של Red Hat לכל אלו שמחפשים מוצר וירטואליזציה כ-Hyper Converge. המערכת כוללת בפנים פתרון סטורג', רשת וכמובן Compute ויש בה עוד חלקים שלמוצרים מתחרים יש תשובות חלקיות.

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

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

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

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

הנקודה השניה החשובה היא כמאמר הפתגם "יותר משהעגל רוצה לינוק, הפרה רוצה להניק". כל יצרני השרתים מוכרים את המוצרים המסחריים מבוססי הקוד הפתוח כולל תמיכה מלאה 24/7, כלומר אם מחר תרצה לרכוש שרתים מ-HPE או DELL או LENOVO ותרצה לרכוש פתרון אחסון SDS, פתרון קונטיינרים כמו OpenShift המסחרי, פתרון סטורג' Scale Out כמו Ceph או Gluster או מוצר ענק כמו SAP HANA – הם ימכרו ויתמכו בך כולל SLA מלא ואז אינך תלוי באם חץ בן חמו זמין או אם יש מישהו אחר שיתן לך תמיכה. אתה מקבל תמיכה מלאה בדיוק כמו שאתה מקבל תמיכה לברזלים שלך. ליצרן יש תמיכת "גב אל גב" עם יצרן התוכנה. דוגמא פשוטה לחובבי מיקרוסופט ו-Azure – אם יש לך הפצת לינוקס מותקנת על VM ב-Azure ויש לך בעיה, אתה פונה לתמיכת Azure והם מנסים לפתור. לא מצליחים? יש להם קו ישיר ליצרן ההפצה שיעזור להם ולך לפתור את הבעיה.

לסיכום: כמו שאתה קונה מתגי תקשורת של Cisco, כמו שאתה קונה מערכת מורכבת כמו JIRA, כך גם עם מוצרים מסחריים מבוססי קוד פתוח. החברה שמוכרת לך את זה, בין אם יצרן התוכנה או יצרן הברזלים – אתה מקבל שרות מלא הכולל התקנה, הטמעה, תמיכה וכו' לפי SLA שנקבע בין הצדדים. זה ש-HP מעדיפים למכור סטורג' 3PAR שלהם או DELL מוכרים סטורג' כמו UNITY, לא אומר שזה הדבר היחיד שהם מוכרים. יש להם עוד מוצרים, אתה פשוט צריך לבקש את זה במסגרת ההזמנה ואין שום הבדל בתמיכה/התקנה/הטמעה בין אם קנית לדוגמא סטורג' קנייני או פתרון סטורג' SDS, בין אם קנית פתרון מבוסס קוד פתוח או פתרון סגור לחלוטין. יש כמובן את הפרויקטים בקוד פתוח שהם אינם מוצר מסחרי ואתה חוסך את הקניה איתם, אבל שם המסלול הוא שונה והוא יותר קשור בחברות ועצמאים פה בארץ שיכולים לתת לך שרות על כך, ולכן כדאי להבדיל בין הדברים.

מוציאים מכרז לרכישת ברזלים? זוג עיניים נוספות יכול לסייע

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

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

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

נעבור חלק חלק, נתחיל בסטורג':

  • במכרז מבקשים הצעת מחיר ל-Unity של Dell/EMC, עם שילוב של דיסקים מכניים (16), דיסקים SSD בגודל 400 ג'יגה (10), ו-3 דיסקים (Fast Cache) ושאר הציודים שצריך. זה טוב ויפה אולם יש כאן לעניות דעתי מספר נקודות שכדאי לחשוב עליהן:
    • פתרון כזה אינו עונה לצרכי מכונות VM שמייצרים כתיבה מרובה. נכון, הסטורג' "יחביא" את האיטיות בעזרת ה-Fast Cache (פלוס עוד כמה טריקים) אבל בשלב מסוים האיטיות תחל לצוץ.
    • הדיסקים SSD  הם איטיים (ולא חשוב אם בפנים הם MLC או eMLC) ובמקרים של Enterprise, דווקא ה-SATA SSD מבצעים עבודה הרבה יותר טובה (תסתכלו בהצעות של כל היצרני SSD, תראו שבד"כ מציעים SATA או U.2/PCIe/NVME, בקושי SAS) ולכן חשוב לזכור – זה לא משנה אם הדיסקים נמצאים בתוך סטורג' קנייני או בשרת: SSD קטנים יותר איטיים מהגדולים ולפעמים בפערים מאוד משמעותיים. לדוגמא: אם רוצים לרכוש 4 דיסקים של 400 ג'יגה, עדיף 2 דיסקים של 800 ג'יגה.
    • במקום להיצמד למותג קנייני, מוציא המכרז יכול לבקש פתרון חומרה ותוכנה שהם Software Defined Storage עם כל הפונקציות שהוא מצפה לקבל בסטורג' קנייני וגם להכתיב כמות מינימום ומקסימום IOPS שפתרון ה-SDS יצטרך לעמוד בו. חשוב לזכור: אם לשם הדוגמא אתה מוציא מכרז ואני זה שצריך לעמוד בו, ואני הסכמתי למפרט שלך, אני צריך לעמוד בביצועים במפרט, ואם זה עולה לי יותר, אותך זה לא מעניין, אני צריך לתת את מה שמובטח וזהו, ולכן במכרזים כאלו כדאי לנצל את הסיטואציה ולקחת SDS, מה עוד שתמיד ניתן להשתמש ב-SDS בעתיד לצרכי פתרונות אחרים בתחום הסטורג', כך שההשקעה משתלמת יותר מאשר סטורג' קנייני (אם לדוגמא עברתם לסטורג' אחר, אתה לא יכול להעביר את הדיסקים הישנים יותר).

מכאן נמשיך לשרתים:

מוציא המכרז מבקש 2 שרתי Dell R730:

  • ראשית, כדאי לבקש את דגם ה-XD, ההבדל במחיר הוא קטן (100-200 דולר, תלוי אצל מי קונים), ודגם ה-XD ניתן בהמשך להרחבות שונות שלא כל כך קיימים ב-R730 הרגיל.
  • לא מומלץ לקחת 32 ג'יגהבייט זכרון במקלות של 2 ג'יגהבייט (כלומר 16 מקלות) הואיל וכל נסיון הרחבת זכרון בעתיד מחייבת החלפת כל מקלות הזכרון ובמקרים רבים הזכרונות הללו ישארו "מיותמים", לכן מומלץ לרכוש את הזכרון עם מקלות של 4 או 8 ג'יגהבייט, בהתאם לגודל הסופי שרוצים.
  • 2 דיסקים של 300 ג'יגהבייט – חבל אפילו לרכוש אותם. אם (כפי שבמקרה זה) רוצים להריץ VMWare, עדיף לרכוש 2 מיקרו SD עם ה-Image מוטמע בהם ולהכניסם לתוך השרת, הואיל ו-ESXI כותב אליהם מעט מאוד והמודול מיקרו SD כולל שרידות (RAID-1). במקום ה-300 ג'יגה, אפשר לרכוש 2 דיסקים SSD בגודל של 500 ג'יגהבייט (מספיק Read Intense רגיל, לא צריך Mixed Intense) ואז להשתמש בהם כ-Read Cache בתוך vSphere, כך תוכנות רבות שרצות שוב ושוב ישתמשו ב-SSD המקומי כ-Cache לקריאה והדברים ירוצו החל מהפעם השניה יותר מהר מבלי להשקיע תקציב רציני.
  • כרטיסי רשתות: במקום לרכוש כרטיס Qlogic 57800 שנותן 2 כניסות 10 ג'יגהביט ו-2 כניסות 1 ג'יגהביט, כדאי לרכוש כרטיס אחד נוסף Intel X710 Quad Port – יוצא יותר זול עם אותה כמות פורטים (4 של 10, 4 של 1).

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

לסיכום: חברה גדולה או קטנה, רשות מקומית או אזורית או עיריה או משרד ממשלתי – כולם צריכים בסופו של דבר לעמוד במסגרת תקציב ואף חברה לא רוצה להרגיש פראיירית ולשלם יותר ממה שמקובל בשוק ובגלל זה כולם מוציאים מכרזים, על מנת לקבל את ההצעה הטובה ביותר. יחד עם זאת, אפשר לנצל את כל עניין המכרז כדי לקבל יותר מבלי לפרוץ מסגרות תקציב פנימיות. אחרי הכל – אתם לא קונים ברזלים ומחפשים אחר כך מי יתמוך בכם, אתם רוצים חבילה שכוללת הכל עם 24/7 ועם 4 שעות SLA, ואתם מקבלים זאת גם אם מדובר בטכנולוגיות חדשות שנותנות לכם יותר מסתם עוד הצעה שהיא Copy/Paste ממקום אחר.

קצת על עולם ה-NVMEoF וסטורג' חזקים

אם נסתכל היום בכל חברה בינונית וגדולה שיש לה כמה עשרות שרתים פיזיים ומעלה – בד"כ נמצא סטורג' קנייני כלשהו, בין אם זה NetApp, HPE, Dell/EMC, IBM. Hitachi ואחרים. הסיבה לכך היא די פשוטה: הפתרונות הללו נותנים ביצועים גבוהים וגם נותנים פתרונות לצרכים השונים, החל ב-LUN ש"מפורמט" ל-iSCSI (כשצריך),iSCSI, NFS, CIFS, Snapshots ועוד ועוד. הפתרונות הללו במקרים רבים היו יותר טובים מפתרונות Software defined storage בעבר בגלל מה שהיה מבחינת חומרה בתוך הסטורג' הקנייני, בין אם זה שימוש ב-NVRAM, בכרטיסי האצה, ב-SSD (שלא חושבו כחלק מכמות המקום הפנויה בסטורג', מה שנקרא גם Vault) – ובקיצור, שורת טכנולוגיות שמובנים בתוך הסטורג' שנותנים ביצועים נאותים שמתאימים לאותן חברות.

בשנים האחרונות ישנם פתרונות אחרים המבוססים על Software Defined Storage (בקיצור: SDS) המוטמעים כחלק מפתרון וירטואליזציה, פתרונות כמו VSAN של VMware, או Nutanix או Simplivity ואחרים. בפתרונות כאלו בכל שרת יש דיסקים שמשמשים לאותן מכונות VM שרצים בשרת והדיסקים גם משמשים לאחסון ושרידות של VM אחרים, כך שאם שרת פיזי נופל, ה-VM יופעל מחדש במכונה פיזית אחרת (מה שנקרא: HA) או שה-VM ממשיך לפעול מהעתק רצוף שרץ על מכונה אחרת (מה שנקרא Fault Tolerance או FT בקיצור). במקרים כמו של VSAN ניתן כמובן להגדיל את האחסון בכך שמוסיפים עוד שלישיית דיסקים (2 איטיים ואחד SSD מהיר) בכל פעם שמגדילים את האחסון, אם כי ההמלצה "בין השורות" היא שעדיף להוסיף שרת פיזי נוסף ולפזר את המכונות VM ביניהם כדי לקבל יותר IOPS. השיטה הזו טובה (וב-VMware ישראל נותנים לדוגמא את ערוץ 10 שעבר לעבוד כך), אך החסרון המשמעותי של השיטה הזו היא שזה לא תמיד עובד טוב. כך לדוגמא, אם מכונות VM צריכים SSD שהוא Mixed Intense, ה-VSAN לא תמיד ידע להעביר אותו למכונה אחרת שגם שם יש SSD שהוא Mixed Intense ובכך אנחנו עלולים לקבל ביצועים מופחתים, רק בגלל שה-DRS החליט להעביר את ה-VM בגלל עומסים (אני מכיר את זה אישית מה-LAB שלי).

כיום פתרונות ה-SDS תופסים יותר ויותר מקום של כבוד (לפחות בחו"ל), כאשר הלקוח בעצם צריך לרכוש את התוכנת SDS והוא מריץ את התוכנה על הברזלים שיש לו, כאשר אותם ברזלים הם שרתים מהיצרנים המובילים (Dell, Lenovo, HPE, SuperMicro, Cisco) ואותו הלקוח מקבל בעצם בחבילה את כל הפונקציות שהוא רגיל לקבל מיצרן סטורג' קנייני, כולל כל החיבורים שהוא צריך (FC, FCOE, Ethernet, Infiniband) ויש ל-SDS תמיכה והתממשקות לכל הפלטפורמות המובילות וגם לתוכנות גיבוי המובילות.

גם בפתרונות SDS וגם בפתרונות קנייניים, בד"כ הפתרונות מבוססים על דיסקים SSD בחיבורי SAS/SAS2/SATA או על דיסקים מכניים או שילוב שלהם (כאשר פתרון האחסון יודע להעביר נתונים שאינם נקראים תדיר לדיסקים המכניים ונתונים שנקראים/נכתבים תדיר ל-SSD, או במקרים אחרים שהמערכת מאפשרת ללקוח לבנות LUN או Share מ-SSD או מכני לפי צרכי הלקוח). אלו פתרונות טובים כאשר יש לנו עשרות שרתים עד מאות בודדות של שרתים פיזיים, כשהדרישה מבחינת ביצועי דיסק/סטורג' אינה כה גבוהה (כלומר שאפשר להסתדר עם IOPS של 5 ספרות נניח).

אבל מה קורה אם יש לנו מאות (ואולי יותר) של שרתים ואנחנו רוצים ביצועי דיסק מאוד גבוהים, בדיוק כמו ביצועים של דיסקים מקומיים? נסו לחשוב על בנקים ומוסדות פיננסיים גדולים שבשבילם כל מילישניה זה רווח או הפסד כספי? כאן נצטרך דברים הרבה יותר חזקים. יש כמובן פתרונות AFA (שזה All Flash Array) אבל הפתרונות האלו ו-Scale Out הם לצערי .. לא משהו.

בואו ננסה לדמיין משהו. דמיינו שצריך להקים פתרון מבוסס Flash בגודל 1 פטהבייט. סביר להניח שאתם מדמיינים ארון מלא בדיסקים, עם סוויצ' רציני מלמעלה (TOR או Top Of Rack).

מהדמיון נעבור למציאות, הביטו בתמונה הבאה (לחצו להגדלה):

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

בשרת ה-1U יש 36 מקומות למלבנים הללו, כך שבשרת 1U צנוע ניתן להכניס 576 טרהבייט, ובשרת 2U – כ-1152 טרהבייט, כלומר יותר מפטהבייט על שרת פיזי אחד!. הפתרון הזה שאתם רואים לעיל הוא הפתרון של סמסונג, לאינטל יש פתרון דומה (אם כי הקוביות קצת יותר מוארכות והם נקראים "סרגלים" – בתמונה משמאל ואינטל קוראת להם NGSFF). בפתרונות הללו אין שום בקרי RAID כלשהם (הכל מחובר דרך PCIe ומתגי PLX ישירות למעבד, כך שהביצועים מאוד גבוהים, בסביבות ה-3-4 ג'יגהבייט קריאה וכמעט 2 ג'יגהבייט כתיבה לשניה פר מקל).

וכאן אנחנו מתחילים להכיר את פתרון עם השם המפוצץ NVMEoF (ר"ת של NVME over Fiber, אם כי לא מדובר על Fiber Channel רגיל).

בוא נחשוב על חיבורים לשרת כזה. חיבור של 1 ג'יגהביט לא בא בחשבון וחיבור 10 ג'יגהביט "יחנק" עוד בפעילות של מקל יחיד! אנחנו צריכים פעילות של מס' מקלות NVME כדי לתת ביצועים סופר חזקים וסופר מהירים כדי שהמכונות שיחוברו לשרת כזה ירגישו כאילו הדיסק שהם מקבלים – הוא ממש מקומי, כלומר אנחנו צריכים חיבורים של 25,50,56 או 100 ג'יגהביט, כלומר או Ethernet או Infiniband.

מבחינת תעבורה מהירה, אנחנו צריכים לוותר על TCP/IP במהלך העברה של הנתונים (אך לא בזמן ה-Handshake הראשוני, בשביל זה עדיין אנחנו צריכים IPv4 או IPv6 ב-TCP/IP) ואז אנחנו עוברים לשימוש בטכנולוגיה שרבים מאיתנו מכירים… RDMA, זוכרים? היתרון הגדול עם RDMA הוא שהמעבד באותו שרת "מקור" לא צריך כמעט לעשות כלום, ומכיוון שאנחנו מעבירים בעצם "בלוקים", אז אנחנו מוותרים בדרך גם על שכבת ה-File System. מישהו שהסברתי לו על הנושא אמר לי "אה, זה בעצם מעין iSCSI על סטרואידים".. אפשר לאמר 🙂

ל-NVMEoF יש מספר יתרונות גדולים:

  • אפשר להכניס איזה גדלים שרוצים וכמה שרוצים. אפשר להתחיל ב-2 מלבנים של 8 טרה ואחר כך להוסיף עוד 4 של 16 ואחר כך עוד 4 של 8 טרהבייט. למערכת זה לא ישנה כלום. מבחינתה – יש עוד מקום לאחסן.
  • אין צורך לבנות מערכי RAID (כי .. אין RAID). במערכת שתרוץ על השרת נוכל לקבוע איך הנתונים ישמרו, מה הדחיסה שתהיה והיכן ישמר עותק נוסף של הנתונים.
  • ההשקעה למוסדות גדולים אינה כה גבוהה (לא ניכנס לחישובי ה-ROI, אפשר לכתוב ספר שלם על זה!). כן, יהיה צורך בהחלפת מתגים וכרטיסים בשרתים, והמוסדות יצטרכו להחליט עם מה הם עובדים – Infiniband או Ethernet (כבלי CAT 7 עם תיוג Class F יכולים להעביר 100 ג'יגה עד 15 מטר אורך, CAT 8 יתן עד 100 מטר 100 ג'יגהביט אך הוא עדיין לא אושר רשמית. כאן יש עוד פרטים לגבי 100 ג'יגה)
  • ישנן תוכנות שונות שנותנות את שרות ה-NVMEoF, חלקן כחול לבן כמו Kaminario, E8, Pure וכו'. כמו שכתבתי לעיל, אני ממליץ לרכוש תוכנה ולא פתרון חומרתי סגור מכיוון שעם תוכנה אפשר לעבור לפתרונות מתקדמים יותר בעתיד תוך שימור ההשקעה בברזלים, לא צריך לרכוש פתרון חומרתי סגור אחר ולהיפתר מהקודם.
  • מבחינת תמיכת חומרה – גם כאן, החבר'ה מיוקנעם ישמחו לסייע לכם (Mellanox), סמסונג, אינטל, Chelsio, Qlogic ואחרים, וכל יצרני המתגים המוכרים כבר תומכים בפתרונות NVMEoF.
  • מה עם פתרונות קוד פתוח? גירסת RHEL 8 שתצא (כנראה, כנראה..) עד סוף השנה תתן פתרון NVMEoF עד סוף השנה, וכל מערכות ההפעלה והוירטואליזציה יתמכו בפתרון.
  • כל הפתרונות (שאני מכיר) תומכים ב-Scale Out.

לסיכום: NVMEoF הוא בהחלט פתרון מעולה לעתיד. לפני שבועיים הרצתי אותו בבית (כפתרון וירטואלי, אין לי ממש כספים לדיסקים NVME ל-Enterprise) על Fedora 27. ובהחלט ה-Latency נמוך מאוד והביצועים מרשימים. אני תיארתי את הפתרון לעסקים גדולים כמו בנקים וכו' אולם כל חברה בינונית ומעלה יכולה להתחיל ב-PoC על מנת לבדוק בהמשך מימוש פרודקשן של פתרון כזה. לא צריך השקעה של מאות אלפי שקלים – מספיק 2-4 דיסקים NVME, כמה כרטיסי רשת במהירות של 25 ג'יגה ומעלה (ללא סוויצ') ושרת שיכול לקבל דיסקים כאלו, מערכת לינוקס עדכנית ואפשר לנסות ולשחק עם זה.
אפשר לאמר שאנחנו "חוזרים לאחור" הן מבחינת שיטת העברת הנתונים (RDMA) והן מבחינת מקום אחסון הנתונים (מחוץ לשרתי הוירטואליזציה/קונטיינרים) ובכך יש מעין "מלחמה" בין השיטות, רק שהפעם השיטה ה"ישנה" קיבלה זריקת חיזוק רצינית בכך ש-NVMEoF נותנת לנו ביצועים הרבה יותר גבוהים מבחינת דיסק בהשוואה לכל פתרון Hyper Converge.

למעוניינים, להלן וידאו של רד-האט יחד עם סמסונג ומלאנוקס שמסביר יותר על הדברים:

תכירו: Windows Server 2019

(לתוהים מה קרה שהחלטתי לכתוב על Windows – אמנם "חץ ביז" אינו נותן תמיכה רשמית ל-WIndows [בגלל שהשוק מוצף והמחיר נמוך], אבל הם מוציאים טכנולוגיות ואינני "אנטי מיקרוסופט")

מיקרוסופט הכריזה רשמית היום על גירסת Preview ל-Windows Server 2019. הגירסה זמינה להורדה (המפתחות כבר בתוך ה-ISO או VHDX) אבל כדאי לשים לב: זוהי גירסת CLI, תצטרכו להתקין כלים כדי להיכנס עם ממשק גרפי.

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

  • Cluster Set: כפי הנראה גם מיקרוסופט מבינה ש-Hyper Converge זה העתיד ומעתה ניתן להגדיל קלאסטרים וליצור Cluster ל-Compute, ל-Storage (הכוונה ל-Cluster של Storage Spaces Direct, כן, גם במיקרוסופט מבינים ש- Software Define Storage יותר עדיף מברזלים קנייניים), ומכונות ה-VM שלכם יכולים "לשוט" להם בתוך ה-Cluster Set לפי ביצועים או שרידות שתגדירו. נחמד.
  • Windows Defender מקבל חיזוק משמעותי בדמות ATP (כלומר Advanced Thread Protection) עם ערימת חיישנים וירטואליים לניטור זכרון, פסיקות (Interrupts) וכו'. אני ממליץ להיכנס ללינק שפרסמתי לעיל לקרוא את הדברים (ויש לא מעט). קצת מזכיר מעולם הסולאריס את DTrace רק שזה לשם הגנת המערכת.
  • מערכת WSL – מיקרוסופט מעתה משלבת את Windows System for Linux בתוך Windows Server 2019 כך שתוכלו להריץ את הפצת הלינוקס החביבה עליכם בתוך שרת Windows 2019. בנוסף מיקרוסופט מחזירה לחיים חלק ממה שהיה בעבר SFU (כלומר Services for Unix) עם SSH, TAR, CURL כך שיהיה אפשר לשלב את הדברים בתוך סקריפטים שלכם.
  • קונטיינרים – כן, מיקרוסופט עושה מאמצים כדי לשלב קונטיינרים ברמה הרבה יותר "טבעית", כך לדוגמא כל IMAGE לא ישקול 5 ג'יגהבייט והוא יקבל "דיאטה" ל-2 ג'יגה (הלו מיקרוסופט, בלינוקס זה בד"כ בין 100-200 מגה בשכבה הראשונה, דרושה עוד דיאטה), כך שתוכלו להריץ גם קונטיינרים של לינוקס ישירות בשרת Windows Server 2019. אוסיף כאן הערה אישית: כרגע ה-WSL נותן ביצועים מחרידים בכל הקשור ל-I/O של קבצים גם ב-2016 וגם ב-Windows 10, כך שבשלב זה הייתי ממליץ לאלו שרוצים להריץ קונטיינרים מבוססי לינוקס – תריצו את זה על מכונת לינוקס.
  • עוד על קונטיינרים – מיקרוסופט "מיישרת קו" עם השוק והיא תשלב את Kubernetes בתוך ה-Windows Server 2019 (כך שאם הלכתם על משהו שאינו תואם ל-Kubernetes – מומלץ לחשוב על "אחורה פנה")
  • פרויקט "הונולולו" – הממשק הגרפי החדש של מיקרוסופט ל-2019 שנותן לכם לא רק לנהל את השרת החדש, אלא גם להתממשק ל-Azure וליצור Hybrid Cloud.

עתה, הרשו לי לשתף אתכם במחשבותיי לגבי המערכת החדשה.

הקמתי את המערכת הזו ושיחקתי איתה פה אצלי ב-LAB הביתי שלי ואני חייב לציין שהתחושה שלי ש-Windows 2019 החדש יותר מזכיר משהו כמו WIndows Server 2016.1. יש שיפורים – אך הם אינם כאלו גדולים. מיקרוסופט כמובן תתנגד למה שציינתי ולראייה המחיר – Windows Server 2019 יהיה יותר יקר (במובן של CAL) מ-WIndows Server 2016 והסיבה לכך פשוטה: מיקרוסופט רוצים שפחות תתקינו את זה על הברזלים אצלכם ויותר תשתמשו בשרותי ה-Azure שלכם.

וכאן בגירסה זו של Windows Server, שרותי ה-Azure מודבקים על ימין ועל שמאל. רוצה DR? עם אז'ור. קלאסטרים, מיגרציה וכו'? עם Azure. זו כמובן זכותה של מיקרוסופט אבל זה די מאכזב לראות שמיקרוסופט שוב נוקטת בשיטות הישנות של כריכת שרות בשרות. אולי כדאי להזכיר למחלקה המשפטית של מיקרוסופט את השם "נילי קרוס"? (מי שהיתה נציבת ההגבלים העסקיים באיחוד האירופאי וקנסה את מיקרוסופט במיליארדי דולרים!). מן הראוי היה שמיקרוסופט תפתח איזה API לאפשר לשאר יצרני העננים הציבוריים (גוגל, אמזון) להתממשק ולאפשר לתחרות לעבוד.

לסיכום: Windows Server 2019 הוא בהחלט מוצר שמראה שמיקרוסופט דוחפת בכל הכח גם לעבודה של Multi Platform (לינוקס, Windows, קונטיינרים "טבעיים" וכו'), את עניין ה-Hyper Converge ואני מאמין שגם תהיה התממשקות מאוד הדוקה ל-Azure Stack לטובת חברות שמעוניינות להריץ את הכל פנימית על הברזלים המקומיים (עקב מגבלות חוקיות ורגולטריות). אלו בהחלט דברים מעולים, אך לעניות דעתי חוסר הפתיחות כלפי ספקי עננים מתחרים קצת פוגם בדברים.
גירסת ה-ISO זמינה במסגרת תוכנית Windows Insider וה-ISO יפעל עד חודש יולי. למנויים ל-LTSC תהיה גירסה של Windows Server 2019 בעוד מס' שבועות.

על מעבר לעננים, אירוח אתרים ועוד כמה דברים

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

נתחיל בתחום האירוח אתרים. עד היום חברות שונות בארץ ששוכרות מקומית מכונות וירטואליות/שרתים לשם אירוח האתרים מהסיבה הפשוטה של Latency ו-SEO (לנקודת ה-SEO לדעתי אין שום אחיזה בכל מה שנוגע ל-Latency ואני יכול להעיד שיש לי כמה מילות מפתח במקום ראשון בגוגל והשרת הוירטואלי שלי נמצא בכלל ב-Amazon Lightsail בוירג'יניה!). עד היום היה ניתן לארח את האתר שלכם בחו"ל ולהשתמש בשרות CDN כמו של Incapsula שלהם יש שרתי EDGE פה בישראל. החל מעתה, גם למתחרה הגדול שלהם (Cloudflare) יש נקודת EDGE פה בישראל כך שאפשר בהחלט להשיג Latency מאוד נמוך גם מבלי לשכור מכונות בארץ ובכך ניתן לחסוך בעלויות השכרה.

מכאן נעבור לעננים ציבוריים ולחברות בינוניות עד גדולות (במובן האמריקאי/אירופאי, פחות במובן הישראלי). בשנים האחרונות, עם כניסת העננים הציבוריים יותר ויותר לקידמת הבמה, חברות בסדר הגודל שהזכרתי לעיל "השתעשעו" (במובן של PoC, העברת מספר מכונות לענן ציבורי כלשהו לצרכי טסטים ו"טבילת אצבעות" וכו'). חברות רבות קיבלו קרדיטים מספקי הענן הציבורי (בסכומים הנעים מעשרות עד מאות אלפי דולרים). חברות רבות השתמשו באותם קרדיטים כדי להעביר תשתיות כלשהן לענן ובאותו זמן לפי כל החברות המודדות מכירות שרתים, מתגים, סטורג' וכו' (חברות כמו IDC, מורגן סטנלי, גרטנר ואחרים) הוציאו דוחות שכמות הציודים ל-DC/שרתים שנמכרת מאותם יצרנים הולכת וקטנה והטרנד הזה נמשך כבר יותר מ-5 שנים, אולם לקראת סוף 2016 האחוזים עלו במעט ואילו ב-2017 האחוזים עלו בצורה יפה (7% בהשוואה ל-2016) לפי הדו"ח של חברת Canalys שהופיע ב-The Register כאשר Cisco מכרה יותר מאשר Dell/EMC (ו-Dell/EMC מכרה יותר מ-HPE). דו"ח של חברת Morgan Stanley ציין פחות או יותר את אותם דברים בחודש שעבר.

אבל (וזה "אבל" גדול) – יש כאן גם טוויסט…

חברת ששמעו, התעניינו או הקימו PoC (או אולי עברו) לפתרונות HC (כלומר Hyperconverge) ראו שפתאום הם לא חייבים לרכוש את הסטורג'ים היקרים (מאוד) או סוויצ'ים סופר יקרים שעושים המון דברים. פתרונות Hyperconverge כמו ה-VSAN של VMWare, או Nutanix או SimpliVity או OpenStack (או RHV של רד-האט) נותנים גם ביצועים יפה וגם שרידות מרשימה – והכל רץ על שרתים סטנדרטיים כשהכל בעצם רץ כ-(Software defined (storage/network. ולפי 2 הדוחות, חברות מגלות יותר ויותר עניין בפתרונות כאלו מאשר הפתרונות הקאלסיים של ברזלים קניינים ויעודיים.

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