DevOps

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
הנדסת תוכנה
מאמר זה הוא חלק מקטגוריית הנדסת תוכנה

Coding Shots Annual Plan high res-5.jpg
מתכנת בעבודתו

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

Crystal Clear | Scrum | Unified Process | Extreme Programming | אינטגרציה רציפה | DevOps

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

בפיתוח תוכנה, DevOps היא תרבות ארגונית ומתודולוגיית עבודה אשר שמה דגש על שיתוף הפעולה והתקשורת בין מפתחי התוכנה לבין שאר אנשי ה-IT שבחברה. השיטה דוגלת בביצוע אוטומציה של תהליכי אספקת התוכנה (delivery) ושל שינויים בתשתיות. מקור המילה DevOps הוא מהלחם בסיסים של המילים האנגליות development (פיתוח) ו-operations (תפעול). מטרת השיטה לכונן תרבות וסביבה שבהן בנייה, בדיקות ושחרור של גרסאות תוכנה יכולים להתבצע במהירות, לעתים קרובות ובאופן אמין יותר.

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

דיאגרמת ון המציגה את DevOps כחיתוך של פיתוח תוכנה (development), תפעול (operations) ובדיקות תוכנה (QA)

כלים[עריכת קוד מקור | עריכה]

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

  • תכנות (code) – פיתוח הקוד וסקירה שלו (code review), כלים לניהול ומיזוג גרסאות
  • בנייה (build) – כלים ל-continuous integration ולקבלת סטטוס של בניית התוכנה
  • בדיקות (test) – בדיקות תוכנה ומדידת הביצועים
  • אריזה (package) – אחסון תוצרי בנייה בינאריים (artifact repository), הכנת היישום לפריסה
  • שחרור (release) – ניהול שינויים, אישור שחרור גרסאות, אוטומציה לשחרור גרסאות
  • קונפיגורציה (configure) – הגדרה וניהול תצורה של תשתיות
  • ניטור (monitor) – ניטור ביצועים של היישום בזמן ריצה, חוויית משתמש

אף על פי שקיימים כלים שונים רבים, ישנן כמה קטגוריות של כלים אשר חיוניות להקמת תשתית DevOps. כלים כמו Docker, Jenkins, Puppet ו-Vagrant הם דוגמאות לכלים פופולריים המשמשים בשרשרת הכלים של DevOps.

DevOps בהשוואה ל-Agile ו-Continuous delivery[עריכת קוד מקור | עריכה]

בארגונים אשר אימצו את גישת פיתוח תוכנה זריז (Agile) חלה עלייה בכמות גרסאות התוכנה היוצאות לאור. במקור, שיטת ה-DevOps נוצרה מהעלייה בפופולריות של פיתוח זריז. שיטות ה-Agile ו-DevOps דומות אך שונות במספר היבטים חשובים: Agile מהווה שינוי בצורת החשיבה, בעוד ש-DevOps מיישמת שינוי בתרבות הארגונית הלכה למעשה. אחת המטרות של DevOps היא לייסד סביבה בה יכולים להתקיים שחרורי גרסאות תוכנה אמינות יותר ובקצב גבוה יותר. מנהלים האחראים על שחרורי גרסאות מתחילים להשתמש בכלים כגון אוטומציה לשחרור גרסאות וכלים ל-continuous integration כדי לסייע בקידום מטרה זו. כל זה נעשה תוך יישום גישת ה-continuous delivery ("אספקת תוכנה מתמשכת").

למושגים Continuous delivery ו-DevOps משמעות דומה, ולעתים קרובות מבלבלים ביניהם, אך עם זאת אלו הן שתי תפישות שונות. גישת ה-DevOps רחבה יותר, והיא מתמקדת בשינוי תרבותי, ובפרט בשיתוף הפעולה בין הצוותים השונים שלוקחים חלק באספקה (delivery) של התוכנה (פיתוח, QA, IT, הנהלה, וכו'), כמו גם האוטומציה של תהליכי אספקת התוכנה. בהשוואה לכך, continuous delivery היא גישה אשר מתמקדת באוטומציה של שחרור גרסאות, חיבור בין התהליכים השונים, וביצוע מהיר ותכוף יותר שלהם. המטרות הסופיות של שתי הגישות הן זהות ולעתים קרובות משלבים ביניהן להשגת מטרות אלו. גישות ה-DevOps וה-continuous delivery באות מאותו רקע של שיטות עבודה זריזות ו"חשיבה רזה": ביצוע של שינויים קטנים ומהירים עם התמקדות בתועלת עבור הלקוח הסופי. השיטות מתבססות על תקשורת ושיתופי פעולה פנימיים איכותיים, ובכך מסייעות להשיג זמנים קצרים לשחרור התוכנה לשוק (time to market), תוך הפחתת סיכונים.

אימוץ שיטת ה-DevOps והיחס לארכיטקטורת תוכנה[עריכת קוד מקור | עריכה]

את אימוץ גישת ה-DevOps מקדמים פקטורים רבים, בהם:

  1. שימוש בשיטות פיתוח זריזות (agile) ומתודולוגיות נוספות של פיתוח תוכנה
  2. דרישה מבעלי העניין ביחידות העסקיות השונות להגברת קצב שחרור גרסאות מוכנות לייצור
  3. זמינות רחבה של תשתיות וירטואליזציה וענן מצידם של ספקים פנימיים וחיצוניים
  4. שימוש נרחב באוטומציה בחוות השרתים (data centers) וכלים לניהול תצורה
  5. דגש מיוחד על אוטומציה של בדיקות ושיטות של continuous integration
  6. מסה קריטית של שיטות עבודה מומלצות (best practices) ידועות היטב

ארכיטקטורה[עריכת קוד מקור | עריכה]

אף על פי שתאורטית ניתן ליישם את גישת ה-DevOps יחד עם כל ארכיטקטורת תוכנה, ארכיטקטורת ה-microservices (מיקרו-שירותים) הופכת לסטנדרט עבור מערכות המתוכננות ל"פריסה מתמשכת" (continuous deployment). מכיוון שכל שירות הוא קטן, הדבר מאפשר לארכיטקטורה של כל שירות להתפתח בתהליך של continuous refactoring (ארגון הקוד מחדש באופן מתמשך), ובכך להפחית את הצורך בתכנון נרחב מראש, ומאפשר שחרור מוקדם ומתמשך של התוכנה.

ראו גם[עריכת קוד מקור | עריכה]