כמה מילים על SDK, libvirt, KVM, VMWare – פספוסים ותחרות

לפני מספר ימים כתבתי כאן פוסט שאני מחפש אחר איש שמבין טוב ב-PERL כדי לעבוד עם ה-SDK של VMWare על פרוייקט פאנל לעסק שלי.

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

מכיוון שעכשיו חול-המועד ובימים כאלו אין הרבה עסקים, החלטתי להתעמק קצת ב-libvirt.

אם יש משהו שאפשר לאמר על libvirt זה שזו ספריה מעולה ומהפכנית. מה ש-FFMPEG עשה בתחום האודיו/וידאו, libvirt עושה בתחום הוירטואליזציה. ספריה אחת שניתנת לשימוש עם מספר שפות (JAVA, PHP, C, Python, Perl, Ruby) ודרכה אתה יכול לשלוט על המערכות וירטואליזציה בחברה שלך, ולא חשוב על מה הן מבוססות, הספריה תומכת בהכל:  Hyper-V, Xen, KVM, VMWare ועוד. כל מה שצריך זה לקמפל את הספריה עם התמיכה המתאימה (קבצי ה-RPM בנויים עם תמיכה להכל). יש גם גירסה ל-Windows (אם כי קצת יותר ישנה).

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

הכל טוב ויפה, לא?

זהו, שלא כל כך…

הבעיה הגדולה ביותר של libvirt זה התיעוד והפיתוח שלו. הפיתוח עצמו נעשה ע"י מפתח בשם Daniel P. Berrangé, שחוץ מ-libvirt הוא עובד על עוד כמה דברים. התיעוד עצמו גרוע. כמה גרוע? רשומים פונקציות ופקודות, אבל תוכן לפקודות עצמן במסמך – אין. אם נלך לפי מספרים, וניתן ציון 80 לתיעוד של RHEL, אז הציון לתיעוד של libvirt הוא אולי 20. המסמך שקיים מדבר על 2 גרסאות אחורה, ואין שום מסמך שמציין מה ההגבלות של כל דרייבר, כך שהאפשרויות העומדות בפניך הן לחפש בגוגל ולראות אם מישהו כתב קצת הסברים על כל מיני פקודות, או להתחיל לחפור בקוד ולהבין משהו מזה. יש ספר שמדבר על KVM עם libvirt, רק שהספר בגרמנית. בא לך לסמוך על התרגום של גוגל Translate?

למען האיזון אני יכול לציין שגם התיעוד ב-SDK של VMWare לוקה בחסר. לדוגמא: אם מסתכלים על הפקודה vmcreate.pl אפשר לראות שחסרים המון פרמטרים. היכן לדוגמא הפרמטר ל-thin provisioning? מה עם כל האפשרויות של ניהול משאבים בלי resource manager? לך חפש בגוגל, אולי מישהו מצא לזה פתרון עוקף..

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

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

רבים טוענים "KVM חופשי ובחינם, אתה יכול להשתמש בזה". טכנית הטיעון מוצדק, אבל חברות מחפשות נוחות, קלות שימוש וכמה שפחות תחזוקה, ו-KVM שמגיע עם Fedora או Ubuntu הוא הדבר האחרון שאפשר לקרוא לו "קל". תסתכלו לדוגמא על Citrix: לקחו גירסת לינוקס, הצמידו לה את Xen, בנו GUI (שרץ על Windows בלבד כ-Client) קראו לזה XenServer והחלו לחלק אותו בחינם לכל אחד שרוצה. יש לו כמובן פונקציות רבות שנעולות לשימוש (אלא אם תרכוש רשיון), והרבה מאוד חברות משתמשות בזה . תארו לכם ש-Red Hat היו מוציאים דבר כזה בחינם (עם אפשרויות הרחבה בתשלום כמובן)? לרד-האט יש שם מוכר בשוק ובמיוחד ב-Enterprise והרבה היו מתעניינים ומנסים את המוצר..

אבל Red Hat מעדיפים למכור את ה-RHEV המוצר שקומרנט פיתחה לפני ש-Red Hat רכש אותם. לדבר הזה אין אפילו Trial כך שקשה אפילו לשפוט את המוצר מדף הסופי. פלא שהמוצר שלהם נמצא אי שם למטה מבחינת נתח שוק?

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

מחפש איש PERL

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

אצלי בעסק, רוב הלקוחות כלל לא דורשים פאנל כלשהו, אם כי כשלקוחות מבקשים, הם יכולים לקבל אפשרות להתחבר למכונה שלהם עם תוכנה של VMWare ואיתה הם יכולים לראות סטטוס, לכבות, להפעיל וכו’.

האם אני מרוצה מהמצב הנוכחי? ממש לא.

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

  • התחברות סריאלית (וירטואלית) לשרת, והתחברות גרפית לשרת גם אם הוא קרס. לא תמיד שרות ה-syslog מראה על מה המכונה קרסה, וב-Windows שרותי ה-Event לא תמיד מתעדים הכל כשמופיע מסך כחול. התחברות כזו יכולה לסייע ללקוח לראות מה באמת הבעיה.
  • החלפת מערכות הפעלה והתקנת גרסאות “זרות”. נניח שלקוח רוצה להרים שרת Asterisk והוא לא מעוניין להרים מערכת CentOS ולהקים עליה מאפס את הכל, אלא הוא רוצה להרים Flash in a box מקובץ ISO שקיים במערכת. הפאנל יאפשר לו להצביע על מיקום ה-ISO, המערכת תוריד את ה-ISO ותתחיל בהתקנה ואותו לקוח יוכל להתחבר בחיבור ישיר (סעיף קודם) כדי להמשיך עם ההתקנה.
  • גרפים עשירים: איך המכונה שלך מבחינת מעבד, זכרון ודיסק בזמן אמת, ביום האחרון, חודש אחרון, שנה אחרונה וכו’. יש לך אירוע חשוב? תוכל להתחבר, ולראות ב”שידור חי” מה קורה עם השרת מבחינת עומס, ומכיוון שהמערכת דוגמת מבחוץ (ברמת Host ולא ברמה של SNMP מה-VPS עצמו) תוכל לראות את הגרפים בזמן אמת גם כשהמערכת עמוסה.
  • יצירת Snapshots ושחזור מהם, לפי כמות שהלקוח בוחר. (יעיל מאוד כשאיש הסיסטם החדש שוב שכח ליצור קובץ גיבוי להגדרות ועכשיו הכל מתפקשש)
  • מערכת “מחשוב ענן” – לקוח יכול להקים עוד שרתים נוספים ולהרוג אותם כרצונו עם Master Image שהוא יוצר מבלי לעבור בירוקרטיה.
  • דינמיות מלאה: צריך עוד ליבות? עוד זכרון, עוד דיסק? עוד רוחב פס? כמה קליקים עם העכבר ויש לך את זה מבלי למחוק את המערכת.

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

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

מדוע אני צריך מישהו עם ידע רציני ב-PERL? כי אני עובד עם VMWare ו-VMWare מציעים SDK ב-Perl או בדוט-נט. כחובב קוד פתוח אני כמובן לא מעוניין בפתרונות דוט-נט, אז נשאר PERL. אני מעדיף שהפרוייקט ירוץ ישירות מול השרתים ולא מול מערכת vSphere מרכזית של VMWare (מסיבה פשוטה: תקציב. VMWare העלו את המחירים בטירוף לאחרונה ושימוש במערכת vSphere שלהם תייקר את כל העניין).

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

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

  • יושכר מתכנת PERL שילמד קצת את ה-SDK ויבדוק יכולת התכנות של מספר דברים שאבקש ממנו לבדוק. על חלק זה ישולם למתכנת לפי שעה.
  • אם הדברים מתאפשרים, יסוכם ביני לבין המתכנת פרוייקט של כתיבת סקריפטים שונים כדי לבצע את העבודות עצמן. מה שהוא יכתוב יהיה ה-Back end, כלומר מישהו “מקדימה” יפנה אל הסקריפטים עם פרמטרים והסקריפטים יבצעו את העבודה ויציגו את התוצאה.
  • בסמוך לסיום החלק הנ”ל יושכר מתכנת נוסף כדי להרים מערכת Front End (כפי הנראה ג’ומלה או דרופל) שתציג למשתמש את כל הממשק בצורה ויזואלית יפה, ולמשתמש יהיו חיים קלים בניהול דרך הפאנל.

לפיכך, להלן מה שאני מחפש:

  • מישהו עם נסיון רציני ב-PERL. לא מישהו שיש לו נסיון של חודש ב-20 שפות.
  • רצינות ועמידה בלוח זמנים
  • עדיפות לאחד שיכול להוציא חשבוניות מס
  • רצוי אחד עם “תיק עבודות” שיכול להראות מה הוא יצר בעבר, או לפחות תיאור של מה שיצר בעבר
  • שתהיה לו סבלנות

אם אתם מכירים אחד כזה, אתם מוזמנים להפנות אותו אליי באימייל: [email protected]

תודה וחג שמח לכולם