דלג לתפריט הראשי (מקש קיצור n) דלג לתוכן הדף (מקש קיצור s) דלג לתחתית הדף (מקש קיצור 2)

Tech Stack - איך לבחור טכנולוגיות לפרויקטים שלכם

מחפשים את השלב הבא בקריירה?
שלחו קורות חיים, אנחנו נדאג לכל השאר.
15/01/2025

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

מאת: אדיר לומברוזו, ארכיטקט פתרונות תוכנה בקבוצת SQLink

 

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

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

 

אז איך מתחילים?

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

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

 

הבנת הדרישות העסקיות היא הבסיס לכל החלטה

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

 

השיקולים לבחירה

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

  • סביבה – לפני הכל, נבדוק האם אנחנו מחוייבים לעבודה על גבי סביבה קיימת, ואם כן - מהי אותה סביבה. על פי שיקול זה אנחנו מצמצמים מראש את מגוון האפשרויות. אתן דוגמא – במידה ואנחנו יודעים שהפרוייקט או המוצר שלנו עתיד להיות משולב על גבי סביבת Microsoft כמו שרתי IIS המפורסמים, במרבית המקרים נתעדף פיתוח בשפת NET ודאטה בייס SQL. לכן במידה ואנחנו "יורשים" את סביבת הייצור, יש להתחיל בסקירה מקיפה ולהתאים את שאר השיקולים.
  • יכולות וגמישות – מה הם היכולות של השפה, האם היא תאפשר לי פיתוח של הפיצ'רים הנדרשים, האם יש בה חסמים ומה רמת הגמישות שלה להרחבת היכולות בעתיד.
  • ביצועים – לרוב, שפות צד שרת (Back-End) משתמשות במשאבי השרתים המאחסנים או משאבי הענן לצורך הרצת הקוד. העלות של משאבי הענן או האחסון קשורה לנפח אחסון, כח חישוב ובגדול למאמץ בפועל. בשלב בחירת שפת הפיתוח נדמה מראש את סוגי המאמץ, נפח האחסון ומאמץ החישוב הנדרש בנפרד לשפות פיתוח ונתעדף את השפות אשר מספקות את הביצועים הטובים ביותר, במילים אחרות דורשות פחות מאמץ בעבודה על סביבה מוגדרת.
  • אבטחת מידע – בבחירת טכנולוגיות, פלטפורמות וגם שפת פיתוח צד שרת (Back End), שיקול אבטחת המידע הוא מרכזי. חשוב לדעת שישנן שפות פיתוח צד שרת המכילות פגיעויות ורמת האבטחה שלהן נמוכה. יתרה מכך, גם בשפות מוכרות אנחנו תמיד נעדיף לעדכן לגירסה היציבה האחרונה, זאת מכיוון שעדכון הגירסאות ע"י מפתחי השפה לרוב מכילות הגנות חדשות ועדכוני אבטחת מידע.
  • תמיכה – שפת תכנות דורשות תמיכה שוטפת, חשוב לנו לדעת מראש מי עומד מאחורי הפיתוח של השפה - האם זו חברה למשל Microsoft ASP.NET או קהילה למשל PHP, מה גודל התמיכה, מה קצב העדכונים של השפה ועד כמה נפוצה השפה. עוד שיקול מרכזי שלעיתים מטה את הכף ומכריע על אף שהוא עשוי לנגוד שיקולים אחרים - הוא כמה תמיכה אקבל כאשר אתקל בבעיה, עד כמה מפורט התיעוד של יכולות השפה, כמה נרחבים הדיונים והפורמים ברשת וכדומה.
  • עלות – את השיקול של העלות אני מציע שנחלק לשני תתי שיקולים:
    • עלות ישירה – האם יש לי עלויות (ומה הם) בשימוש בשפה או ברכיבי השפה, מה גובה עלויות הסביבה הנדרשת להריץ את השפה/טכנולוגיה שבחרתי, למשל בבחירת Microsoft ASP.NET לרוב נשתמש במסדי נתונים מסוג Microsoft SQL Server להם יש עלות לפי כמות וגודל המעבד בשרת המאחסן, יש לקחת עלויות אלו כשיקול.
    • עלות כ"א – מה העלות הממוצעת של כח אדם המנוסה בשפה שבחרתי. ככל שיש יותר מפתחים שמנוסים בשפה מסויימת כך העלות שלהם תרד. לעומת זאת, לרוב קשה למצוא כ"א עבור שפות פיתוח שמבוססות על קהילות קוד-פתוח קטנות, או שפות נסיוניות, העלות שלהם תהיה גבוהה יחסית.

 

מקרה מנסיון אישי

מילה נוספת בהקשר לבחירת טכנולוגיה נסיוניתבשנת 2016 התחלנו בפיתוח פלטפורמה דיגיטלית לחברת סטרטאפ אמריקאית.
באותם ימים Google השיקה את  שפת הפיתוח Angular 2.0 שבאה להחליף את AngularJS המפורסמת. למי מכם שטרם הכיר, שפת Angular פותחה ע"י צוות מחקר של גוגל ונחשבת שפה המבוססת על Javascript ואחראית על כל נושא ההתנהגות והצגת הרכיבים בדפדפן במילים אחרות שפת צד לקוח.

 

במהלך הפיתוח, בסוף 2016 תחילת 2017 החלטנו לאמץ את Angular 2.0 כבסיס לכל רכיבי הדפדפן, הכוללים את הדאשבורדים, יכולות התחברות, הרשמה ועוד.
כבר בשלבי הפיתוח הראשונים כאשר צוות הפיתוח נתקל בבעיות, קונפליקטים או שאלות, ראינו שאין מספיק תמיכה מצד מפתחי השפה, היו לא מעט דיונים באינטרנט על נושאים רבים אבל מעט מאוד פתרונות, מהר מאוד Google הכריזה על גירסה חדשה שמטרתה הייתה ליישר קו, להרחיב את היכולות ולסדר בעיות קודמות וכך שכבר ברבעון הראשון של 2017 יצאו לאור Angular 4.0. צוות הפיתוח מיד החל בעבודת ההמרה (מיגרציה) לשפה המעודכנת, שהווה מעמסה לצד התקדמות הפיתוח של המוצר ועמידה ביעדיו. לאחר מכן ובאותה השנה Google הכריזה על Angular 4.3 שבאה ליישר קו עם כמה נושאים בוערים ומספר חודשים לאחר מכן בחודש נובמבר 2017 יצאה Angular 5.0, לאחר כשנה Angular 6.0 וכך הלאה.

 

המסקנה המרכזית

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

 

 

בחירת שפה בצד לקוחFront-End

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

  • ReactJS - מבית פייסבוק. השפה הפכה לאחת הספריות הפופולריות ביותר לפיתוח ממשקים אינטראקטיביים. היתרון המרכזי שלה הוא הגמישות והיכולת שלה להתאים למגוון רחב של יישומים, היא מצטיינת בממשקי משתמש דינמיים ומאפשרת יצירת רכיבים לשימוש חוזר.
  • Angular - מבית גוגל, מציעה פתרון מקיף ליישומים מורכבים וכוללת מבנה ברור לעבודה עם פרויקטים גדולים. אנגולר מתאימה במיוחד ליישומים בעלי ארכיטקטורה מסודרת ומוגדרת מראש, אך עשויה להיות מאתגרת ללמידה עבור מפתחים מתחילים.
  • VueJS - ספרייה קלה ללמידה ולשימוש, המתאימה לפיתוח יישומים קטנים ובינוניים, השפה מציעה גמישות בדומה ל-React -  אך עם עקומת לימוד פחות חדה.
  • Jquery – רגע, זה לא שפה! נכון אבל Jquery היא ספריית Javascript מאוד מקיפה ונפוצה, ולעיתים שימוש בספרייה הזו הוא המתאים ביותר, למשל עמוד נחיתה פשוט.
  • NextJS – סביבת עבודה המבוססת על React ובאה לעשות את החיים הרבה יותר קלים, שימוש בסביבת העבודה משפר את מהירות הפיתוח, איכות הקוד ויכולות השימוש החוזר, החסרון – מצריך היכרות עם סביבת העבודה.

 

אז מה משותף לכל השפות הטכנולוגיות האלו?

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

 

חלוקת השימוש בסביבות צד לקוח נפוצות:

 

בחירת טכנולוגיה לצד שרתBack-End

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

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

  • Node.JS - פלטפורמה המאפשרת פיתוח יישומים מבוססי JavaScript בצד השרת, השפה חדרה לתודעה שלנו וצמחה מהר בעיקר מכיוון שהיא מבוססת על שפת Javascript המוכרת והידועה מפיתוח צד לקוח, כך שהמוני מפתחי פרונט גילו בוקר אחד שהם די בקלות הופכים להיות מפתחי בק. בנוסף השפה מתאימה מאוד ליישומי זמן אמת כמו מערכות צ'אט, סטרימינג ויישומי ווב שבהם זמן התגובה קריטי. החיסרון המרכזי הוא הקושי לביצוע פעולות חישוב "כבדות" ברקע, כמו עיבוד תמונה או וידאו.
  • Python – שפה שמתאימה לפרויקטים הדורשים עיבוד נתונים מורכב, ניתוח נתונים או בינה מלאכותית, מתמחה בניהול זיכרון אוטומטי (Garbage Collection) שזו בעצם היכולת לנקות את זכרון השרת ממידע לא רלוונטי וע"י כך לפנות אותו לביצוע פעולות חשובות. פייתון תומכת במספר פרדיגמות תכנות, כולל תכנות מובנה, תכנות מונחה עצמים (Object-Oriented) ותכנות פונקציונלי.
  • Django – לא שפת תכנות אלה סביבת עבודה (Framework) שלוקחת את שפת פייתון ומאפשרת עבודה נעימה וקלילה יותר בעיקר בפיתוח מוצרי Web כדוגמאת אתרים, ומערכות דיגיטליות שמכילות ממשקים.
  • Ruby on Rails – אוקי, בואו נעשה סדר, לפעמים תשמעו Ruby ולפעמים Ruby on Rails - ההבדל העיקרי הוא ש-Ruby היא שפת תכנות שניתן להשתמש בה לפיתוח יישומי דסקטופ ואינטרנט, בעוד ש-Ruby on Rails  היא סביבת עבודה (Framework) שנועדה לפיתוח יישומי אינטרנט, הסביבה מעצימה באופן משמעותי את היכולות המרשימות של Ruby ומאפשרת פיתוח קליל יותר עבור יישומי אינטרנט. חסרונות עיקריים – פחות מתאימה לתחזוקת פרוייקטים גדולים, קהילת מפתחים יחסית קטנה.
  • Java – שפה סופר חזקה מתאימה בעיקר לפיתוח של מערכות "כבדות" לא סתם נתקל בה במערכות אנטרפרייז כאלו שדורשות יציבות, השפה מאפשרת שימוש חוזר בקוד, מגוון רחב של ספריות ומסגרת אבטחה חזקה. היא מפשטת את התכנות עם תחביר פשוט, תומכת בריבוי תהליכים (Multithreading) ומבטיחה ניצול יעיל של המעבד. עם זאת, יש לה גם חסרונות, כמו ביצועים יחסית נמוכים, עומס על ניהול הזיכרון, ופחות נוחה לפיתוח ממשקי משתמש.
  • PHP – שפת קוד פתוח מתאימה בעיקר לפיתוח אתרי אינטרנט, מערכות ניהול תוכן כמו Drupal ו Wordpress לדוגמא מבוססות על PHP. היא אחת השפות הותיקות ובעלת קהילה עצומה של מפתחים שמעדכנים ומשפרים אותה, חסרונותיה העיקריים היא שהיא מבוססת על גישות מיושנות, פחות נוחה לאיתור באגים ורמת האבטחה שלה לא גובהה במיוחד.
  • C#  או ASP.NET – השפה פותחה ע"י חברת Microsoft כדי לאפשר למתכנתים לפתח דפי אינטרנט, יישומי אינטרנט ושירותי אינטרנט. השפה מאמצת את מותולוגיית MVC המאפשרת סדר בקוד והפרדה מלאה בין שליטה בבקשות ותגובות, עיבוד המידע והחזרת ממשקי התצוגה. ל C# יש קהילת מפתחים גדולה, בארץ השפה משולבת במסלולי הלימוד השונים באוניברסטאות ומכללות ולכן ישנו היצע רב של מפתחים בסביבה הזו.

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

 

פופולריות שימוש השפות לפי גודל קהילות הפיתוח:

  

בחירת ה-Database שלנו

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

לרוב, סוג מסד הנתונים מגיע יד ביד עם שפת הפיתוח בצד שרת, למשל

  • פיתוח ב PHP בדרך כלל הולך עם מסד נתונים מסוג MySQL
  • פיתוח C# או NET יעבוד באופן חלק עם מסדי נתונים Microsoft SQL Server
  • בפיתוח JS או Python לרוב אנחנו רואים שימוש במסדי נתונים כמו MongoDB, PostgreSQL ועוד

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

 

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

  • SQL - מסדי נתונים רלציוניים כמו MySQL, PostgreSQL ו SQL Server הם הבחירה הקלאסית עבור יישומים הדורשים שמירה על יחסים מורכבים בין נתונים ועמידה בתקן ACID (Atomicity, Consistency, Isolation, Durability) הם מציעים ביצועים מצוינים ושאילתות גמישות, אך עשויים להיות פחות מתאימים ליישומים שבהם מבנה הנתונים משתנה במהירות.
  • NoSQL - מסדי נתונים כמו MongoDB אוCassandra  מציעים גמישות גבוהה באחסון ועיבוד נתונים בלתי מובנים או משתנים מבדי נתונים אלו מתאים במיוחד ליישומים דינמיים כמו רשתות חברתיות, אפליקציות מובייל, יישומי זמן אמת ופתרונות לניהול כמויות גדולות של נתונים.

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

 

פופולריות סוגי מסדי נתונים לפי שימוש:

 

אבטחה ואיכות קוד

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

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

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

 

עשרת העקרונות בפיתוח מאובטח:

 

 

תשתיות ו-DevOps

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

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

כמה מהמושגים שכדאי שנאמץ כחלק מבחירת הטכנולוגיות הרצויות –

  • GIT – שירות שיאפשר לנו לניהל גרסאות קוד, יאפשר לצוותי פיתוח לשתף פעולה, יאפשר גיבוי קוד באופן שוטף, עבודה במקביל באמצעות ענפים (Branches) והימנעות מקונפליקטים בקוד.
  • Jenkins - כלי אוטומציה שמאפשר לבנות, לבדוק ולפרוס קוד בצורה אוטומטית, תוך שימוש בצינורות (Pipelines) מובנים, אנסה להסביר בעברית – צוותי הפיתוח משתמשים בספריות קוד שונות, ספריות הקוד מחזיקות יכולות שונות וחלקן אף תלויות אחת בשניה, כלי אוטומציה אלו מאפשרים הגדרה אחידה לאותן ספריות ופריסה אוטומטית שלהן בשלב דחיפת הקוד החדש, למשל כאשר מעדכנים גירסה.
  • Docker - פלטפורמה לניהול קונטיינרים, הקונטיינר הוא המעטפת שכוללת בתוכו את קוד המערכת ומהווה שכבה לחיבור על גבי התשתית הנבחרת, בעבודה על קונטיינרים ניתן לפרוס קוד במקומות שונים מבלי להדרש להתאמה ספציפית בכל מקרה, מה שמאיץ את מחזורי הפיתוח, הבדיקות והפריסה.

 

בבחירת התשתית וה Devops נודא שני ערונות עיקריים:

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

 

חשיבות ה DevOps בפרויקט שלנו:

 

סיכום

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

צרו איתנו קשר

כתבו לנו כאן

שדות המסומנים בכוכבית הינם שדות חובה


CreatedByTvuna
המאמץ עלינו!
שלחו קו"ח ותתחילו לקבל הצעות עבודה בדיסקרטיות
בחר קובץ קו"ח
נא לבחור קובץ
קובץ אינו בפורמט תקין (doc, docx, pdf,) או גדול מדי