על פריצות "מבפנים" ועל דרכים להקשות זאת

כמעט אצל כל חברה שיש לה תשתית מחשבים רצינית עם שרתים (או בענן), בדרך כלל קיימות הפרדות בין חיבורי רשת לאינטרנט לבין חיבורי LAN. שרתים ומחשבים מקבלים כתובות IP פנימיות ולא כל מחשב או שרת מקבל גישה לאינטנט. מבחינת כניסה לא מורשית מבחוץ – בדרך כלל יהיה פתרון Firewall ובחברות שמשקיעות – יהיה כנראה גם פתרון IDS/IPS ואולי עוד כלים נוספים, הכל כדי למנוע פריצה של גורמים זדוניים מבחוץ.

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

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

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

בדרך כלל, לפני פריצה כזו, הם יבצעו תחקיר בסיוע כל דבר אפשרי (ריגול דרך האינטרנט ברשתות חברתיות, ריגול "קלאסי" תוך שימוש בסוכנים שנמצאים בארץ) כדי למצוא מי האנשים שאותם הם הולכים לתקוף במובן הסייבר. הם יחפשו אנשי IT ואם אפשר – אנשים שיש להם כמה שפחות ידע/נסיון בתחום ה-IT אך שיש להם גישה פנימית למערכות, אחד כזה שלמחשב שלו בעבודה יש חיבור לאינטרנט ול-LAN הפנימי, והוא לא ממש שם לב לשינוי בין URL כמו secure.iec.co.il ל-secure.iec.co.il.info (דוגמא פיקטיבית, אין לי מושג ירוק בתשתית של חברת חשמל). נניח שהראשון מפנה ל-ADFS או משהו חשוב אחר. ה-URL השני שנתתי הוא מזויף והפורצים הקימו אותו (כולל העתקה של גרפיקה עד לביט האחרון) כך שאותו איש IT לא יחוש בסכנה ויכניס את פרטיו האמיתיים להיכנס למערכת. (אגב, טריק ששמעתי שמשתמשים בו אחרי הכנסת שם משתמש וסיסמא הוא להציג הודעה של שם משתמש/סיסמא שגויים כדי "לשאוב" שמות משתמש וסיסמאות נוספות מאותו איש IT).

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

מהרגע שאותו קובץ פועל, לפורצים יש בעצם גישה. סביר להניח שהם יפתחו איזו מערכת C&C (ר"ת Command & Control) כדי לראות איך לגשת אל המערכת, ומכיוון שמשתמשי IT רבים משתמשים בתוכנות כמו SecureCRT ותוכנות אחרות המאפשרות גישה במקביל לשרתים, יש עכשיו לפורצים דרך להיכנס למערכות האחרות עם ההרשאות של אותו איש IT ומהמחשב שלו, כך שסביר להניח ששום מערכת מניעה לא ממש תזהה פעילות חריגה. תזכרו – בשלבים הראשונים, הפורצים לא משנים קבצים וקונפיגורציות, הם לומדים.

אז … מה ניתן לעשות כדי להקשות?

יהיו כאלו שיציעו להשתמש ב-Smart Card. רעיון לא טוב, מכיוון שבד"כ ה-Smart Card נמצא בתוך המחשב ולא מוציאים אותו ואת ה-PIN אפשר לתפוס עם key logger. אז הפתרון הזה עף החוצה.

פתרונות אחרים שיכולים לעזור, הם פתרונות שבעצם מבוססים על אימות כפול, תוך שימוש בטביעת אצבע עם ציוד בחיבור USB או באמצעות TOTP (ר"ת Time Based One Time Password) שמותקן על הטלפון הסלולרי. אפליקציה פופולרית לכך (שנמצאת ב-Repo של כל הפצת אינטרנט) היא Google Authenticator (האפליקציה לא מצריכה חיבור אינטרנט).

איך מיישמים זאת? בכמה צעדים, תלוי במערכת:

  • מערכות לינוקס רחוקות עם כניסת SSH: אם נחליט על TOTP עם שימוש באפליקציה כמו ה-Google Authenticator (יש אפליקציות אחרות ויש גם את המפתחות RSA המפורסמים, כולם עושים את אותה עבודה), נוכל לעקוב אחר ההוראות כאן כדי להתקין זאת. משהו שצריך לקחת בחשבון – תצטרכו להעיף מפתחות SSH מקובץ ה-authorized_keys על מנת שה-TOTP יפעל. כך שתנסו להיכנס לאפליקציה, המערכת תבקש ממכם קוד וידוא שיופיע לכם באפליקציה בטלפון (או במפתח RSA הפיזי).
  • מערכות לינוקס/Windows מרוחקות עם כרטיס Yubikey (גוגל בקרוב מוציאה מוצר מתחרה שנקרא Google Titan, גם הוא פתרון מבוסס FIDO2) – בדרך זו יש לחבר ל-USB מפתח ובכל פעם להעביר את האצבע כשיש צורך לבצע אותנטיקציה. השיטה הזו יותר מאובטחת משיטות שימוש בקורא טביעות אצבע שמובנה במחשב). גם כאן, תצטרכו לבצע תהליך התקנה, רק שכאן יש גם שימוש ב-OpenPGP. כל הפרטים נמצאים כאן.
  • מערכות Windows (תוך שימוש ב-RDP): פתרון חינמי אין למיטב ידיעתי, יש פתרון מסחרי שתומך גם ב-TOTP וגם ב-FIDO2, יש פתרון של חברת ROHOS כאן.

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

על בעיה 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 שחברתכם מחפשת אליהן פתרון (מבוסס לינוקס או מבוסס קוד פתוח). אתם מוזמנים לענות כאן (ללא ציון שם חברה או פרטים מזהים אחרים של מקום עבודתכם) ואולי תקבלו הצעות מעניינות של פתרונות שונים ואם תרצו תוכלו לפנות למציע (כל פרילאנסר יכול כמובן לענות).

חושבים לשדרג ציוד? תתכוננו לעליית מחירים

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

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

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

ונחזור לטכנולוגיה.

כיום כל שרת, סוויצ', סטורג' מורכב (וחלקית מיוצר) בסין. בכל ציוד כזה יש עשרות, מאות ולפעמים אלפי רכיבים שנוצרים במדינות אחרות שאינן סין, אך אותם שבבים, לוחות, קבלים וכו' וכו' מגיעים אל סין אל אחת מהיצרניות המחשבים/שרתים/חומרה הגדולות (כמו Quanta, Pegasus, FoxConn, Lotes ואחרים) ושם הדברים מורכבים ברמות שונות (רוב ה-PCB באותם ציודים לדוגמא מודפס בסין ועליו מורכבים השבבים וכו'), נארז ונשלח לארה"ב או למדינות אחרות בהתאם לבקשת הלקוח.

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

אני משער שעתה יאמר קורא הבלוג "חץ, ציוד שקונים פה בארץ לא מגיע ישירות מארה"ב אלא מגיע מאירופה, בריטניה ולפעמים ישירות מסין כך שהמסים האלו לא ממש חלים על רכישת ציודים לישראל", וזה נכון .. חלקית. אני אתן דוגמא מהעבר: לפני מס' שנים הייתי צריך לרכוש עבור לקוח כמה מאות דיסקים קשיחים לטובת הקמת ארכיב. באותם ימים התרחש צונאמי גדול בטיוואן ואחד מהמפעלים של יצרן דיסקים קשיחים הושבת, מה שאוטומטית העלה את המחיר ב-35-50% (ואלו היו דיסקים SAS Enterprise, ממש לא זולים) וגם היבואן בארץ העלה את המחיר צ'יק צ'יק ב-46% לאותו סוג דיסקים ספציפי, רק שבמקרה זה הגיע לי מידע ממישהי אצל אותו יבואן שהדיסקים שהזמנתי – נמצאים בחיפה, ובקיצור מנסים לעשות עליי "שיטת מצליח". אחרי סידרת צעקות היבואן החליט לרדת מהתרגיל.

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

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

חג שמח 🙂

שיטת שידור חדשה מיוטיוב

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

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

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

אז מה עושה מישהו שרוצה לשדר וידאו עכשיו ואין לו תקציב? ובכן, יוטיוב הוציאה פונקציה חדשה שנקראת Go Live והיא זמינה מעתה לכולם. עם הפונקציה הזו כל מה שצריך זה מחשב נייד עם מצלמת Webcam טובה (כמו Logitech C920 ומעלה), מיקרופון עם חיבור USB שישב מול מגיש השידור .. וזהו.

מעתה כל מה שצריך לעשות זה להיכנס ליוטיוב, לוודא שאתם מחוברים בשם המשתמש שלכם, ללחוץ על הפתור הוידאו עם ה-+ ולבחור Go Live (הדפדפן כרגע צריך להיות כרום). בחרו את המצלמה, המיקרופון, תנו כותרת, צלמו את עצמכם או העלו תמונת Preview ו.. אתם בשידור, בלי להפעיל שום תוכנה צד ג' ואפשר לעשות זאת מכל מחשב, וגם לשדר מהשטח (כל עוד יש לכם חיבור סלולרי טוב עם חבילת DATA רצינית).

לאלו שרוצים לשדר עם מצלמות יותר רציניות, אז אפשר להשתמש בציוד USB של Elgato או אם מדובר במחשב דסקטופ, אז כרטיס Black Magic יעזור. כל מה שצריך לעשות זה לחבר את המצלמה המקצועית דרך חיבור ה-HDMI שלה אל הכרטיס, ולבחור את ה-Elgato או ה-Black Magic כמקור וידאו ואת המיקרופון המקצועי כמקור אודיו – ולשדר.

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

פריצת ה-Spectre – תיקוני סיליקון

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

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

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

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

מה שאינטל כן יכולה להוציא זה את מעבדי ה-Xeon SP החדשים עם תיקונים (שאגב, לפני התיקון תצטרכו לשדרג את ה-BIOS/UEFI אחרת המכונה לא תצליח אפילו לבצע Boot), רק שכאן הבעיה היא שאף חברה לא "זרקה" את כל השרתים שלה והחליפה אותם לשרתים עם מעבדי Xeon-SP, כל חברה נורמלית בד"כ כשהיא מחליטה לשדרג, השדרוג מחליף רק חלק מהשרתים. אין שום סיבה לזרוק מכונות עם מעבדי Xeon V4 לדוגמא.

אם כבר מדברים על Xeon V4, אינטל כנראה תצטרך להוציא את התכנון של ה-Xeon V4 ולבצע גם שם תיקונים ולייצר את המעבדים הללו מחדש עם התיקונים. הנחות על מעבדי Xeon SP לא יספקו לשום חברה כתירוץ לרכוש שרתים "במקום" ולהשקיע אלפי דולרים פר שרת (וגם לא ניתן להכניס מעבדי Xeon SP לתושבות Xeon V4). "למזלה" של אינטל – שרתים בעלי Xeon V3 יכולים לקבל מעבדי Xeon V4 כך שאם אינטל תוציא מעבד Xeon V4, היא תוכל "לכסות" שרתים עם Xeon V3. כאן מתעוררת בעיה לוגיסטית: בניגוד למעבדי דסקטופ, לקוחות לא יכולים לבוא, לפרק את המעבדים מהשרתים, לנסוע למקום כלשהו, לקבל מעבדים חלופיים בהחלפת המקוריים, לנסוע בחזרה לחברה, להחליף ושזה יעבוד (בכל מקרה זה לא יעבוד, צריך קודם לשדרג BIOS/UEFI ורק אז להחליף מעבד פיזית). אינטל תצטרך כנראה לדאוג שיצרני השרתים יסעו ללקוחות ויבצעו תהליך החלפה (אם זה אפשרי בכלל. מה עושים לקוחות שיש להם TYAN, סופרמיקרו או שרתים "לבנים" אחרים?), אבל .. מי בדיוק ישלם על זה? טכנאי, נסיעות, שעות עבודה – זה לא בחינם ואינטל תצטרך לשבור את הראש על כך, ועוד לא דיברנו על תהליך ולדיציה – איך בדיוק אינטל תדע כמה מעבדים יש לחברה? להציג חשבוניות – אף חברה לא תסכים לכך (מה גם שזה מאוחסן אי שם…) – בקיצור לאינטל יש הרבה על מה לחשוב.

כשזה מגיע לדסקטופ – הסיפור נהיה יותר מורכב. לוחות אם עם מעבדי Coffee Lake אינם תואמים למעבדי Skylake, והסיפור מסתבך מכאן. ושוב – האם אינטל מצפה שלקוחות יביאו את מחשבי הדסקטופ למקום כלשהו על מנת להחליף? ומה בכלל עושים עם לאפטופים? שם המעבדים בכלל מולחמים ללוח האם, האם אינטל מצפה שיצרני הלאפטופים יחליפו לאפטופים ללקוחות? יש לכך בערך 0% סיכוי.

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

משפחת ה-Xeon W החדשה של אינטל. שווה לרכוש?

אפתח בסיפור קצר: לפני שנים רבות (קצת אחרי שעברתי מהצפון למרכז) עבדתי דרך מספר חברות כ"א שהפנו אותי לעבודות שונות אצל הלקוחות שלהן. לאחת מהחברות היה לקוח מאוד מעניין: ביטוח לאומי, וביקשו ממני ללכת להתראיין לעבודה שם. הראיון עבר בהצלחה וביקשו ממני להתחיל לעבוד בשבוע לאחר מכן. לפני שיצאתי החלטתי לשאול שאלה פשוטה: במהלך השיחה שלנו סיפר המראיין על המחשבים שיש לפקידים/ות שהם מחשבי IBM מקוריים (אז אלו היו ממשפחת ה-PS/2 היותר מתקדמים) ואני תהיתי – מדוע ביטוח לאומי אינם רוכשים תואמים מיבואן מקומי כלשהו, כך ביטוח לאומי היה יכול לחסוך יותר יותר מ-50% מתקציב הרכישה. תשובת המראיין: "בשביל השקט". כך למדתי לראשונה שחברות גדולות ירכשו בסכומים מאוד גבוהים מחשבים שלא יתנו שום יתרון טכני זולת אותו "שקט".

בשבוע שעבר אינטל הכריזה על משפחת מעבדים חדשה, ה-Xeon W שמיועדת (כפי שהאות W רומזת) לתחנות עבודה. מבחינת דירוג, מעבדים אלו לתחנות עבודה יושבים באמצע, כאשר ברמה הראשונית יש את ה-Xeon E3 (כלומר תקבל משהו שהוא טיפ טיפה יותר מ-i7 לדסקטופ, אבל עם מגבלות של 32 ג'יגהבייט זכרון), לאחר מכן מגיעים דגמי Xeon W ואם אתה צריך יותר מכך, אתה מוזמן לעבוד למשפחת ה-Xeon החדשים תחת שם הקוד Purley. אם נשווה זאת לדגמים קודמים, הרמה ההתחלתית היתה גם אז Xeon E3, אם אתה צריך יותר אז היית רוכש Xeon E5 V4 מסידרה 16XX ואם אתה צריך מערכת עם זוג מעבדים, היית רוכש מערכת עם מעבד (או 2 מעבדים) מסידרה 26XX. בתכל'ס – אף אחד מיצרני תחנות המותג לא היה מוכר מערכות עם 16XX אלא מערכות עם מעבדים 26XX כאשר היית יכול לרכוש מעבד יחיד ולהרחיב יותר מאוחר ל-2 מעבדים מאותה משפחה. אם לעומת זאת היית בונה מערכת, היית יכול לקנות לוח אם לתחנת עבודה ולהרכיב בו מעבד Xeon E5 V4 16XX ואם היית רוצה ביצועים נוספים, היית יכול להחליף אותו למעבד E5 26XX. טריק נוסף נחמד שהיה הוא האפשרות להחליף מעבד Xeon E5 דור 3 (כלומר V3) לדור 4 מבלי להחליף חומרה נוספת, רק עם עדכון BIOS והחלפת מעבד+קירור.

מאז שאינטל הוציאה את דור 4 ואת מעבדי ה-Kaby Lake לדסקטופ, חלו כמה שינויים גדולים בתחומי המעבדים. AMD יצאה עם משפחת ה-Ryzen והראתה שאפשר למכור לציבור מעבדים מכובדים עם יותר ליבות בפחות מהמחיר שאינטל מבקשת על Kaby Lake ולשם שינוי – גם לתת ביצועים מכובדים. בחודש שעבר AMD גם שחררה את משפחת ה-Threadripper שלה שנותנת ללקוחות ה-Prosumer מעבדים עם עד 16 ליבות ו-32 נימים, עם תמיכה של עד 1 טרהבייט זכרון ECC, עם 64 נתיבי PCIE ובלי שום נעילת מעבדים (מבחינת Overclocking) במחירים נמוכים בהרבה ממה שאינטל מציעה.

אינטל בתגובה הוציאה את מעבדי ה-Skylake-X עם Chipset חדש (ה-X299 – כך שאתה חייב להחליף לוח אם) ובמשפחת מעבדי ה-Skylake-X ישנם מעבדים שבקצה הנמוך הם עם 4 ליבות (ללא תצוגה ושמיד מבטלים לך חצי מפונקציונאליות לוח האם) ועם מעבדים די ראויים בסידרת ה-78XX כאשר בקצה העליון יש מעבד כמו 7890XE עם 18 ליבות, 36 נימים, 44 נתיבי PCI ואפילו RAID לדיסקים מבוססי NVME! כמובן שאינטל גובה על המחיר למעבדים אלו מחיר מפולפל. על ה-7890XE היא גובה 2000$ (זה כמובן לא כולל לוח אם די יקר). הפתרון המתחרה של AMD עולה 1000$ (עם פחות 2 ליבות אבל עם יותר פונקציונאליות) – אבל אינטל לא ממש מתעניינת בתחרות ואלו המחירים.

וכרגיל, כשזה מגיע לאינטל, עצם העובדה שהיא מוכנה למכור מעבדים עם יותר ליבות במחיר יותר גבוה – לא אומר שהיא תפתח פונקציונאליות שהיא מייעדת ל-Enterprise – למשתמשי ה-Prosumer! חס ושלום! רוצה זכרון? יופי, נגביל אותך ל-128 ג'יגהבייט. זכרון ECC? לא ולא! אז מה אם אתה תשלם מחיר יקר בהשוואה לפתרונות של AMD?

מה שמביא אותנו למעבדי ה-Xeon W החדשים. המעבדים האלו .. הם בעצם ה-Skylake-X רק שאינטל הפעילה כמה ביטים בתוך המעבד והגבילה את התאימות שלהם. זה שקנית לוח אם עם X299 Chipset לא אומר שתוכל לרכוש Xeon W ולהכניס אותם (למרות שהם בדיוק עם אותם כמות פינים – 2066). בשביל זה אינטל הוציאה Chipset חדש, ה-C422 וכמובן אותו Chipset מקבל רק Xeon W ואתה לא יכול לתחמן בהכנסת מעבד Skylake-X. גם מחירי ה-Xeon W קיבלו "שדרוג" ואתה תשלם בין 400-1000$ יותר על אפס תוספת בביצועים, אבל תוכל להכניס זכרון ECC (בלבד!) עד 512 ג'יגהבייט, ותקבל את שאר הבבל"ט של ה-RAS ושאר ירקות שאינטל דוחפת ללקוחות Enterprise.

עד לשנה האחרונה, לחברות שרצו תחנות עבודה או ביצועים של תחנות עבודה, לא היו הרבה ברירות. או Xeon עם המחירים הגבוהים או מעבדים כמו 6950X שהיה יותר מיועד ל-Enthusiasts עם תג מחיר מאוד גבוה. כיום לעומת זאת – המצב שונה לחלוטין. תחנות קצה רגילות (דסקטופ) לחברות – אפשר לרכוש עבורן Ryzen Pro (שכולל את הפונקציות ל-Enterprise) או Ryzen רגיל ולתחנות דסקטופ רגילות עבור הפקידות ניתן לרכוש מעבדים כמו Ryzen 3 (מגיע עם 4 ליבות ויותר זול מ-i3 שמגיע רק עם 2). לקצה הגבוה של תחנות עבודה אפשר לרכוש תחנות עם Skylake-X או AMD Threadripper (בהתחלת השנה כל יצרני המותג יאפשרו רכישה כזו), ואם מתעקשים על פונקציונאליות של Enterprise אז ניתן לרכוש את ה-Xeon W או לחלופין תחנה עם מעבד כמו EPYC 7401P שעולה $1050 אבל מגיע עם 24 ליבות, 48 נימים, 124 נתיבי PCIE ותמיכת זכרון ECC עד 2 טרהבייט ובעודף שנשאר במקום רכישת Xeon W אפשר לרכוש מספר SSD או כרטיס/ים GPU טוב/ים.

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

אינטל מציגה – הדור השמיני .. בערך

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

אינטל הציגה לפני כשנה (ב-20 לאוגוסט 2016) את משפחת ה-Kaby Lake, מעבדים חדשים לדסקטופ ולמובייל, הדור השביעי החדש. כשמנפים את כל הילולי היח"צ, מבינים אנשי מקצוע רבים שקניה של המעבדים הללו לא תועיל בהרבה. כן, יש שיפור של 10-15% (וגם זה רק במקרים מאוד מסויימים), אבל שינויים ושיפורים משמעותיים – אין ממש כאן. בהמשך הדרך אינטל הציגה את ה-Kaby Lake-X, משפחת מעבדים שצריכה לוח אם חדש עם צ'יפ X299, רק שעד היום רבים וטובים לא הצליחו להבין מה עבר בראש להנהלת אינטל בחיפה. קניה ושימוש במעבד כזה מבטיחה לך מיידית שהלוח אם היקר שקנית – מחצית ממנו מיד תהיה מושבתת ברגע שתכניס מעבד Kaby Lake-X לתושבת, ושלא לדבר על כך שאין אפילו את היחידה הגרפית במעבד. בקיצור – אתה משלם יותר ממחיר מעבד Kaby Lake (ואם תכלול את מחיר הלוח אז המחיר יוצא הרבה יותר), ואתה מקבל .. פחות. מה בדיוק הטעם לרכוש מעבד כזה ממשפחה כזו? אין לי ולאחרים מושג ירוק.

אז שלשום אינטל ניסתה את מזלה בפעם השלישית בהצגת .. Kaby Lake Refresh כלומר "דור שלישי" ל-Kaby Lake (ובקיצור KLR), וגם הפעם אינטל הבטיחה ניסים ונפלאות, רק שהם יותר התרכזו בתוכן וידאו ברזולוציית 4K (ואם מי שקורא את הוידאו חושב שמעבד כזה ללא כרטיס גרפי חיצוני יתן פתרון טוב לעריכה – הוא טועה טעות מרה), וכרגיל גם הפעם אינטל הצהירה שהמעבדים החדשים יהיו מהירים ב-10-15% בהשוואה ל-Kaby Lake (על Kaby Lake-X אף אחד לא דיבר במהלך החשיפה).

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

להלן התשובה של אינטל (לחצו להגדלה):

עד היום בסידרת המעבדים U של אינטל בגירסת ה-15 וואט, היו 2 ליבות ו-4 נימים. אינטל סוף סוף בדגמים i7-8650U, i7-8550U, i5-8350U, i5-8250U מוסיפה 2 ליבות ומאיצה את מהירות השעון כשהמעבד נמצא במצב Turbo (אם כי מהירות הבסיס יותר נמוכה, לא באשמת אינטל, יש גבול למה שאפשר להוסיף במגבלת מעטפת של 15 וואט). בנוסף, אינטל הכפילה את זכרון המטמון בדגמי i7 ל-8 מגהבייט ובדגמי i5 ל-6 מגהבייט. אם נתרגם את זה לביצועים אז אם האפליקציה שאתה מריצה אינה מתפרסת על נימים וליבות נוספים, תקבל עוד 5-15% בביצועים אולם באפליקציות שיודעות לנצל כמות ליבות ונימים, תקבל ביצועים יותר גבוהים עד 40-50%. בכל הקשור לכמות זכרון במחשב, היצרנים יוכלו להציע עד כמות זכרון של 32 ג'יגהבייט (בניגוד למגבלת ה-16 ג'יגהבייט בעבר). שימו לב: המעבדים האלו לא יופיעו בכל המחשבים הניידים אלא יותר במחשבים בסקטור ה-Ultra Book במחירים שמתחילים ב-1000$ ומעלה (מחיר המעבד בלבד הוא בסביבות ה-410$!!)

אינטל בחודשים הקרובים תציג את שאר המעבדים שמיועדים לדסקטופ או למחשבים ניידים כתחנות עבודה (Mobile Workstation – סידרת ה-35 וואט) תחת השם Coffee Lake ובשנה הבאה היא תציג עוד מעבדים באותו דור (אם כי ביצור של 10 ננומטר) תחת שם הקוד Ice Lake. על מעבדי ה-Coffee Lake אפרסם פוסט בקרוב אבל ממה שכבר ידוע, אינטל החליטה להוסיף לכל המעבדים עוד 2 ליבות ולהרחיב את הזכרון מטמון בחלק מהמקרים.

כפי שציינתי לעיל, עניין הליבות הוא מאוד חשוב ואני שמח שאינטל החלה לזוז בעניין. אחד הצעדים המבורכים שאינטל עשתה היא להוציא את סידרת ה-Sky Lake X שסוף סוף מאפשרת לצרכנים לרכוש מעבדים ופתרונות עם 8 עד 18 ליבות מבלי למכור כליה או למשכן את הבית בקניית מעבדי Xeon (הסידרה הזו לא מחליפה את Kaby Lake אלא רק מוסיפה דגמים לשוק היותר מקצועי). אפשר לראות זאת גם בסידרת מעבדי ה-Atom C3000 החדשה שמיועדת לשרתים קטנים (דגש על "קטנים", זה מובנה בתוך לוח אם Mini ITX) ששם אינטל סוף סוף מציעה מעבדים עם 16 ליבות ו-16 מגהבייט זכרון מטמון במחיר זול (יחסית!) של 449$ (הלוח עם המעבד עולה בערך $1000).

מה שעכשיו אינטל צריכה לעשות, זה להפסיק עם ההתנהגות של "בשביל מה לך?". אינטל מדור לדור של מעבדים ו-Chipset מקצצת בכמות ניתובי ה-PCIe. מילא היה מדובר בחסכון מחיר לצרכן אך כפי ש-AMD מוכיחה עם מעבד ה-Threadripper 1900X שלה (ששם AMD מציעים 8 ליבות ו-16 נימים עם 60 ניתובי PCIe זמינים למשתמש! במחיר של 549$ למעבד) – אין כאן שום חסכון. גרוע מכך – בלוחות עם ה-X299 Chipset, כל מקל M.2 SSD עובר דרך ה-Chipset ואם יש לך 2 מקלות או יותר, אתה תקבל ביצועים שמוגבלים ע"י ה-Chipset. ב-AMD אין שום מגבלה כזו במעבדי ה-Threadripper, ואין שום בעיה להכניס אפילו 4 כרטיסים גרפיים ולקבל PCIe X16 על כל כרטיס, דבר שהוא בלתי אפשרי בלוחות המבוססים על X299 וחבל.

עוד נקודה שאינטל צריכה להבין – היא עניין המחירים. כש-AMD יצאו עם מעבדי ה-Ryzen, אינטל חתכה במכה אחת את המעבד עם הכי הרבה ליבות שהיה לה לדסקטופ (ה-6950X) מ-1700$ למחיר של 628$ (כיום באמזון ניתן להשיג אותו במחיר מצחיק של $359!). כיום בסידרת מעבדי ה-Sky Lake-X, מחיר מעבד של 16 ליבות ו-32 נימים שיצא בקרוב יעלה לא פחות מ-1700$ (בשעה שמעבד Threadripper עם 16 ליבות ו-32 נימים עולה $1000). כפי שתיארתי לעיל, גם מעבד כזה יסבול מהגבלות בגלל ה-X299 Chipset אולם עד כה אינטל לא חשבה להוריד מחירים.

לסיכום: לעניות דעתי, אינטל צריכה הרבה יותר להקשיב לצרכנים שהם הלקוחות שלה. מבחינת מכירות, אינטל מוכרת הרבה יותר ללקוחות הדסקטופ והמחשבים הניידים מאשר לשרתים או לסקטורים אחרים. לקוחות רוצים יותר ואם לקוחות מעוניינים, אז כדאי לספק להם את מה שהם רוצים במחיר הוגן. אם לקוח רוצה שהמחשב שלו ירוץ בצורה מעולה ללא תקלות ורוצה להשתמש בזכרון מסוג ECC – אינטל צריכה לאפשר לו במקום לחסום את זה ברמת ה-Chipset. אם לקוח רוצה להכניס 4 מקלות M.2 ולקבל מהירות מקסימלית ב-RAID-5 ולא להיות מוגבל על ידי Chipset – אפשרו לו ותחסכו את הפדיחות ש-AMD מציעה כל מה שלא הצעתם ובמחיר יותר זול.

על CI/CD ועל Jenkins

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

נתחיל בהסתכלות על המצב ה"קלאסי" של פיתוח, אצל חברות שמפתחות תוכנה המשווקת לציבור. בחברת הפיתוח יושבים כמה מפתחים וכל אחד (או קבוצה) אחראים לפיתוח חלק כלשהו. GUI, לוגיקה, ועוד ועוד. כל קבוצה (או יחידים) מפתחים בנפרד ובסוף יום (או כמה פעמים ביום) כל אחד מעלה את הקוד שלו למערכת SCM (ר"ת Source Code Management) ואחת לזמן מה מגיע החלק הקשה – איחוד הקוד של כל האינדיבידואלים או הקבוצות השונות לקוד אחיד למה שיהיה בהמשך גירסה חדשה של התוכנה. באיחוד כזה מתרחשים הרבה קונפליקטים מבחינת קוד – אחד שבר (בטעות) קוד ישן, השני הגדיר דברים בצורה שונה והקוד שלו בעייתי לאיחוד, ויש עוד שלל בעיות באיחוד קוד (שלא לדבר על ההערות שנזרקות…) שנכתב לאורך תקופה ללא איחוד. אלו כמובן בעיות שיש להן פתרון (במיוחד עם GIT..) ולכן עולה השאלה "בשביל מה אנחנו צריכים CI/CD אם אנחנו לא סטארט-אפ?"

ל-CI/CD (ר"ת של Continuous Integration ו-Continuous Deployment בהתאמה) יש (די בצדק) שם שמתאים לפיתוח בדרכים של ASD (ר"ת Agile Software Development) או בשם יותר ידוע – XP (ר"ת Extreme Programming), מה שדי מרתיע חברות פיתוח "קלאסיות" מאימוץ CI/CD, אבל יש יתרונות גדולים ל-CI/CD:

  • זמן פיתוח קצר בהרבה
  • שמירת תאימות לאורך זמן
  • תיקון באגים בזמן קצר בהרבה בהשוואה למצב הקלאסי
  • ה-Time To Market מתקצר משנים לימים או שבועות.
  • לקוחות מקבלים יותר פונקציונאליות ושרותים נוספים מבלי להמתין זמן רב עד שהחברה תכתוב את הקוד הכרוך בפונקציונאליות הנוספת.
  • קל למצוא באגים בקוד ולתקן במהירות.
  • כל המערכת רצה בצורה הרבה יותר יציבה
  • זמן ה-Downtime מתקצר לאחוזים בודדים

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

Image result for jenkins logoנכיר בקצרה את Jenkins. מערכת Jenkins נוצרה ב-2005 ע"י מפתח שעבד ב-Sun ו-Sun שחררה את הקוד לקהילה והמוצר עבר שינויים שונים במהלך חייו והיה נקרא Hudson. ב-2011 חברת אורקל (שרכשה את SUN) הצליחה להסתכסך עם קהילת המפתחים בקוד פתוח ולפיכך המפתחים החליטו לקחת את הקוד ולפצל (Fork) את המוצר ולתת לו שם חדש: Jenkins.

ל-Jenkins ישנם יכולות רבות בכל מה שקשור ל-CI/CD. המערכת עצמה מתאימה הן למשימות פשוטות (קימפול קוד והנגשת קבצים בינאריים לשותפים עסקיים לדוגמא) ועד לעבודות מורכבות הקשורות להעברת קבצים בינאריים למערכות אחרות, המתנה לתשובות והעברה לפרודקשן, או להקמת מכונות VM חדשות שיריצו את החבילות הבינאריות החדשות, אך זה לא נעצר כאן – ל-Jenkins יש גם מספיק תוספים שמאפשרים פונקציונאליות כמו בדיקת סגנון קוד, הפצת קבצים בינאריים/חבילות (לדוגמא: artifcats) ועוד פונקציות רבות שמצריכות התקנת Plugin (לגבי מתחרים ל-Jenkins – ראו התייחסות בהמשך).

אחרי שהקמנו מערכת Jenkins, אנחנו מתחילים להשתמש בה והעבודה ב-CI/CD מתחילה עם המפתחים. אחרי שהמפתחים דחפו את השינויים מגיע תור ה-CI Server או במקרה שלנו – Jenkins לעשות את העבודה. ניצור JOB שבו בעצם אנחנו מגדירים ל-Jenkins מה לעשות. מהיכן לקחת את הקוד, מה לקמפל, ומה לעשות עם הקבצים (כמו לדוגמא האם להעביר אותם בדיקת סגנון קוד עם SonarQube לדוגמא) להעלות אותם ל-Artifactory, לשרת אחר וכו'.

מבחינת המפתחים, כשעובדים ב-Continuous Integration כל מפתח כותב את הקוד שלו, מוריד את הקוד של האחרים מה-SCM, משנה את הקוד שלו בהתאם על מנת לאחד אותו עם השאר, מריץ קוד בדיקות (Unite Testing), ולאחר שהקוד עבר בהצלחה בדיקות מקומיות, הוא מבצע Push ל-SCM. את התהליך עושים מספר פעמים ביום בכל פעם שכותבים חלק, לדוגמא – כותבים פונקציה חדשה, משפרים משהו קיים, מתקנים באגים וכו'. משם Jenkins ימשיך את תהליך ה-CI אם נגדיר לו מתי (אם לבדוק את ה-SCM אם מישהו ביצע commit לדוגמא, או לפי שעון).

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

מכאן אנו עוברים לחלק של ה-CD או ה-Continuous Deployment: קימפול והכנת קבצים בינאריים וחבילות זה טוב – אבל צריך לעשות עם זה משהו…

ב-Jenkins יש לנו "צינורות" (Pipelines) ועם הפונקציונאליות הזו אנחנו נגדיר ל-Jenkins מה אנחנו הולכים לעשות עם הקבצים הבינאריים. אנחנו יכולים לדוגמא להגדיר בצינורות לזרוק את הקבצים הבינאריים בשרת טסטים, להריץ טסטים שונים (Unit tests, Selenium ועשרות סוגים שונים של בדיקות, תלוי בקוד, פלטפורמה וכו'). לאחר שהקבצים עברו בהצלחה בחינה, אנחנו יכולים להורות בצינור לבצע Deploy של החבילות בשרת "מראה" של פרודקשן להתקין את החבילות ולהריץ בדיקות שונות נוספות. לאחר שגם כאן הבחינות עוברות, אפשר להורות בצינור להטמיע את החבילות החדשות בשרתי הפרודקשן באופן אוטומטי או לפי הוראה של המפתחים/מנהלים.

ci-cd-jenkins
כך נראית החלוקה בין CI ל-CD

המעבר ממצב תכנות ועבודה "קלאסית" למצב CI/CD לוקח אמנם זמן ותכנון מראש, אולם מהרגע שעוברים – רואים את התוצאות בזמן קצר מאוד. כיום, כשחברות רבות מעדיפות לדוגמא לתת שרותי SAAS/PAAS ללקוחות, הם (הלקוחות) מבקשים לעיתים תוספות שונות, הן ב-API והן בפונקציונאליות. בעבר תשובה ללקוח כזה היתה משהו כמו "תודה על הפידבק, ניקח זאת בחשבון ואולי נוסף לגירסה שתצא בשנה הבאה", כיום אם החברה מוצאת שהרחבה כזו חשובה – אפשר להוסיף קוד שנותן פונקציונאליות נסיונית (ולהצהיר על כך ללקוחות שמדובר בתוספת שהיא BETA) תוך זמן קצר יותר מבעבר ואז לפי הפידבק שניתן מהלקוחות ואפשר להוסיף/לשנות דברים. כך לדוגמא גוגל, אמזון ומיקרוסופט עובדים בכל מה שקשור לשירותים חדשים בענן.

בסופו של יום, לקוחות דורשים מיצרניות התוכנה והשירותים דברים רבים והם מעוניינים במענה מהיר ואם הם לא מקבלים, הם לא מתביישים להתחיל לבדוק את הפתרונות של המתחרים (תשאלו את Pay pal) ואף לעבור למתחרים, מה שעלול לגרום הפסדים כספיים. עבודה ב-CI/CD יכולה לעזור בקיצוץ הזמנים באופן ניכר.

מה לגבי מתחרים ל-Jenkins? ישנם לא מעט מתחרים ל-Jenkins בשוק (הנה לדוגמא טבלת השוואה קצרה בין ל-Jenkins ו-2 פתרונות אחרים מובילים, החלק של Open Source לא כל כך עדכני לגבי המתחרים), אך הבעיה הראשונה של רובם שהם פתרונות SAAS, כלומר שהמערכת אינה נמצאת אצלך בשרתים אלא אצל חברה אחרת ואתם משלמים לה. זה יכול להיות פתרון טוב אם הקוד כולו מהרגע הראשון הוא קוד פתוח, אולם מצד שני – אני לא מכיר הרבה חברות שיש להן קוד סגור שמעוניינות לבצע Build אצל חברות זרות. יחד עם זאת, כמובן – יש ויש.

מבחינת תאימות פלטפורמות – Jenkins הוא קוד פתוח מ-א' ועד ת' והוא רץ יפה מאוד על Windows (לא צריכים Windows Server), מק וכמובן לינוקס. הוא תומך בכל שפה, ויש לו יותר מ-1200 תוספים שונים שכוללים תמיכה בכל SCM, בכל קומפיילר, אותנטיקציה, אחסון וכו'. יחד עם זאת, כדאי לקחת בחשבון שלא כדאי "לערבב" – אם לדוגמא הקוד שלכם כתוב ב- #C, הקימו את Jenkins על Windows, אך אם אתם כותבים בשפות אחרות שרצות על לינוקס, עדיף להרים את ה-Jenkins על לינוקס הואיל ותחזוקת האבטחה הרבה יותר קלה.

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

הערת מפרסם
הח"מ פרילאנסר שמחפש עבודות בתחום לינוקס, Devops, ודברים הקשורים ל-Software Defined Storage, וירטואליזציה וכו'. מי שמעוניין בפרטים – אפשר למצוא אותם כאן.

מערכות משובצות: ללכת באופן מסודר

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

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

מנסיוני בתחום – כדאי לעשות את הדברים בצורה אחרת לגמרי. נכון, לפעמים יש אילוצי זמן, Time to market וכו', אבל אם ניקח את ההשקעה הכספית בהבאת יועץ חיצוני או מתכנת חיצוני (ב-2 המקרים זה לא זול) בשביל שינסה לעשות משהו שקשה עד בלתי אפשרי לעשות – נראה שבסופו של דבר היה עדיף מלכתחילה לשנות את הדרך ולהתחיל .. הפוך

הדבר הראשון שיש למצוא הוא "מה צריך כח?". לדוגמא – אם הקופסא תשמש כנתב, אז רכיבי הרשת צריכים יחס מיוחד ואסור לסמוך על מה שיצרן ה-SoC נותן בצ'יפ. צריכים לטפל בתעבורה של 1 ג'יגהביט לדוגמא? כדאי וצריך לצייד את הלוח בצ'יפ רשת יעודי (עם שאר החלקים). דוגמא אחרת: צריכים ראיה ממוחשבת שתדע למצוא עצמים במהירות פריימים גבוה? אז אתם צריכים GPU חזק שמגיע ברוב המקרים יחד עם CPU חזק (כדאי לשים לב: במקרים כמו של מעבדי אינטל, לדוגמא סידרת Atom X3/X5/X7 – אתם תקבלו מעבד בהחלט חזק בהשוואה למעבדי ARM בינוניים, אבל בכל מה שקשור ל-GPU, כל מעבד ARM בינוני עם Mali 500 ומעלה עוקף אותו). עוד דוגמא היא עניין המצלמות: מצלמות סיניות פשוטות לא יעשו את העבודה, ומצלמות שמוציאות YUV (ושאר פורמטים קרובים) רק יקטינו את כמות הפריימים שתוכלו לעבד עם תוכנות ראיה ממוחשבת.

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

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

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

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

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

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

כשמחפשים פרילאנסר לפרויקט

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

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

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

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

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

אז מה ניתן לעשות? כל עוד מדובר במציאת פרילאנסר, אפשר לבצע כמה דברים:

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

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

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

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

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

קישורים:

  1. XPLACE – אחד האתרים הגדולים בארץ למצוא פרילאנסרים ולפרסם פרויקטים (אגב, פרסום הפרויקט הוא בחינם) – מאוד פופולרי
  2. Freelancerim – עוד אתר בתחום בארץ
  3. vlancer
  4. Find a freelancer
  5. פורום "הייטק פרילאנסרים" בפייסבוק

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