לחשוב בחיוב על העסקת עצמאים

 

הערה
הפוסט הזה נכתב בכלליות על עצמאים בתחום ההיי-טק בארץ.

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

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

אני בהחלט יכול להבין מדוע חברות מעדיפות לעבוד עם חברות אחרות שמעסיקות מתכנתים, Devops וכו'. החברה שנבחרה תשיג את איש המקצוע המתאים, תחתים אותו על הניירת, הוא יגיע למשרדי הלקוח, יעשה את העבודה וילך. כשזה מגיע לתשלום – חברות רבות מציעות גם תשלומים של שוטף+60 או אפילו שוטף+90. העובד שהן שלחו לא מבצע טוב את העבודה? לא יפקפקו בהחלטתך וישלחו לך כבר למחרת מישהו אחר תוך מתן התנצלות.

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

הבעיה בכל הסצנריו שתיארתי לעיל? המחיר. כמה יותר? בניגוד למצב שאני מוכר ללקוח לדוגמא הפצת לינוקס כלשהי ואני אקבל 10-20% מהמכירה הסופית, לחברות שמעסיקות אנשי מקצוע – הרווח הרבה יותר גדול. כמה יותר גדול? בסביבות 50-150%. בנוסף, לכם אין מושג ירוק כמה הבחור שהם שולחים באמת מכיר את התחום או פשוט "מתגלח על הזקן" שלכם.

סתם דוגמא מלפני מספר חודשים: ללקוח שלי ישנה מערכת שכתובה בשפה שאינני מכיר אותה מספיק טוב ויש בקוד מספר תקלות רציניות (הוא ידע על כך מראש והוא לא לקח אותי כדי לכתוב באותה שפה אלא לדברים אחרים לחלוטין). הצעתי לו שאחפש לו ללא תשלום מישהו אחר שיעשה ספציפית והוא ישלם לאותו לקוח בנפרד. הגיעו 2 הצעות מחברות, חברה אחת הציעה מחיר של 600 שקל לשעה עם מינימום 5 שעות עבודה, והחברה השניה הציעה 650 שקל לשעה (עם מינימום 4 שעות עבודה). סתם לשם השוואה, מאותו לקוח גביתי כ-300 ש"ח לשעה. בסופו של דבר מצאתי עצמאי שגבה מאותו לקוח 280 ש"ח לשעה עם מינימום 3 שעות עבודה (היו הרבה שעות עבודה בין כה). האם אותו לקוח חסך? בהחלט, בכך שהוא לקח את העצמאי לעשות את אותה עבודה (ואותו עצמאי בסופו של דבר קיבל מאותה חברה פרויקט גדול נוסף בעקבות עבודתו המעולה).

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

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

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

מעכשיו – יש גם מכירות

במחירים כאלו – אין לנו כל כוונה לרכוש את המוצר!

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

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

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

עברו 48 שעות ואותו מנמ"ר מרים אליי טלפון. ה-PoC שהוא חשב עליו? מבוטל. מדוע? הצעות המחיר שהוא קיבל היו לדבריו "מבהילות" והוא לא מוכן לשלם מחירים כאלו. מכיוון שאני מכיר מחירים, ביקשתי שישלח לי את ההצעות במייל, אולי יש כאן אי הבנה של איזה איש מכירות או משהו. קיבלתי את ההצעות ומכיוון שאני מכיר את המחירים של יצרן התוכנה – חשכו עיניי. קודם כל שהיו חסרים חלקים שגם עולים בתשלום אבל גם כך – הצעות המחיר היו בין 180 ל-250 אחוז מהמחיר שהיצרן מבקש וההצעות לא כללו מחירים נוספים הכוללים התקנה/אינטגרציה וכו'. פשוט קובץ ISO ומספרים סריאליים פר שרת.

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

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

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

אז החל מהיום, אם אתם מחפשים מוצרים ופתרונות של רד-האט או SuSE, "חץ ביז" הוא פרטנר רשמי של 2 החברות ואתם מוזמנים ליצור קשר

 

תכירו את Open Shift

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

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

אם נסתכל בתשתית ה-Corporate במחלקות הפיתוח לדוגמא, נמצא במקרים שרת SCM כמו GIT (או SVN, מרקיוריאל ואפילו רחמנא ליצלן .. CVS וכו'), אלו שהחלו להיכנס לעולם ה-CI/CD הקימו בוודאי שרת Jenkins ואולי כמה Slaves, אם החברה מפתחת ב-JAVA אז יש בוודאי איזה שרת Nexus, בנוסף ישנם מספר שרתים שמריצים אפליקציות Web, שרת Apache או NGINX (או IIS). הכל רץ טוב ויפה (כשזה רץ…), אבל כשצריך להגדיל את התשתית, מישהו יצטרך לחפש כדורים נגד כאבי ראש עם כל הבירוקרטיה שיש ב-Corporate.

עם Open Shift הדברים שונים. Open Shift (שאגב, היא מערכת PAAS לכל דבר ועניין!) משתמשת בקונטיינרים כדי להריץ את מה שאתה צריך כשכל דבר רץ בקונטיינר נפרד. יש לך אפליקציה ב-PHP שצריכה לכתוב ל-MySQL? כמה קליקים ויש לך 2 קונטיינרים, תוסיף Route ושתיהם מדברים אחד עם השני, שתיהם לא צריכים לשם טסטים לדוגמא להיות עם יותר מ-1 ג'יגה זכרון (סה"כ ל-2 הקונטיינרים) ושתיהם יחד לא יצטרכו יותר מליבה אחת של המעבד בשרת וזה ירוץ מעולה תחת POD יחיד (POD זו ההגדרה של מספר קונטיינרים שרצים בקבוצה). רוצים לגדול עם האפליקציית PHP? שתי קליקים עם העכבר בממשק ה-WEB ותוך שניות ספורות יש עוד קונטיינרים שמוכנים לקבל גולשים, ולא – אתה לא צריך לשבור את הראש על Routing, על Load Balancing וכו' – בתוך Open Shift יש את Kubernetes שעושה את העבודה לבד ברקע. כך גם אם קונטיינר מסוים יפול, המערכת תרים מיידית קונטיינר נוסף תוך שניות ספורות (במקום לחכות כמה דקות עד שיקום VM עם כל התהליכים שהוא צריך לאתחל) והמערכת יכולה להמשיך לתת שרות.

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

אז איך בעצם זה עובד? הנה תהליך עבודה פשוט לדוגמא:

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

צריך להריץ Deployment בשיטות כמו Blue-Green או AB? שתי השיטות נתמכות.

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

כאן מגיע יתרון גדול של Open Shift. לא משנה איזו תשתית וירטואליזציה יש לך, תהיה הפופולרית ביותר או אזוטרית ביותר, בין אם זה מקומית או בענן פרטי או ציבורי – Open Shift תרוץ. כל מה שאתה צריך זה מספר מכונות VM (או ברזלים פיזיים) ו-Subnet כתובות פרטי וציבורי. מה שנשאר לך לעשות זה להקים Open Shift במכונה אחת (או כאשכול), "לשדך" את שאר מכונות ה-VM שיריצו מערכת Atomic Host (זו גירסת לינוקס מאוד מצומצמת שנועדה להריץ קונטיינרים) ומשם לקמפל את הגירסה היציבה ולהריץ אותה עם רפליקציה. מערכת ה-Kubernetes הפנימית תדע להפיץ את הקונטיינרים בין מכונות ה-VM (וכן, יש גם Auto Scaling ו-HA) ואם אתם מריצים את זה בענן, שרות ה-Load Balancer ידע להעביר את התעבורה ל-IP חיצוני (לא צריך ציוד יעודי יותר בתוך החברה שיעשה LB). קונטיינר נופל? VM נופל? המערכת תדע להתאושש לבד.

ומה עם אבטחת מידע? כאן דווקא החיים יותר קלים. עם VM כשיש אבטחת מידע, אתה צריך לעבור מכונה מכונה ולהתקין את עדכוני האבטחה. תארו לכם שיש לכם מאות (או אלפי) VM ואתם יכולים לדמיין לבד את הכאב ראש הכרוך בכך. עם קונטיינרים לעומת זאת, בין אם יש חור אבטחה בקוד שלכם או באחת מהחבילות שהקונטיינר משתמש, כל מה שתצטרכו לעשות זה Rebuild לקונטיינר ואם יש לכם רפליקציה של הקונטיינר, המערכת תוריד כל פעם קונטיינר ותשאיר את השאר רצים (תוך עדכון ה-Load Balancer) כך שמבחינת הגולשים המערכת תהיה זמינה וכך כל הקונטיינרים יוחלפו בגרסאות מעודכנות (בזמן ה-Build המערכת מורידה את הגרסאות של החלקים השונים עם התיקוני אבטחה אוטומטית). כך שכשזה מגיע לבעיית אבטחה, כל התהליך לוקח דקות ולא שעות או ימים!

עד כה כל הטכנולוגיה שדיברתי עליה מדברת על הרצת דברים שכתובים ללינוקס, אבל מה עם אלו שכותבים ב-DotNet? ובכן, מאז שמיקרוסופט ורד-האט חתמו על הסכמי שת"פ, האהבה פורחת ביניהם וכיום ניתן לקחת אפליקציות שכתובות ב- #C עם DotNet ולבנות אותן על לינוקס ולהרים קונטיינר כזה. בשלב זה טכנולוגיות הקונטיינרים של מיקרוסופט עדיין לא עובדת ישירות טוב עם Open Shift אבל אפשר לבנות להריץ אפליקציות כפי שציינתי. אגב, ניתן לשלוט על Open Shift בעזרת ה-CLI גם מתוך Windows (כל מה שצריך זה להתקין Ruby, Git ולהריץ מספר קטן של פקודות).

להלן הדגמה של ASP שרץ עם Open Shift:

הוידאו הבא ידגים איך מקימים מערכת CI/CD מלאה יחד עם Open Shift:

ומה לגבי הטמעת מערכת כזו בחברה?

גם כאן, כמו ב-CloudForms/ManageIQ ישנם מספר גרסאות:

  • יש גירסה שרצה על הענן של רד-האט ומשלמים Pay As you Go, בין אם ב-VM או בברזלים נפרדים.
  • יש גירסת קוד פתוח (גירסה שמהנדסי רד-האט מפתחים, יכולים לצוץ באגים!) שנקראת Open Shift Origin.
  • וישנה גירסת ה-Open Shift Enterprise בתשלום עם תמיכה לשנה או 3 שנים במסלולים שונים.

מבחינת הטמעה וקאסטומיזציה – זה מאוד תלוי בחברה ובדרישות. הקוד של Open Shift כתוב ב-GO.

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

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

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

על בניית מערכת מוקשחת לאנדרואיד

בארגונים רבים יש נוהל בו ניתן טלפון סלולרי לעובד מחברה כלשהי. מכשיר זה בד"כ מנוהל ע"י צוות ה-IT והוא מקבל עדכונים רשמיים הן מיצרן המכשיר והן דרך תשתית ה-IT (או חנות האפליקציות – כמו Google Play Store או ה-Appstore של אפל). בד"כ מנהל ה-IT יוכל להגדיר לשם אבטחה ביטול או חסימת אפליקציות ושרותים מסויימים. ארגונים שמחפשים להגן על תוכן וגישה לאפליקציות מסויימות במכשיר, יכולים להשתמש בתשתית כמו KNOX (במקרים של סמסונג) או בדברים יותר פשוטים כמו Applock שמאפשרים לנעול אפליקציות מסויימות כך שניתן יהיה להשתמש בהן רק עם טביעת אצבע או קוד מיוחד שיש רק לבעל המכשיר.

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

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

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

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

על מנת לשלוט טוטאלית על מה שיהיה במכשיר ומה לא יהיה, אלו פונקציות יהיו פעילות ואלו לא יהיו קיימות – יש צורך "לבנות" את האנדרואיד מחדש למכשיר ולקמפל כמעט הכל מחדש על מנת ליצור מספר Images שונים – וכאן ה-"Fun" מתחיל…

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

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

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

  • ראשית, יש צורך בשיתוף פעולה מצד יצרן המכשיר במסירת קוד המקור למכשיר או שיתוף פעולה ע"י יצרן המעבד. הסיבה העיקרית לכך היא שישנם חלקים רבים של קוד שאינם קוד פתוח ובלעדיהם לא ניתן לבנות מערכת חדשה. קחו לדוגמא את עניין הדרייברים: ללא קוד מקור לדרייברים, לא ניתן לבצע קימפול אפילו לקוד שמפעיל אפשרות להתחבר לרשת סלולרית או WIFI, מסך מגע או תצוגה חלקה של המסך. ללא שיתוף פעולה ניתן "לקושש" באינטרנט אחר דרייברים בינאריים שנבנו עבור גירסה מסויימת לאנדרואיד, אולם אין שום בטחון שהם יפעלו.
  • רוב יצרני הטלפונים הסלולריים נועלים את מכשיריהם בפני עדכונים לא-מורשים בכך שהם חותמים כל עדכון עם שילוב מפתח פרטי/ציבורי, כך שכל Image שיבנה עבור המכשיר – לא יוכל להיות מותקן על המכשיר. כשיש שיתוף פעולה עם היצרן, ניתן להעביר אליו בקשות חתימה ולעדכן בעזרת תוכנות שונות את קושחת המכשיר. ללא שיתוף פעולה של היצרן – יש צורך בלבצע Root, להתקין תוכנת Recovery (כמו TWRP), לבטל מספר בדיקות שאמורות להגן על המכשיר משינויים ורק אז ניתן להתקין Image שנבנה עבור הלקוח.
  • במידה ומדובר במכשיר שמיוצר עבור החברה (נניח בסין) אז בהחלט ניתן לבנות Image, אולם יש לקחת בחשבון שהעבודה צריכה להתבצע מאפס. אני לא ממליץ לשום חברה בטחונית (או חברה שאבטחת המידע חשובה לה) להסתמך על קושחה/ROM של היצרן הסיני, המכשירים בד"כ מגיעים קושחה עמוסת חורי אבטחה ולפעמים גם הקושחה מגיעה עם תוכנות ש"מחייגות הביתה".
  • עבודת בניית Image היא פרויקט שלוקח זמן (זו הסיבה שיצרני חומרה משחררים עדכוני קושחה רק לאחר מספר חודשים) הואיל וישנם דברים רבים שצריך לכוון ולהגדיר לפי הבקשות של הלקוח. בנוסף, אלו בד"כ פרויקטים מתמשכים – הואיל וגוגל משחררת מדי חודש עדכוני אבטחה ויש צורך לבנות עדכון על סמך העדכונים של גוגל. בנוסף, גוגל משחררת גרסאות אנדרואיד חדשות כל שנה ויש צורך לבצע את רוב העבודה מחדש (גירסת Kernel מוחלפת ואז יש צורך לוודא אם הדרייבים מצליחים לפעול או שצריך לחכות לדרייברים חדשים מיצרן החלק הספציפי של החומרה) – בקיצור אם מישהו חושב שזה תהליך שלוקח שבוע, הוא "טיפה" טועה 🙂

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

עוד נקודות חשובות לפני מעבר לענן

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

הנקודה הראשונה היא עניין הידע הטכני שקיים באותה חברה. בסטארטאפים לדוגמא, כל עניין ההקמה, תחזוקה, הגדרות, אוטומציה – נופל על איש (או צוות, בהתאם לגודל הסטארטאפ) ה-Devops. מכיוון שרוב מוחלט של הסטארטאפים מקימים את התשתית שלהם בגוגל או באמזון, קיימת חובה מצד איש ה-Devops לדעת היטב דברים כמו Bash, Python הבנה של פורמט קבצים כמו JSON, YAML וכמובן אוטומציה כמו Puppet או Chef, Ansible. בלי זה – איש ה-Devops לא יתקבל לעבוד ב-Startup. זה שמישהו מכיר סיסטם Windows או ניסה פעם אובונטו וגם אם הוא יודע PowerShell, ידע זה לא ירשים את המראיין והוא יפסול את המועמד.

לעומת זאת, חברות לא מעטות בארץ ובחו"ל מעדיפות את הענן של מיקרוסופט, וכאן איש ה-Devops יצטרך יודע ידע בטכנולוגיות של מיקרוסופט (PowerShell ואחרים) כדי לעבוד. מיקרוסופט נותנים SDK לשפות אחרות ו-CLI למערכות הפעלה פופולריות, אך מי שעובד לדוגמא הרבה עם AWS ויעבור להשתמש ב-Azure, יגלה לאחר זמן מה שמיקרוסופט יותר משקיעה בטכנולוגיות שלה מאשר בטכנולוגיות האחרות. כך לדוגמא אם תרצה לבצע אוטומציה עם הכלים הפופולריים בלינוקס, החיים שלך לא יהיו כל כך קלים.

לסיכום נקודה זו: Azure יותר מתאים לחברות שיש להן תשתית בסיס שמורכבת מתשתיות מבוססות מיקרוסופט (AD וכו') וגם יש לאותה חברה שרתי Linux (סתם דוגמא: 70 VM של Windows ו-30 לינווקס) עם אנשים שרובם מבינים בתשתית של מיקרוסופט. אם המצב לעומת זאת הפוך, הפתרונות של גוגל ושל אמזון (לעניות דעתי) יתאימו הרבה יותר לעבודה.

הנקודה השניה החשובה לדעתי זו המחשבה של העברת מכונות אחת לאחת מה-DC שלכם לענן (לדוגמא: העברת 100 VM מה-DC שלכם לענן הציבורי). לא חשוב איך תסתכלו או איזה ספק ענן תבחרו, החשבוניות שתקבלו יהיו מבהילות מסיבה אחת פשוטה: שום ספק ענן ציבורי לא מחפש למשוך לקוחות רק כדי לארח את ה-VM שלהם כ"ספק טיפש" כמו אלפי ספקי VPS בעולם. כל הנקודה של ספקי הענן היא שתשתמשו בשירותים שלהם. אל תרימו Exchange לדוגמא, אלא תשתמשו בשרותי המייל שלהם. אל תרימו SQL משלכם אלא תשתמשו בפתרון ה-SQL שלהם ובכך תוכלו להתחיל בקטן ולגדול עד למימדים מפלצתיים, הכל בתשלום לפי שעה (חלקם לפי דקה) ובמקרים כמו אמזון (בחלק מהמקרים) – ההמלצות הם להשתמש בדברים כמו Serverless ללא צורך ב-VM יעודי, במקום להשתמש ב-Load Balancer הקלאסי שכולנו מכירים – להשתמש בשרות (החדש) ALB שעושה Load Balancing לאפליקציות במקום שכבות.

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

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

בהצלחה 🙂

סיכום שנת 2016 – אחסון מבוסס קוד פתוח

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

מבחינת מוצרים מסחריים, ScaleIO של EMC יצא השנה בגירסה 2.0 עם שיפורים ניכרים הן בטכנולוגיה והן מבחינת ביצועים (לתשומת ScaleIO – אכפת לכם לרדת משמות ציודים כמו dev/sda/? היום הכל הולך ב-UUID, כך שמי שמזיז דיסקים, לא יקבל שמות שונים ומערכת שנופלת!). עוד ועוד חברות מוציאות Appliances שמשתמשים במוצרי קוד פתוח קיימים (Gluster, Ceph, ZFS) כדי למכור פתרונות Scale Out המאפשרים הרחבה לגדלים של פטהבייטים ומעלה. קשה לפרט כי יש המון כאלו.

מבחינת פתרונות Scale Up, עדיין ZFS שולט בראש, ומוצרים הכוללים אותו (QuantaStor, FreeNAS ואחרים) הולכים ומשתפרים "מסביב" – כלומר הטכנולוגיה נשארת אותה טכנולוגיה, רק שנוספים דברים כמו תמיכה יותר טובה ל-Active Directory, מכונות וירטואליות קטנות שניתן להרים על הקופסא הפיזית של ה-Storage (במקרה של FreeNAS) ועוד. השנה גם אינטל החלה להיכנס בזהירות לתוך ZFS (במיוחד ללינוקס) עם תרומות קוד בכל הקשור לטסטים ונסיונות על מכונות עם דיסקים מרובים (מה לעשות, אין הרבה חברות שמרימות מכונות עם 40+ דיסקים מכניים + SSD רק לשם טסטים). השנה גם עניין ההצפנה נכלל באופן טבעי ב-ZFS עם מספר אפשרויות להצפנה הן ברמת קובץ או Volume וכו'.

מבחינת Scale Out – פתרונות CEPH שולטים כפתרונות קוד פתוח וחינמי/זול. השנה סוף סוף הגיעה היציבות ל-CephFS כך שניתן לבצע ישירות mount ל-CephFS לשרתי לינוקס שונים ללא צורך בהגדרות מיוחדות. השנה החלה גם להיכנס (עדיין לא בצורה יציבה אלא כ-Technology Preview) ה-BlueStore – טכנולוגיה שכותבת את המידע שמגיע ל-Ceph בצורה שונה ויותר אופטימלית כך ששימוש ב-SSD ב-Ceph יכול לתת ביצועים פי 2 ומעלה. עוד דבר חשוב – טכנולוגיות דיסקים חדשות (PMR, SMR וכו') נתמכות ב-BlueStore עוד הרבה לפני הפתרונות הסגורים המסחריים (לא מומלץ להכניס דיסקים SMR לפתרונות סטורג' ל-VM או דברים כאלו, אלו דיסקים שמיועדים לגיבוי וארכיבאות בלבד)

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

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

למי שמחפש את הגירסה הארוכה:

אם נסתכל מבחינת ביצועים נטו, הן ZFS והן Ceph יכולים להוציא מיליוני IOPS בלי יותר מדי בעיות ולשרת משתמשים מרובים בצורה חלקה. כמובן שיש צורך בלהגדיר דברים רבים בשביל להגיע לתוצאות אלו – אך זה בהחלט דבר אפשרי, הן לעבודה מול שרתי וירטואליזציה, עיבוד תמונה, עיבוד וידאו, הזרמת וידאו וכו' וכו'. יחד עם זאת – אני לא ממהר להמליץ לזרוק את ה-Netapp/EMC/3PAR שלכם לטובת מערכות כאלו מהסיבה הפשוטה שיש הרבה דברים שהמערכות הסגורות נותנות וזה כולל ממשק נוח, הרחבות שונות קנייניות שעוזרות בעבודה של הסטורג' ועוד.

ב-2 הפתרונות, ניתן לייצא החוצה קבצים ב-CIFS ו-NFS וכמו כן Block Devices (כמו iSCSI).

בד"כ הסיטואציות שאני ממליץ להשתמש בפתרונות קוד פתוח הן:

  • בתוך LAB
  • בשימוש בוירטואליזציות קוד פתוח (Open Stack, KVM, Xen, Oracle VM, VirtualBox)
  • שרת אחסון נתונים הן כגיבוי והן כהזרמה (Streaming – לגיבוי אני יותר ממליץ את ZFS)
  • צוותי פיתוח (לזה אני ממליץ יותר את ZFS)
  • מקומות עריכה גדולים של וידאו (4K), אודיו וסטילס (פוטושופ)

מבחינת בחירת פתרון – Ceph ו-ZFS דורשים פתרונות חומרה שונים לחלוטין. ב-Ceph מתחילים עם 3 שרתים יעודיים (שלא יריצו כלום חוץ מ-Ceph) ומתג רציני (10 או 40 ג'יגה) וזה הפתרון שמאוד מתאים לחברות שרוצות להגדיל את הנפחים ומהר או להתחיל מההתחלה במאות טרה בייט ולגדול לפטהבייטים ומעלה. לעומת זאת, ZFS שאמנם יכול לגדול ל-Zettabyte עם תוספת בקרים שונים וקופסאות JBOD נוספות, אך הגדילה שלו מעבר לפטהבייטים מצריכה הרמת אשכולות ZFS ושימוש בפתרונות כמו Lustre וזהו עניין שבהחלט אפשרי – אך מורכב.

מבחינת חסכון: פתרון קוד פתוח לא מבטיח עלות אפס גם אם אתם מיישמים לבד הכל. כן, זה יהיה יותר זול מפתרון קנייני, אבל דיסקים, דיסקים SSD ל-Enterprise, המכונות עצמן, מתגים וכו' – עולים לא מעט ותחזוקת החומרה היא עליכם. בנוסף, יש לא מעט מקרים שאני ממליץ (במיוחד ב-Ceph) לרכוש את הגירסה המסחרית של תוכנת הקוד הפתוח על מנת לקבל עדכוני תוכנה ותיקוני תוכנה וכדאי לקחת זאת בחשבון (במקרה של Ceph ישנו הפתרון בישראל של SuSE SES 4 ו-RedHat Storage 2.1 – שתיהן מבוססות על Ceph בגירסת Jewel).

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

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

"מאחורי הקלעים" של אבטחת שרתים

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

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

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

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

אז זהו, שזה הפוך.

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

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

אחרי שעוברים את המשוכה הזו, צריכים להחליט את מה מקשיחים. התשובה לשאלה כזו בד"כ תיענה ב-"את הכל", וכאן מתחילה בעיה. בחברה קטנה עם 4-5 מכונות לינוקס העניין פשוט וקל, אותו דבר בייצור Appliance, אבל כשיש לחברה מאות או אלפי מכונות VM שמריצות לינוקס, הבעיה הרבה יותר מורכבת: לכל גירסת הפצת לינוקס יש לממש את סטנדרט ה-CIS שלה ברובו מחדש, כך שמדובר פה על השקעה שיכולה לקחת מספר חודשים. הסטנדרט שונה בין CentOS לבין SuSE לבין אובונטו ורק חלק קטן מהסטנדרטים חופף בין ההפצות. כמובן שאם כל המכונות שלכם מריצים את אותה הפצת לינוקס ואותה גירסה – אז חייכם דבש 🙂

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

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

זהו, שלא ממש..

אחת הבעיות המרכזיות כשזה מגיע לאבטחת שרתים, היא בעיית חורי אבטחה שמתגלים כמעט כל יום. העדכונים לחורי האבטחה מגיעים רק לאחר מספר ימים (במקרה הטוב) או כמה שבועות (במקרה הפחות טוב) או אפילו חודשים (אהלן מיקרוסופט!). מה עושים עד אז? בד"כ יצרניות ההפצה יתנו הוראות מניעה זמניות כיצד לפתור לבינתיים את הבעיה. העניין הוא שההוראות מגיעות באנגלית ואולי עם דוגמא לסקריפט BASH או Python. איך בדיוק תפיץ את זה למאות שרתים? אתה כמובן יכול לבנות חבילה (RPM או DEB), להוסיף ל-REPO מקומי ולהפיץ זאת דרך תוכנת העדכונים שלכם, אבל תצטרכו איכשהו לעשות לתיקון הזמני Roll Back וזה לא ממש קל, במיוחד אם חור האבטחה נוגע לאפליקציה שיש לה המון תלויות ואז מדובר במתכון בטוח לכאב ראש פר שרת.

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

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

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

מעבר לענן שאלות ותשובות (חלק 1)

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

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

ש: האם יש הבדל גדול בין ספקי ענן בארץ לבין ספקים כמו אמזון/גוגל/מיקרוסופט?
ת: קודם כל – כמובן, עניין הגודל 🙂
וברצינות – ספקים כמו השלישיה שצוינה לעיל עובדים באופן שונה לחלוטין מכל מה שמכירים בישראל. גוגל/אמזון/מיקרוסופט בונים את הארכיטקטורה שלהם באופן שונה לחלוטין. כשמדברים על Storage לדוגמא, לא תמצאו אצלם NetApp או EMC או כל סטורג' (גדול ככל שיהיה) שקיים ללקוחות בשוק הרחב. מדובר על "פתרון סטורג'" שאותו ספק ענן תכנן, בנה ופיתח בעצמו. אין דיסקים SAS ואין RAID ואין LUN או כל המושגים שאנחנו מכירים מעולם ה-IT הרגיל שלנו. המערכות שלהם יודעות להתמודד באופן שגרתי גם עם נפילות של 8 או 10 דיסקים, גם אם זה קרה בעת ובעונה אחת (נדיר ביותר) והנתונים שלך תמיד זמינים. לדוגמא: אחסון ב-S3 של אמזון מגיע עם SLA מדהים של 99.999999999%. לכו תמצאו ספק אחד בארץ שיתן לכם את אותו SLA.

גם אשכול (Cluster) שאנחנו מכירים הוא די שונה אצל אותם ספקי ענן. תסתכל לדוגמא אצלכם בחברה על Cluster שהקמת. 2 המכונות באשכול (נניח) נמצאים ב-2 שרתים כאשר שתיהם נמצאים אחד מעל השני, אולי בארונות נפרדים ואולי אפילו בקומות נפרדים. אצל השלישיה – Cluster זה אומר ש-2 המכונות עבורך יושבים ב-DC שונים גיאוגרפית באותה מדינה (לאמזון לדוגמא בוירג'יניה יש לא פחות מ-5 DC. בשפה של אמזון הם נקראים Zones), כך שאם מתרחש אסון, האשכול ממשיך לעבוד וברקע מוקמת מכונה אחרת אך עדיין השרות יעבוד.

השלישיה עובדת במצב של "הכל תוכנה", כלומר דבר כמו Load Balancer – אין איזה F5 או ג'וניפר או סיסקו Load Balancer, אלא תוכנות שהספק כתב ויודעות להתמודד עם מיליוני Request לשניה כמו כלום. אותו דבר לגבי חומות אש וכו' וכו'. בגלל זה כמעט שום חברת תוכנה מסחרית (למעט מיקרוסופט – רשיונות מערכות הפעלה) לא מצליחה למכור לספקי הענן תוכנות או חומרה (אם כי אותם חברות תוכנה בהחלט מרוויחות לא רע ממכירת VM אצל ספקי הענן הנ"ל).

כאן בישראל לעומת זאת, ספקי הענן עובדים בדיוק כמו שעובדים ב-Corporate. הסטורג' הוא סטורג' מסחרי סגור, האשכול מוקם באותו DC, ואם מתרחשת תקלה (אהממ.. מזגנים, קבלן אידיוט שלחץ עם הגב על הכפתור האדום והשבית חשמל, דברים שהתרחשו בארץ) – המערכת שלך מושבתת והרעיון להקים אשכול בין 2 DC יהיה קצת בעייתי (במיוחד אם אתה צריך אחסון משותף ל-2 השרתים). בגלל זה בד"כ בארץ עובדים בשיטה של DR (כלומר Disaster Recovery) כאשר אם המערכות שלך בארץ נופלות, המערכות שלך אצל ספק חיצוני "תופסות שליטה" אבל זה כמובן שונה לחלוטין מאשכול שעובד בברירת המחדל אצל השלישיה כ-Active/Active.

יחד עם זאת, לספקים בארץ (ורוב חברות ה-Hosting הגדולות בחו"ל) יש יתרון על פני השלישיה בכל הקשור להתרחבות תשתית קיימת. אם אתה משתמש לדוגמא ב-vSphere של VMWare ואתה מעוניין להתרחב מעבר ל-DC הקיים שלך, מוצר כמו vCloud Air (או כל פתרון Hybrid Cloud אחר בהתאם לתשתית הוירטואליזציה שלך) יכול בקלות לעזור לך להתרחב, כל מה שתצטרך לעשות זה למצוא שותפים לפלטפורמת ה-vCloud במדינה שאתה מעוניין לבצע את ההרחבה אליה, להיכנס למו"מ לגבי מחירים ולאחר החתימה להתקין את ה-vCloud Air, לבצע הגדרות – ואתה מוכן להתרחבות. האם ניתן יהיה לעשות זאת עם השלישיה? עוד לא (עם אמזון זה נמצא בשלב ה-Technology Preview ואני בספק אם יהיה ניתן לעשות זאת עם Azure של מיקרוסופט) אבל גם אם זה אפשרי – לא תמצאו שם חסכון (זיכרו: אצל ספק רגיל בחבילה אתם מקבלים X טרהבייט תעבורה החוצה, באמזון כל ביט שיוצא החוצה מעבר לג'יגהבייט הראשון – אתם משלמים).

מה שמוביל לשאלה הבאה:

ש: מה ההבדל בין העננים של השלישיה לבין Hybrid Cloud?
ת: כפי שתיארתי לעיל, הרעיון של Hybrid Cloud הוא בעצם הרחבה של ה"ענן" הפרטי שיש לכם בחברה, כאשר הכל בעצם מבוסס על מכונות VM שרצות. לדוגמא: ב-Hybrid Cloud אם אתה צריך שרות כמו SQL, אז אתה מרים VM שמריץ SQL Server, Oracle או MySQL לדוגמא וה-VM הנ"ל מספק שרות SQL לאחרים. אין לך ספק חיצוני שמספק לך שרות SQL בהתאם לדברים שאתה צריך. סטורג' – כמעט אותו סיפור: או שיש לך סטורג' חיצוני שממנו תשתף תכנים (CIFS/NFS) או תשתמש ב-iSCSI אבל הכל בסופו של דבר כרוך בסטורג' החיצוני שלך, או שתרים VM עם דיסקים גדולים וממנו תייצא את אותם שרותים, כך ש-Hybrid Cloud מאפשר לך בעצם להתרחב בדיוק עם אותה תשתית ושימוש ב-VM וסטורג' חיצוני (או דיסקים פנימיים בחלק מהמקרים, תלוי בגודל חברה, תקציב וכו')

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

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

ש: האם השלישיה מציעה שרותי SSO? (ר"ת Single Sign On)
ת: תלוי לאיזה ספק ענן אתה פונה.

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

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

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

אפשרות יותר זולה היא להשתמש בשרותי ה-VPC/VPN של אמזון. באופן עקרוני, כשאתה פותח חשבון באמזון, המערכת של אמזון בונה עבורך VPC (ר"ת Virtual Private Cloud) ולזה אתה יכול לחבר VPN חומרה ולהתחבר בחיבור מאובטח VPN Site to Site ויש גם אפשרויות אחרות. פרטים ניתן לראות כאן.

לגבי מי ששאל על SD-WAN: זה תלוי בספק SDN שלכם. רובם מציעים כבר פתרון חיבור מאובטח לשלישיה (לפחות ל-Azure ולאמזון כיום)

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

כל ספק מציע ערימות שרותים, אולם כדי לתכנת את השרותים, הספק מציע API שאיתו אתם עובדים. ב-Azure לדוגמא יש צורך בידע טוב של PowerShell ובמקרים מסויימים #C. באמזון לדוגמא כדאי שיהיה לך ידע של Python, Java ולפעמים גם JS וקצת BASH. בגוגל – אותו דבר כמו במקרה של אמזון.

משהו נוסף שדי חשוב שיהיה לכם במקרים של אמזון וגוגל: ידע די טוב בלינוקס (אם המכונות שלכם מבוססות לינוקס) ובמקרה של אוטומציה – עדיף שתדעו Chef או Puppet וכמובן שידע כלשהו ב-Ruby זה לא יזיק. אם אתם חובבי Ansible (הח"מ חובב זאת) אז יש תמיכה ישירות ב-AWS כולל עבודה יותר קלה בהשוואה ל-CloudFormation של אמזון.

על יעילות IT בחברות

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

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

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

בפוסט זה אני רוצה לדבר על 3 נקודות:

  • על Image ועל נחיצות Image להתקנה על מחשב
  • אוטומציה
  • תיעוד

נתחיל בעניין Images:

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

אך כשזה מגיע למחשבים ניידים לדוגמא, הרעיון של Image בניגוד למה שחושבים הוא אינו יעיל. קודם כל, תסתכלו בכל חברה ותראו מספר דגמים של מחשבים ניידים (מה לעשות, ההנהלה מקבלת דגמים הרבה יותר יקרים מהעובדים), כך שגם אם ניצור Image והמחשב יהיה מוכן להתחברות ל-AD, אנחנו נצטרך להריץ עדכונים של מיקרוסופט, עדכוני דרייבים ותוכנות של יצרן המחשב, עדכוני תוכנות צד ג' (פלאש, JAVA וכו') כך שהזמן מרגע הפעלת המחשב עד שהוא מוכן לשימוש אינו קצר, ואגב – אם תבדקו לדוגמא את השחזור מערכת הפעלה שהיצרן מספק ב-Partition נפרד, תראו שהוא אינו מזריק Image ל-Partition המרכזי אלא יש שם מספר קבצי BAT שמתקינים WIM בסיסי ועל זה הם מתקינים אפליקציה אפליקציה והגדרות עד למצב קבלת מערכת מוכנה (במפעלים המצב שונה כמובן כי שם יש שכפול מכני של הדיסקים באלפים, אם כי גם שם בחלק מהתהליך יש "הזרקה" של נתונים כמו מספר סידורי של Windows ל-UEFI ועוד).

אז מה ניתן לעשות?

אפשרות אחת פשוטה היא שימוש ב-PXE (לדוגמא iPXE) כך שהמחשב הנייד יהיה עם דיסק קשיח ריק והמחשב יבצע Boot מהרשת, וב-Boot הזה ניתן יהיה להתקין WIM בסיסי לחלוטין ללא הדרייברים החיצוניים שהספק נותן (הדרייברים הללו במקרים רבים מוסיפים זבל רב – "מנהל תקשורת", "מנהל סוללה" למרות ש-Windows מספק את שניהם בצורה טובה כולל דרייברים שמספיקים להתחבר ל-LAN ולתת תצוגה) ועם NET. ו-PowerShell.

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

  • לחבר את המחשב ל-AD
  • לבקש שם משתמש של הבחור/ה שהולך להשתמש במחשב
  • לבדוק לאיזו מחלקה הוא שייך
  • להתקין לו את האפליקציות שהוא צריך ואפליקציות שהארגון מצריך
  • לבדוק PCI ID של ציוד שאין לו עדיין דרייברים ולהתקין אותם דרך SCCM (או OneGet או NuGet) עם ה-MSI שהיצרן נותן (כאן לדוגמא – של לנובו).
  • במידה ויש הגדרות מיוחדותת, הסקריפט יריץ סקריפט אחר שיבצע את ההגדרות
  • התקנת עדכוני Windows אחרונים, אנטי וירוס וכו'
  • חלק ידני – בקשת הכנסת סיסמא חדשה מהמשתמש הסופי.

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

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

לשם השוואה בעולם הלינוקס (כמו הפצת CentOS) כל הדבר הזה נעשה בקובץ kickstart די פשוט שהמערכת בעצמה יוצרת עבורך אותו בעת התקנת הפצת הלינוקס ומשם משנים את הקובץ ומריצים קבצי BASH אחרים במידה וצריך מתוך ה-kickstart.

נעבור לאוטומציה:

אם יש משהו שכל איש Devops מתחיל צריך ללמוד ומהר – זה לעשות לכל פיפס תהליך אוטומציה דרך כלי אוטומציה (Ansible, Chef, Puppet וכו') כך שהוא לא יצטרך לחזור על התהליכים – וזהו בדיוק אחד הדברים שלדעתי כל חברה צריכה לא רק בשרתים – אלא גם בדסקטופים.

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

ומכאן – לתיעוד/דוקומנטציה.

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

מדוע בעצם זה קורה?

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

וזו בדיוק הבעיה של ה-wiki הפנימי או ה-Sharepoint של החברה או כל מערכת תיעוד אחרת: היא מסובכת למשתמש, וברוב המקרים היא טקסטואלית ואינה מושכת. חושבים שמישהו ממחלקת השיווק ישב לקרוא מסמך שתומך כתב איך לתקן בעיה XYZ? תשכחו מזה – והנה עוד טיקט נוסף לרשימה הבלתי סופית של טיקטים שהתומכים יצטרכו לטפל ועוד זמן שנשרף.

מה ניתן לעשות? כמה דברים:

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

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

להלן הוידאו מכנס JAMF:

המעבר לעננים

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

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

האם המעבר לאופיס 365 תגרום ל-Corporates השונים בארץ לעבור לגמרי לענן? לעניות דעתי – לא כל כך מהר. בשביל Mail, השהיה (Latency) של 100 מילישניות לערך אינה כזה עניין גדול, לא מרגישים את זה, אך כשמדובר ב-RDP או פרוטוקולים אחרים כמו HTTP ואחרים – העניין הופך לבעייתי ובכלל בארץ, בניגוד לסטארטאפים שמתחילים מהדקה הראשונה עבודה על ענן, ה-Corporates מאוד שמרנים ויקח זמן עד שהם יעברו לענן. גוגל, אמזון ומיקרוסופט מודעות בהחלט לעניין, ומיקרוסופט לדוגמא מכינה את ה-Azure Stack – הנה לך אדוני המנמ"ר/CTO "מיני Azure" שכולו יושב ב-Data Center שלך. כל ה-DATA שלך יושב בחווה שלכם ושום דבר לא זז החוצה אם לא תרצה, ואם תרצה – תוכל לחבר את ה-Stack הזה בקלות ל-Azure הענן. גם אמזון התכוננו לרגע הזה והם חתמו עם VMWare על פרויקט חדש שנקרא VMWare Cloud on AWS שנותן לך גם פתרון שמשלב את ה-Data Center שלך עם AWS כך שתוכל להתרחב מה-DC שלך החוצה ל-AWS (והפוך). גם לגוגל יש פתרון שהוא בפיתוח ובשלב זה אין עליו מידע פתוח.

המעבר לענן, לעניות דעתי, לא יהיה שאלה של "אם" אלא "מתי". אני לא צופה שבשנה הקרובה חטיבות ה-Hosting בסלקום/בזק בינלאומי/אורנג'/טריפל C יודיעו בקרוב שהן עוברות להפסדים כי הלקוחות העיפו את השרתים מהן (לזה יקח זמן רב, אם בכלל) – אבל המחשבה והדיבור על מעבר של לפחות חלק מהתשתית לענן ציבורי תעלה שוב ושוב בכל "צומת" שהחברה תצטרך להשקיע סכומים נכבדים ב-IT: רכישת רשיונות למערכות הפעלה, מעבר לסטורג' גדול אחר, הקמת ענן פרטי (כמו OpenStack) וכו'. כמובן שיהיו גם מקרים רבים שגם בעוד 10 שנים השרתים יהיו פה ב-DC בגלל רגולציה במקרים שונים.

ובכל זאת, חברות רבות "מסתקרנות" לגבי מעבר לענן. הסיפורים של כל מיני סטארטאפים איך הם נותנים שרות למליוני אנשים ומשלמים רק כמה אלפי דולרים בודדים בחודש לספק הענן גורם לסקרנות ולרצון להתנסות, המחירים בסנטים גם קורצים לחברה שמסתקרנת רצון לטבול אצבעות, ואז הן הולכות למחשבונים של ספקי הענן ואחרי מספר חישובים הן נרתעות. סתם דוגמא: באמזון, שרת Windows יחיד עם 8 ליבות ו-32 ג'יגה זכרון עם דיסק (EBS) של 200 ג'יגה יעלה לחברה $733 בחודש וזה כמובן לא כולל תעבורה החוצה וגם התמיכה של אמזון היא ברמת הבסיס. זול – זה לא. (אגב, גם בגוגל וגם במיקרוסופט המחיר יהיה פחות או יותר זהה) – אז הרעיון לנסות מעבר כלשהו נכנס בחזרה למגירה.

הרווח הגדול של ספקי הענן הגדולים מגיע מהשכרת שרתים ובמיוחד מהליבות (cores). הם מוכרים כל ליבה במחיר מוערך של 30-50$ לחודש וגם הזכרון אינו זול (בערך 10-20$ לחודש, תלוי בקונפיגורציה, מערכת הפעלה, סוג תקשורת וכו'). מדוע? כי כמות הליבות שניתנת למכירה בשרת אינה כה גדולה. שרת עם 16 ליבות אפשר למכור לדוגמא ל-20 לקוחות שכל אחד מקבל ליבה, אבל לא ל-30 לקוחות – כי הלקוחות רוצים ביצועים (בניגוד לספקי VPS שדוחפים עשרות לקוחות על מכונה עם 8 ליבות). ספקי הענן יכולים לרכוש שרתים עם 8 מעבדים כשכל אחד מהם כולל 16 ליבות לדוגמא, אבל העלות של שרת כזה גבוהה מדי בשבילם ולכן ברוב המקרים אם תבדקו מה המעבד שנמצא במכונה שלקחתם מספק הענן, תמצאו שהמכונה מכילה מעבדים כמו Xeon E5 26XX (כלומר מקסימום 2 מעבדים ועד 8 ליבות פר מעבד, ברוב הזמן זה יהיה דגם של 4 ליבות). יש לספקי הענן גם מכונות עם מספר מעבדים וליבות גדולים, אך המחיר – גבוה בהרבה מהמחיר שציינתי.

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

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

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

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

לאחר שהנתונים יועלו לספק הענן, נצטרך להתחיל לבנות את התשתית המאובטחת שלנו מבחינת כתובות IP פנימיות, Subnet, Internet Gateway וכו' וכו' ולהחיל אותם על ה-VM שלנו שבענן (אצל חלק מהספקים יש צורך בהקמת ה-VM מהגיבוי שהעלתם/שלחתם, אצל חלק זה אוטומטי). אחרי שיש לנו את ה-VM למעלה, יכול להיות שנצטרך לשנות כתובות IP בהתאם לתשתית שהגדרנו. המטרה הסופית היא שבסוף כל ה-VM ששלחתם יעלו ותהיה לכם תקשורת אליהם בדיוק כמו שיש אצלכם ב-DC (אם כי ישנם שינויים שתצטרכו לעשות, כמו לא לתת כתובת IP חיצונית לכל שרת אלא לעבוד בצורה מסודרת מול Gateway או עם Bastion אם אתם עובדים עם מכונות לינוקס). הכל עובד? מצוין. בשלב זה תתחילו לעבוד עם המערכת כמו שהיא בימים או שבועות הקרובים. קיבלתם קרדיט, זה לא עולה לכם שקל, נצלו את זה 🙂

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

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

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

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

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

ולמי שמעוניין לעבור את התהליך או לקבל יעוץ – אשמח לסייע 🙂