HiTakeJobHiTakeJob

מה זה Cloud Native? הסבר + משרות פתוחות בישראל

זמן קריאה: 6 דקות

Cloud Native מתאר אפליקציה שנבנתה מראש לרוץ בענן: ארוזה בקונטיינרים, מורכבת משירותים שאפשר להחליף ולהגדיל בנפרד, ומתוכננת להתמודד עם כשל של רכיב בודד כאירוע שגרתי. זו גישת תכנון, לא מיקום. בלוח HiTakeJob פתוחות כרגע 110 משרות שמזכירות Kubernetes, 68 שמזכירות Docker ו-47 שמזכירות Terraform.

ההבדל בין "רץ בענן" ל"נבנה לענן"

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

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

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

ארבעת היסודות

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

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

מה נדרש מהאפליקציה עצמה

זו הנקודה שהכי מפספסים: התשתית לא הופכת אפליקציה ל-Cloud Native. הקוד חייב לעמוד בכמה כללים:

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

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

מה מקבלים בפועל מהגישה הזו

שווה לנסח את היתרונות במונחים מדידים ולא בסיסמאות:

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

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

מה זה לא אומר

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

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

איך זה משפיע על עבודת המפתח

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

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

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

איך מתחילים מעבר בפועל

שלבמה עושיםהרווח המיידי
1אריזת האפליקציה בקונטיינרסביבה זהה בפיתוח ובייצור
2הוצאת הגדרות וסודות החוצהאותו artifact לכל הסביבות
3הסרת תלות בדיסק המקומיאפשר להריץ כמה מופעים
4שרשרת בנייה ופריסה אוטומטיתשחרורים תכופים ובטוחים
5ניטור, לוגים מרכזיים והתראותרואים תקלה לפני הלקוח

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

מה זה אומר למי שמחפש עבודה

המונח עצמו כמעט לא מופיע במודעות בישראל, אבל הרכיבים שמרכיבים אותו מופיעים בהיקף גדול: 110 משרות מזכירות Kubernetes, 68 Docker, 47 Terraform ו-47 CI/CD. מי ששולט בארבעה האלה עונה בפועל על רוב הדרישה, גם בלי להכיר את המונח.

המסלולים שנוגעים בזה ישירות מפורטים במה זה DevOps ובמה זה Platform Engineering, ואפשר לסרוק את משרות Kubernetes.

שאלות נפוצות

Cloud Native זה אותו דבר כמו מיקרוסרוויסים?

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

אפשר ליישם את זה על תשתית מקומית?

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

מה החלק שהכי קשה במעבר?

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

זה מתאים גם לצוות קטן?

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

מה ההבדל בין זה לבין DevOps?

DevOps מתאר איך הצוות עובד - שיתוף אחריות ואוטומציה; Cloud Native מתאר איך המערכת בנויה. הם משלימים: קשה להריץ מערכת כזו בלי תרבות DevOps, וקשה למצות DevOps על מערכת שלא בנויה לכך.

האם זה דורש לעבור ל-Kubernetes?

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

איך מודדים אם ההשקעה השתלמה?

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

מאמרים נוספים

המשרות באתר