« לעמוד הראשי

כדאי להכיר: מימוש Serverless שתוכלו לממש עם GitLab CI/CD בענן – וללא תשלום

gitlab ci serverless

בקצרה: תוכלו להריץ תוכניות שכתבתם מבלי להחזיק שרת משלכם וללא תשלום – באמצעות GitLab CI/CD

לפני כמה חודשים התחלנו לחלק ללקוחותינו דו"חות Excel המכילים רשימות מפורטות של פיצ'רים הקיימים ב- GitLab. את הרשימות היינו מייצרים אוטומטית אחת לחודש, באמצעות "הנדסה הפוכה" וע"י שימוש ב- GitLab API , ומייצרים זאת באופן אוטומטי על מכונות פרטיות שלנו, באופן מזדמן.

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

מה זה Serverless ?

בקצרה: גישת serverless, אשר מכונה לעיתים “פונקציה כשירות” (Function-as-a-Service), מאפשרת הרצת תוכניות וביצוע פעולות מבלי שצריך לטפל ולהתעסק גם בשרתים, מכונות וירטואליות או משאבי מחשוב אחרים. משתמשי Serverless פשוט כותבים פונקציה כלשהי, שתפקידה לרוץ איפשהו ולהחזיר פלט, והחיוב המקובל הוא על זמן הריצה בלבד.
(יודגש שהשרת כמובן ישנו – איפשהו בענן – והמשתמשים פטורים מהתעסקות בתפעול ובתחזוקה שלו)

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

נסביר כיצד זה מתאפשר:

נתחיל בכך שחברת GitLab מאפשרת לכם לבנות git repository בענן שלה (gitlab dot com), וללא תשלום אפילו אם הוא פרטי וסגור.

בנוסף, GitLab מעמידה לרשות קהילת המפתחים שרתים (Runners) חינמיים להרצת Continuous Integration / Deployment. דהיינו שאתם יכולים לקנפג את הפרויקט שלכם כך שעל כל שינוי ב- git repo שלכם, תוכנה כלשהי שלכם תרוץ באחד מה- runners ותבצע כל מה שתורו לה לעשות. אתם יכולים לגרום לריצה של התוכנה הנ"ל גם ידנית, גם לפי לוח זמנים מוגדר מראש (בדומה ל- crontab) או אפילו ע"י טריגר חיצוני בעזרת שימוש ב- API .

GitLab Runners

כאמור – השרתים האלה חינמיים וציבוריים (shared runners) לטובת הכלל – עם מגבלה של 2000 דקות בחודש לפרוייקט (וזו כמות מכובדת שיכולה להספיק להריץ לא מעט דברים).

למעשה אתם מקבלים שירות serverless, כלומר שירות ענן שבו אתם מקבלים משאבים הנחוצים להרצת תוכניותיכם (זמן CPU, זכרון וכו') ללא צורך לשלם על זה כלל.

ומה אם אני צריך להריץ על ה- Runner תוכנה המותאמת לצרכים פרטניים שלי?

למעשה זו אכן הסיטואציה הנפוצה – שנרצה להריץ תוכנית כלשהי המצריכה קומפיילר מסויים לשפה מסויימת, או ספריות (libraries) מסויימות, שלא בהכרח מותקנות על ה- runner הציבורי המסופק ע"י GitLab — ויש לכך פתרון:

ניתן להגדיר שה- runner יטען Docker image לפי בחירתנו, ובזמן הריצה ניתן אפילו גם להתקין libraries לפי הצורך – ואז ניתן להריץ מה שנרצה.

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

gitlab features excel sheet

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

לסיכום – מה השגנו כאן:

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

 

האם הפתרון הנ"ל מתאים לכל צורך?

לא בהכרח. חשוב לזכור של- shared runners (החינמיים) מגבלות מסויימות של מהירות תגובה וביצועים – בפרט בשעות העומס בהם אלפי אנשים מכל העולם מריצים את התוכנות שלהם על אותן מכונות בדיוק … (לצורך ההמחשה דמיינו את ההבדל בעומסים על כביש החוף ב- 8 בבוקר ולהבדיל ב- 11 בלילה – ותבינו את המשמעות …). לכן לא כדאי להשתמש בזה כמובן לישומים קריטיים או ישומים בהם המהירות סופר-חשובה.

אם נושא הביצועים חשוב ניתן לפתור זאת ע"י שימוש ב – private runners משלכם (שיכולים לשבת בכל ענן ציבורי וגם self-hosted אצלכם) – ויתכן ותעדיפו כאלה משיקולי ביצועים ומשיקולים נוספים (כגון צורך בזמן ריצה גדול יותר מזה הניתן חינמי ; שיקולי כוח עיבוד ; שיקולי auto-scaling; שיקולי אבטחת מידע ועוד).

ויתכן ותעדיפו להשתמש ב- GitLab Enterprise ע"מ להנות מפיצ'רים נוספים של GitLab CI/CD שאינם כלולים בגירסא החינמית (וע"מ לדעת מה כלול בגירסאות ה- Enterprise אתם מוזמנים להוריד את קובץ ה- Excel הנ"ל שבנינו בעזרת GitLab CI … )

 

אודות הכותבים:

ד"ר אלכס קרנובסקי בעל תואר שני במתמטיקה ותואר שלישי בחקר ביצועים, מומחה מוסמך ל – GitLab , ובעל ניסיון רב במתודולוגיות ובכלים דומים: ClearCase, ClearQuest, git, Jira, Bitbucket ועוד.

תמיר גפן הוא מייסד חברת ALM-Toolbox ובעל נסיון בתחום ה –  ALM / DevOps / Cloud , ניהול מוצרי תוכנה, שיווק מכירות ופיתוח עסקי, תעודת Certified Scrum Master ותואר ראשון במדעי המחשב ובמוזיקולוגיה.

 

חברת ALM-Toolbox היא המפיצה של GitLab בישראל (ובעולם), ומציעה פתרונות מקצה לקצה בתחומי ALM, Kubernetes, DevOps, CI/CD pipelines
ובפרט Bitbucket, Selenium, Jira, GitLab, Jenkins , בניית סביבות פיתוח ובדיקות והעברתם לקונטיינרים ולענן, מיגרציה בין כלים (כגון מ- Jenkins ל- GitLab CI/CD), הדרכות על הכלים, כתיבת אוטומצית בדיקות, התאמת רישוי לצרכי הלקוח ומכירת רשיונות תוכנה מתאימים ועוד.

שאלות? נשמח לענות על כל שאלה – אפשר לפנות אלינו במייל gitlab@almtoolbox.com או טלפונית 072-240-5222

קישורים רלבנטים: