הכנה לראיון עבודה Devops

עודכן לאחרונה: 24 אוקטובר, 2022

הכנה לראיון עבודה בתור איש DevOps

מה זה DevOps, ומהו תפקידו של DevOps Engineer?
DevOps הוא תחום יחסית חדש בעולם פיתוח התוכנה, והמטרה שלו היא לייעל את שיתוף הפעולה בין צוות המתכנתים (Developers) לצוות המיישמים, או האופרציות (Operations).

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

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

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

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

שאלות מראיון עבודה של מהנדס DevOps:

שאלה 1

מהו מחזור החיים של פיתוח מוצר בשיטת Agile, לדוגמא אפליקציית Web, וכיצד יישום כלי DevOps יכול לייעל את התהליך?

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

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

שאלה 2

אילו יתרונות מקנים לנו שירותי ענן כגון AWS, Microsoft Azure, Google Cloud בהשוואה לשרתים לוקאליים?

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

 

שאלה 3

מה היא תשתית היברידית? מתי נראה שימוש בתשתית כזו?

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

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

 

שאלה 4

מהו רצף פקודות Git שצריך להריץ כדי לעלות קבצים חדשים שהוספנו ערכנו למאגר בגיטהאב (GitHub Repository)?

ראשית, יש להתחבר למאגר אליו נרצה לעלות את השינויים (במידה ולא עשינו זאת עדיין)
git remote add origin

לאחר מכן יש לעלות את העדכונים ל – Staging environment, זהו שלב ההכנה שמודיע ל-git שנרצה לעדכן את הקבצים שנבחר ב- commit הבא. בפקודה הבאה נעלה את כל התיקייה הנוכחית.
git add.

לאחר מכן נבצע את השינויים במאגר הפנימי:
"git commit -a -m"

ולבסוף נעלה את השינויים למאגר בענן שנמצא ב- GitHub:
Git push origin master

 

שאלה 5

לפי אילו פרמטרים ניתן לתזמן או להריץ את תהליך הבנייה (Build Process) שמבצע שרת Jenkins?

1. לפי זמן מוגדר מראש – שעה ביום, או כל כמות זמן מוגדרת (למשל כל שעתיים).
2. מיידית עם העלאת גרסה חדשה ל – GitHub Repository.
3. בסיום הרצה של תהליך בנייה אחר.
4. בהפעלה ידנית.

שאלה 6

מהו Jenkinsfile, וכיצד הוא יראה? אילו שלבים יכלול הסקריפט?

Jenkinsfile הוא קובץ שימצא במאגר הנתונים דרכו נבצע מעקב גרסאות (לדוגמא GitHub), אליו Jenkins פונה כאשר הוא יוזם Build Process. הקובץ הוא סקריפט הכתוב בשפת Groovy והוא מגדיר את ה – Jenkins Pipeline. סקריפט זה איזה מוגבל לשלבים מסוימים ויכול לכלול שלבים לפי החלטת הצוות או מהנדס הדבאופס.
בדרך כלל הסקריפט יכלול לפחות 3 שלבים: Build >> Test >> Deploy, כאשר לפי התוצאה של השלבים (עבר בהצלחה או נכשל) נחליט אם לבצע את השלב הבא או לא.

שאלה 7

מה משמעות שלושת המושגים הבאים ב- Docker, ומה הקשר ביניהם?
– Dockerfile
– Docker Image
– Docker Container

Dockerfile הוא קובץ YAML הכולל פקודות אשר יגדירו את ה- Image.
כאשר יש Dockerfile מוכן, ניתן לייצר באמצעותו Image על ידי פקודת docker build.
Docker Image הוא התבנית (Template) שמגדירה קונטיינרים. על בסיס Image בודד ניתן לייצר כמות בלתי מוגבלת של קונטיינרים.
Docker Container הוא מופע בזמן ריצה של Docker Image.

שאלה 8

כתבו פקודה שתוריד Image של Jenkins גרסה 2.60.3 מ- Docker Hub, ולאחר מכן הריצו קונטיינר של Jenkins.

docker pull jenkins :2.60.3
docker run -p 8080:8080 -p 50000:50000 jenkins :2.60.3
הערה: דגל -p בפקודת docker run משמש לצורך מיפוי ה-port, כאשר הצד השמאלי הוא port בצד ה- Docker Host, והצד הימני הוא port בצד הקונטיינר 8080:8080 (container) (host).

שאלה 9

מה הוא Volume בקונטיינר? הריצו קונטיינר של ubuntu עם שימוש ב- Volume.

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

על מנת להריץ קונטיינר של ubuntu עם volume משותף נריץ את הפקודה הבאה:
docker run -v /host/directory:/container/directory -it ubuntu /bin/bash
דגל -v מציין את השימוש ב- volume כאשר בצד שמאל לנקודתיים יהיה המיקום ב- host, ובצד ימין לנקודתיים יהיה המיקום בקונטיינר.
דגל - it מציין שאנחנו מריצים את הקונטיינר בצורה אינטראקטיבית – שנוכל לעשות פעולות בתוך הקונטיינר.

שאלה 10

מה תפקידו של Kubernetes? מה הקשר בין Kubernetes ל - Docker?

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

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

שירותי DEVOPS לחברות


תחומי לימוד הכי מבוקשים בהייטק בשנת 2024

© כל הזכויות שמורות Real Time Group