לקצר דרכים – ולסבול מאוחר יותר

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

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

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

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

אחד הנזקים, לדוגמא, קשור לשדרוג. אם מישהו הקים מערכת Kubernetes והוא ינסה לשדרג אותה – סביר להניח שהוא יתקל במספר שגיאות, שאם הוא לא מבין בתחזוקה והקמת הפלטפורמה, יכולים פשוט להשבית לו את המערכת, וכנ"ל לגבי הרצה של כל מיני קונטיינרים חיצוניים תוך שימוש בקבצי YAML שאיש מהחברה לא עבר עליהם: צריך לזכור שקוברנטיס לא שואל יותר מדי שאלות לפני הטמעה של קבצים כאלו (kubectl apply -f something.yaml).

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

חג שמח.

השוואה: PKS מול OpenShift

יצא לי לשוחח עם לא מעט חברות שרוצות להשתמש בקונטיינרים. רבים כבר התחילו ממזמן להשתמש ב-Docker (הערה: לא הגיע הזמן להכיר ולהשתמש ב-cri-o?) והם החלו להשתמש ב-Docker-compose להרמת מספר קונטיינרים במכה אחת. חלקם מתחילים להשתמש בשרותים המנוהלים לקונטיינרים בעננים הציבוריים וחלקם רוצים פתרון On Prem ומטבע הדברים הם מתחילים לקרוא על Kubernetes וכשהם מתחילים להבין כמה הוא מורכב לתפעול (ומגירסה לגירסה זה נהיה יותר ויותר מורכב) – הם מבקשים המלצות על פתרון קל יותר להקים ולנהל אשכול Kubernetes (ובקיצור בשמו החביב: K8S).

רוב מוחלט של החברות הבינוניות והגדולות משתמשות ב-VMWare (מי שמשתמש ב-Hyper-V וירצה פתרון קל להתקנה וניהול ל-K8S – בהצלחה עם זה) ומטבע הדברים הם מעדיפים משהו מחברה גדולה וידועה כמו VMWare, ששמחה מאוד למכור להם את PKS. המוצר עצמו נמכר בשתי תמחורים שונים – פר POD (כאשר POD הוא מעין "קבוצה" כאשר כל POD מכיל קונטיינר אחד או יותר, ברוב המקרים יריצו קונטיינר עם אפליקציה ועוד קונטיינרים שמכילים אפליקציות נסמכות תחת POD אחד ואז יש גם תקשורת בין הקונטיינרים בקבוצה) או פר ליבות. זה מתחיל ב-50 PODS או ליבות. (המלצה: לא לרכוש פר POD. בכל ליבה אפשר להריץ עשרות PODs).

המתחרה העיקרי והיותר גדול ומיועד ל-Enterprise להרצת Kubernetes היא מערכת Openshift. גם היא תומכת באופן טבעי ומלא ב-VMWare (כן, כולל תמיכה ב-NSX-T), רק שבניגוד ל-PKS, היא לא מיועדת רק להקמה וניהול של Kubernetes במובן הסיסטמטי, אלא היא יותר מיועד לכל השרשרת – מרמת ההנהלה, אנשי אבטחת מידע, ומפתחים. ב-PKS אם אני רוצה להקים אפליקציה, אני צריך להשתמש ב-Cloud Foundry (או דרך ה-cli ב-kubectl), צריך במקרים רבים לכתוב קבצי YAML (ימח שמו וזכרו עם כל הקטע של רווחים!) שמצריכים ידע מספק ב-K8S. עם Openshift – יש לך Template (שתמיד אפשר לכתוב נוספים) והמתכנת עושה הכל דרך ה-Web UI. יש קטלוג מובנה שמאפשר להתחבר לאינטרנט ולהוריד אוטומטית templates נוספים והקמה של אפליקציות נוספות בכמה קליקים, יש אבטחת מידע הרבה יותר רצינית מ-PKS (בגלל זה רוב הקונטיינרים הזמינים לציבור לא ירוצו על Openshift אלא אם משנים הגדרת אבטחה שבחברה עלולים לפטר אותך אם תשנה אותה), יש גרפים וניטור מובנה, קל מאוד לשייך בין אפליקציה לשרות (נניח אפליקציית JAVA לקונטיינר אחר שמריץ MySQL – משתמשים ב-BIND בתפריט ותוך שניות ספורות המערכת תבנה את הכל) ויש עוד תוספות רבות שכלל לא קיימות ב-PKS. בקיצור, מי שיקים מערכת Openshift (קראו בהמשך על כך למי שמעוניין להתנסות אישית במחיר יקר של 0 שקלים) ויקים מערכת PKS, יראה את ההבדלים מהר מאוד. אגב, אחת האפשרויות שכיום אין ב-PKS ומאוד חשובה כשרוצים להוסיף ולהוריד מכונות וירטואליות המריצות קונטיינרים – כלל לא קיימת ב-PKS, אך קיימת בגירסת Openshift האחרונה.

וכאן אני מגיע להמלצה לא פופולרית שאני ממליץ: אל תרכשו PKS.

לא, זה לא קשור למחיר. מי שישווה בין Openshift ל-PKS יראה כי המחיר של Openshift ל-On Premise יותר יקר מ-PKS (בחלק מהמקרים, תלוי בחישובי ליבות, כמויות וכו')

הבעיה קשורה יותר ל-VMWare ולזמן הנוכחי. VMWare מציעה את PKS (גרסאות Essential, Enterprise) אבל אותה חברה גם מציעה את Tanzu Kubernetes Grid. היא מדברת על ניהול אשכולות של Kubernetes עם Tanzu Mission Control – אל תחפשו לרכוש או להוריד, זה מוצר של חברת Heptio (ש-VMWare רכשה) שעושים בו שינויים והוא כרגע בבטא ללקוחות VMware ולא זמין להורדה. יש גם את עניין ה-Health אשכול ה-K8S שלך והחלק הזה ממוצר וקוד מחברות ש-VMWare רכשה: Wavefront ו-CloudHealth.

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

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

לאלו שכן רוצים לנסות את Openshift על הדסקטופ שלהם (לא על ESXI או פתרון וירטואליזציה מרכזי, כל עוד יש לך 32 ג'יגהבייט זכרון, הגירסה המצומצמת שניתנת להורדה תופסת 16 ג'יגהבייט זכרון, לגמרי), מוזמנים לגלוש לקישור הבא. תצטרכו להירשם ל-רד-האט כדי להוריד "קוד סודי" ולהדביק אותו בזמן ההתקנה. האפליקציה נקראת Code Ready Containers והיא יכולה לרוץ על לינוקס, מק ו-Windows. המערכת משתמשת בוירטואליזציה במחשב המקומי כך שב-Windows היא תפעיל את אופציית Hyper-V. טיפ קטן: אם אתם מחוברים ל-Active Directory, תתחברו למכונה שלכם עם שם משתמש מקומי. באג ידוע.

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

כשענק כמו גוגל מתחרה ב-Docker

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

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

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

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

אבל מה קורה שחברה די קטנה נתקלת בענק שיכול למחוץ אותה בקלות? אני מדבר על חברת Docker מול חברה שאולי שמעתם עליה .. גוגל.

ל-Docker יש מספר מוצרים. את המוצר החופשי Docker להרצת קונטיינרים – כולם שמעו עליו, וזהו כלי מעולה להרים קונטיינרים אבל הכלי לא מספק שום דבר בכל מה שקשור להרצת מספר קונטיינרים, תקשורת ביניהם, ניהול וניטור מרוכז, שרידות, Load Balancing וכו'. בשביל זה תצטרך לשלם על גירסת ה-Docker Enterprise שקיימת ב-3 גרסאות (אפשר לקרוא על כך כאן).

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

מאז יצאו מספר תוכנות שעושות מה ש-Kubernetes עושה פחות או יותר – כמו DC/OS, Apache Mesos ועוד. במקביל יצאו מוצרים מסחריים (וחלקם חופשיים) ש"עטפו" את Kubernetes כך שאפשר למכור זאת לחברות יחד עם שרותי תמיכה מסביב לשעון, וגם Docker יצאה עם פתרון ה-Enterprise שלה.

העניין הוא ש-Kubernetes כבש את השוק. מדוע זה משנה? אם נחשוב על אנשי ה-Devops והמפתחים בחברה שנתקלים בתקלה, הסיכוי שהם ימצאו פתרון עם Kubernetes הוא הרבה יותר גבוה מאשר פתרונות אחרים שאינם מבוססים Kubernetes. נהיה יותר פרקטיים: חברתכם מחפשת 2-3 מפתחים שיעבדו עם קונטיינרים. אם תשאל לגבי הידע שלהם ב-Kubernetes, אתה תמצא שיש הרבה יותר אנשים עם הידע הנ"ל מאשר עם Apache Mesos, DC/OS או עם הפתרון המסחרי של Docker. מפתחים ואנשי מקצוע אחרים לומדים בעצמם דברים שהם פופולריים, ופחות דברים שלא נמצאים בשימוש רב.

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

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