כיצד להאיץ את הפיתוח בארכיטקטורת Microservices ולבנות תהליכי CI/CD לפי Best Practice

אז Jenkins או Spinnaker? ובכלל, מה כדאי לדעת על תהליכי פיתוח באפליקציות מודרניות בארכיטקטורת Microservices

מאת עידו ופנר

תהליכי Continuous Integration ו-Continuous Deployment מוכרים לנו בקיצור במונחים CI/CD, שהם כחלק אינטגרלי הכרחי בתהליכי פיתוח מתקדמים שעוזרים לנו למנוע שגיאות, בעיות אינטגרציה ולשפר את איכות הקוד שלנו. 

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

אחוז ניכר מהשוק עובד עם Jenkins. ככלי CI, הוא כלי מאוד מוכר מעולם הקוד הפיתוח, חלק מהחברות משתמשות בו גם ככלי CD, אך הוא פחות מומלץ. יש לא מעט כלים טובים ממנו ל-CD. 

Spinnaker – הוא דוגמה לאחד מהם. במקור, פתוח כלי ה-CD הזה ע”י מפתחים מ-Netflix, גם הוא מעולם הקוד הפתוח, והיום יש לו קהילה פעילה מאוד גדולה עם לא מעט חברים מהחברות המובילות בשוק כמו Google, Microsoft, Veritas וחברות נוספות שמנסות לשפר את הכלי כל הזמן.

אחד היתרונות שלו הוא שאפשר להתקין אותו בכל סביבת ענן – אם זה ב-Azure, AWS, GCP, Oracle Cloud וגם בענן הפרטי – הוא עובד עם כל פלטפורמה וכמעט בכל סביבה. הארכיטקטורה שלו מבוססת על Kubernetes ולכן ניתן לפרוס אותו בקלות וכמובן לבצע Scale במהירות, תומך ב-Helm 3 לעומת Jenkins, שבימים אלו הוא תומך רק בגרסת Helm 2, ומתוך ניסיוני, הוא עובד יפה עם OpenShift שהיא הפלטפורמה PaaS הכי נפוצה בשוק. ממבט ממעוף הציפור זהו הכלי הנפוץ ביותר והמומלץ ל-CD בקהילת קוד-פתוח וכמובן שהוא גם מיושר עם ה-CNCF, ולכן מאות ואלפי ארגונים עושים בו שימוש. עוד מידע על Spinnaker תוכלו לקרוא כאן.

מה עוד שווה לכם לדעת

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

הייתי ממליץ לקברניטי אבטחת המידע שאחראים על תהליכי הפיתוח להוסיף בנוסף לארסנל הפתרונות גם פתרונות כמו GitHub Advanced Security, כדי לבצע Code Analysis כחלק מתהליך ה-CI. למי שצריך Registry, כדי לאחסן את ה-Images שלו, והוא מחפש מנוע סריקה שיעזור לו לסרוק במהירות את כל ה-Images, הייתי ממליץ על פתרון כמו Aqua Security או Red Hat Quay. 

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

תהליך ל-CI מלא: הצעת הגשה 

  1. צמצמו את מספר ה-Pipelines – לכל אפליקציה נסו להגדיר עד שלושה Pipelines: אחד ל-CI, אחד ל-CD ואחד ל-E2E testing.
  2. בדקו כל Microservice באופן פרטני משאר ה-Microservices – יש לבדוק כל רכיב בתהליך לבד ולבדוק את הפונקציונאליות שלו. תהליך כזה נקרא Unit Testing. 
  3. בדקו את התקשורת והאינטגרציה בין כל ה-Microservices – מאחר והאפליקציה שלנו יכולה להיות פרוסה על תשתית שנמצא ב-Private Cloud וגם על תשתית שמבוססת על Public Cloud, התקשורת היא הגורם הקריטי ולכן חייבים לבדוק את התקשורת והאינטגרציה בין כל הרכיבים.
  4. גישה לדאטהבייס – בדקו גישה לדאטהבייס שלכם, ומי שפיתח אפליקציה בארכיטקטורת Nano Services, צריך לבדוק גישה לכל טבלה בודדת בדאטהבייס. 
  5. תעברו על הדוח. אם הכל עבר תקין, נוכל להתחיל לבנות את ה-Docker Image שלנו. 
  6. סריקת ה-Images לבדיקת Security Vulnerabilities – חשוב לסרוק כל Image האם הוא חשוף לסיכונים. Clair הוא פתרון מעולה, יש גם פתרון קוד פתוח בשם OpenScap שגם בו אפשר להשתמש.
  7. בניית Helm Package – אם לא מצאנו סיכונים ב-Images שלנו שמאוחסנים ב-Registry נתחיל את בניית ה-Helm Package. Helm – עוזר לנו לעבוד עם Kubernetes, הוא Package Manager ומטרתו היא לעזור לצוות הפיתוח לפרוש אפליקציות, להגדיר ולנהל אותן בצורה אפקטיבית מול K8s. 

תהליך CD: 

  1. שחרור גרסה לסביבה נמוכה – קחו את ה-Helm Package שיצרתם ותבצעו Release לסביבת ה-Pre-Production או ה-Staging שלכם. 
  2. נטרו את ה Deployment – בדקו איך האפליקציה שלכם מגיבה, ונטרו אותה במשך מספר שעות לאחר שבחנתם את התנהגות האפליקציה. 
  3. בדיקה מקיפה – E2E Testing.
  4. שחרור גרסה לסביבת הייצור שלנו
  5. ניטור סביבת הייצור שלנו

ניתן לראות דוגמא של תהליך CI/CD עם Jenkins ו-Spinnaker בצורה מפורטת יותר. 

סיכום קצר והמלצה

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

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

נסו להימנע מהורדת Images Docker מהאינטרנט. מניסיוני האישי, יש בהם עשרות חשיפות לסיכונים וזה לא שווה את המאמץ. מצד אחד פחות עבודה לצוות הפיתוח, אך מצד שני, הרבה עבודה לצוות אבטחת המידע. אם צוות הפיתוח רוצה לחסוך בזמן, יש לא מעט Public Image Registries שמציעים Images שהם חתומים. ל-Red Hat יש Public Registry שחותם על Images, אך חשוב גם אותם לבדוק. 

תשלבו בתהליכי CI/CD שלכם פתרון שיעזור לכם בתהליכי רגולציה (Compliance Enforcement Control) כדי לאפשר רק ל Images ו-Workloads שעברו את התהליכים לעבור לסביבת הייצור. 

הכותב הינו CTO, Head of R&D באמדוקס

Avatar

כתב אורח

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

הגב

26 תגובות על "כיצד להאיץ את הפיתוח בארכיטקטורת Microservices ולבנות תהליכי CI/CD לפי Best Practice"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

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

סידור לפי:   חדש | ישן | הכי מדורגים
אייל
Guest

מעניין ועושה סדר .תודה

Hen-Anna Nanville
Guest

כתבה מקצועית ומאוד מעניינת!
תודה רבה!

Shay Michaeli
Guest

סוף סוף כתבה שעשתה לי סדר בתהליכי CI/CD
תודה

שם בכלל לא בדוי
Guest
שם בכלל לא בדוי

Buzzword bingo

זה נראה מאוד אמין שבתוך שעה שהכתבה פורסמה יש 3 תגובות סופר מפרגנות מאורחים שכולם אומרים בדיוק אותו דבר אפילו שהוא ממש ממש לא נכון…

עידו
Guest

לאחר 30 דקות שהכתבה פורסמה קיבלתי מעל 6 תגובות ב LinkedIn. חבל שיש כאלה שלא יודעים לפרגן.

שיווק עצמי = איכס
Guest
שיווק עצמי = איכס

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

ShitLord
Guest

כמה באמת חברות עושות Unit Testing E2E בארץ , לדעתי אפשר לספור אותן על יד אחת ?

משתמש
Guest

יש unit testing שעושים מפתחי המוצר ויש e2e שעושים בדר”כ מפתחי האוטומציה או הQA
זה 2 סוגי בדיקות שונים לגמרי

מנהל בדיקות
Guest

צודק, במיוחד בחברות סטארט אפ

אושרי
Guest

לכל מי שמתעניין, מערכת אלגוריתמים מבוססת דיפ לרנינג ומשין שתשפר את הביצועים בעסק מהיום הראשון. המערכת כבר אחרי שלב הלמידה פשוט ללחוץ enter להריץ ולראות איך הרווחיות קופצת. Oshria6688@gmail.com

א.פ.
Guest

תודה.
תביאו עוד מזה :)

יצחק כהן
Guest

ב”ה

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

נו באמת
Guest

“הכותב הינו PM, CTO, Head of QU autoomation בשקר כלשהו”

CTO ו-Head Of R&D זה לא שני טייטלים שונים?…..

CTO
Guest

תתפלא יש CTO שהוא גם מנהל קבוצה / חטיבה באמדוקס, מיקרוסופט, גוגל…
תעשה חיפוש קצר ב LinkedIn ותראה.

דן
Guest

כתבה מצויינת עידו! תודה

Michael
Guest

You’ve meant Continues Deployment. It’s a bit different than Continues Delivery.

Michael
Guest

Your are welcome. Next time you can even give some credit.

בוט
Guest

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

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

בהצלחה!

לא פתי.
Guest

כתבה שיווקית נוראית, תפסיקו לקדם את השטויות האלו.

ליאור
Guest

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

מאחד שמכיר
Guest

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

מומחה
Guest

אני מעדיף לעבוד עם Codefresh במקום Jenkins ו spinnaker.

DevOps
Guest

אני מעדיף לעבוד עם Codefresh במקום Jenkins ו spinnaker.

Canary
Guest

ממליץ להתייחס ל Canary deployment ו Blue Green

אחד שמכיר
Guest

תותח על! כתבה מעולה!
אפשר רק ללמוד ממנו.

מפתח
Guest

כתבה מעולה!

wpDiscuz

תגיות לכתבה:

נותרו עוד
00
ימים
:
00
שעות
:
00
דקות
:
00
שניות
לכנס המפתחים הגדול בישראל