עבודה בהייטק דורשת מאיתנו להשאר מעודכנים בכמות גדולה של מונחים מקצועיים, עד לפעמים נראה שקל ללכת לאיבוד בכל הטרמינולוגיה הזאת. בייחוד כשמדובר בכלים/טכנולוגיות שלא יצא לעבוד איתם עדיין.
עם זאת, כשתכירו את השפה המקצועית – המסע שלכם בתעשייה יהפוך להרבה יותר פשוט. בין אם אתם שוקלים קריירה בתור מפתחים, ובין אם אתם מכוונים לתפקיד אחר בתעשייה.
במאמר הזה נפרט על המונחים המקצועיים החשובים ביותר בהקשר של פיתוח Backend.
תוכן עניינים
שפות תכנות
PHP
שפת תכנות ופופולרית, בעיקר בזכות הותק שלה. PHP היא שפת סקריפטים בצד השרת המשמשת בפיתוח דפי אינטרנט דינאמיים. wordpress כתובה בה ורוב השרתים תומכים בה.
היום בדר"כ לא יפתחו איתה פרוייקטים חדשים כי היא מיושנת, ולא אינטואטיבית לכתיבה (ביחס לפייתון למשל). הביצועים שלה לא טובים כמו של C# או java ו-GO, אבל כבר בנו איתה הרבה מאד מהבסיס של חברות רבות. אפילו חברות ענק כמו פייסבוק למשל.
Python
פייתון היא שפת high level עם סוגי נתונים פשוטים ותחביר קל לשימוש. היא אחת משפות ה- backend הפופולריות ביותר והיא משמשת חברות רבות, כמו גוגל ופייסבוק. פייתון נוצרה בשנת 1989 על ידי גואידו ואן רוסום ומאז פתחו אותה ללא הרף.
JavaScript
שפת פיתוח נפוצה דווקא לפרונטאנד, אבל בזכות שימוש במנוע v8 ומימוש של ספריית Node.js היא נפוצה גם בפיתוח backend.
C#
לשפת C# יש קווי דמיון רבים ל- Java ו- C++. מפתחים בה קונסולות, טפסים בעזרת: Windows Forms, WPF, שרתי ASP.NET ויישומי אינטרנט. תכננו אותה להיות פשוטה למתחילים ולאפשר פיתוח מונחה עצמים כאחד. מסגרת .NET מספקת תמיכה ב-garbage collection, ירושה בין שפות ואבטחת גישה לקוד בין תכונות מתקדמות אחרות.
לקריאה נוספת: סקירה של 15 שפות תכנות פופולריות>>
פריימוורקס (Frameworks)
פריימוורק זה אוסף של קוד, כלים ושירותים שיוצרים מבנה ספציפי לפיתוח תוכנה. הנפוצים ביותר הם: Ruby on Rails (Ruby), Django (Python), Flask (Python), Spring (Java), Laravel (PHP), React (JS), Express (JS) ו- Angular (JS). חלקם לפרונט, ואחרים לפיתוח backend או ל-full stack (גם וגם).
שימוש ב-framework עוזר ל:
- כתיבת קוד קריא יותר – הקוד בנוי תחת מבנה ברור.
- פיתוח מהיר יותר – פונקציונליות רבה כבר מומשה. לא צריך לכתוב קוד מיוחד בשבילה.
- ריכוז ב״בשר״ של משימות הפיתוח – גם בעקבות המימוש על-ידי החבילה, וגם כי היא יוצרת קונבנציות בנוגע לפיתוחים של הרבה דברים שהם לא ליבת המוצר.
Ruby On Rails
Framework על בסיס השפה רובי. מיישמת את מודל ה-MVC.
Django
Framework web שבנוי על פייתון. לשימוש חופשי, קוד פתוח. מבוססת על MVC. יש כבר הרבה אתרים פופולריים שרצים על ג'אנגו: אינסטגרם, פינטרסט, disqus.
Flask
Flask היא ספריית מיקרו-web הכתובה ב- Python. לא נדרשים כלים או שימוש בספריות מיוחדות. אין לה שכבת הפשטת מסדי נתונים, אימות טפסים או כל רכיב אחר שבו ספריות קיימות של צד שלישי מספקות פונקציות משותפות. עם זאת, flask תומכת בהרחבות שיכולות להוסיף תכונות יישום כאילו יושמו כבר יושמו בה. קיימות הרחבות עבור מפות קשרי אובייקטים, אימות טפסים, טיפול בהעלאות, טכנולוגיות אימות פתוחות שונות וכמה כלים נפוצים הקשורים למסגרת. משתמשים בה: נטפליקס, רדדיט, airbnb.
NodeJS
זאת הדרך לכתוב צד שרת ב-js. פריימוורק לכתיבת יישומי JavaScript ב-backend. הוא בנוי על זמן הריצה של מנוע JavaScript V8. מה שהופך אותו למושלם לתכניות מפוצצות בנתונים ב-real time.
Express
Express גם פריימוורק מבוסס Node.JS. הפרוימוורק שמשתמשים בו הכי הרבה לטיפול בכמה בקשות HTTP שונות בכתובת URL ספציפית. הוא מינימלי, מבוסס קוד פתוח וגמיש. מה שעוזר למפתח להשקיע פחות מאמץ וזמן בפיתוח אתרים ואפליקציות.
Laravel
Framework על-בסיס PHP.
Revel
Framework על-בסיס GO. מכיוון שהוא מממש פיצ׳רים שמוגדרים על-בסיס פונקציות out of the box הוא יעיל. יש לו קהילה יחסית גדולה, והוא נחשב ה-one stop shop.
Package Manager
התקנות הן סיוט. מזל שיש את מנהל החבילות. package manager משמש לאוטומציה של תהליך ההתקנה, השדרוג, התצורה והסרת התוכניות. קיימים כיום מנהלי חבילות רבים למערכות מבוססות יוניקס/לינוקס. מנהלי חבילות זמינים בשפות שונות כמו פייתון, node וכו׳. דוגמאות לכמה: conda, npm, docker, Maven.
מסדי נתונים (Databases)
מסדי נתונים הם עמוד השדרה של כל תוכנה שמשתמשת בנתונים (בקיצור: כמעט כל תוכנה). הם מאחסנים, למשל את כל נתוני המשתמשים ומספקים דרך לאחזר אותם לשימוש חוזר בחלקים אחרים של היישום.
שתי מערכות מסדי הנתונים הפופולריות ביותר ליישומי אינטרנט הן MySQL ו- PostgreSQL. למרות שיש להם קווי דמיון רבים, לשניהם יש הבדלים עדינים שישפיעו על הבחירה שלך ביניהם, למשל:
- MySQL משמש בצורה הטובה ביותר לפרויקטים קטנים יותר מכיוון שדרישות האחסון שלו פחות תובעניות משל PostgreSQL.
- המחיר של PostgreSQL בדרך כלל גבוה יותר מכיוון שהוא דורש יותר כוח חישוב כדי לפעול ביעילות.
- ל- MySQL מערכת כלים עשירה יותר הזמינה לניהול הנתונים שלה בהשוואה ל- PostgreSQL.
Graph Databases
דאטה בייס שמבוסס על קשרים בין עצמים.
Relational Database
דאטה בייס מבוסס טבלאות, כשכל טבלה היא ״ישות״ מסויימת: לקוח למשל.
MySQL
סוג של DB יחסי, שמבוסס על שפת SQL. בין הנפוצים בעולם, בין היתר בשל הותק שלו. MySQL היא מערכת לניהול מסדי נתונים יחסיים, או מוצר תוכנת RDBMS. זהו מאגר הנתונים הפתוח הפופולרי השני בעולם, אחרי אורקל.
mysqldump
MySQL היא מערכת לניהול מסדי נתונים המציעה מספר תכונות אטרקטיביות. Mysqldump הוא כלי עזר שיכול לזרוק נתונים ממסד נתונים MySQL לקובץ טקסט.
Mysqldump הוא אחד הכלים שיש לרשות מפתחי MySQL לגבות מסדי נתונים. ניתן להשתמש בו ליצירת גיבויים של מסדי נתונים, על ידי הפעלת השירות משורת הפקודה או על ידי שימוש בו כחלק מפתרון גיבוי אוטומטי.
כלי השירות mysqldump מעתיק את כל הנתונים מטבלה אחת או יותר במסדי נתונים אחד או יותר לפלט סטנדרטי (stdout). ניתן להשתמש בקובץ ה- dump שנוצר מאוחר יותר כדי לשחזר את אותם נתונים לטבלת מסד נתונים אחרת, או לטעון אותה לתוכנית לקוח mysql אחרת כמו mysql לצפייה.
NoSQL
קבוצת data bases לא רלציוניים – כלומר ללא קשר הכרחי בין ישויות ובלי מבנה מוגדר של שדות. היתרון, והחיסרון שלהם הוא הגמישות. מסדי נתונים של NoSQL אינם דומים למסד הנתונים היחסי המסורתי. הם הרבה יותר טובים בהתמודדות עם נתונים בלתי מובנים, שהם הנורמה היום. מסדי נתונים של NoSQL מיועדים למחשוב מבוזר ולאחסון נתונים, מה שמאפשר מדרגיות קלה הרבה יותר וביצועים טובים יותר. מסדי נתונים של NoSQL מספקים זמינות והרחבה גבוהה השוואה למאגרי מידע יחסיים (כלומר SQL), אבל הם פחות מובנים ממאגרי מידע יחסיים.
חלק מהיתרונות של מסדי נתונים NoSQL הוא שאינם קפדניים כמו מאגרי מידע יחסיים. כך שהם יכולים לאחסן נתונים בקלות ובמהירות. זה הופך אותם לבחירה מצוינת עבור נתונים לא מובנים שאינם מתאימים לקטגוריות מסורתיות. יש להם גם ביצועים מעולים ליישומי אינטרנט עם הרבה חיבורים למסד הנתונים. כמה חסרונות כוללים חוסר אמינות (הרי אפשר להכניס מידע בצורה קלה יותר) וחוסר תמיכה בשאילתות מורכבות בהשוואה ל- SQL.
mongodb
דאטה בייס נפוץ בקטגוריית ה- NoSQL. נפוץ כי במקרה שקובעים ״אינדקסים״ (מפתחות חשובים) – אפשר לשלוף עליהם במהירות. מותאם במיוחד ל-big data. הוא מבוסס על ״מסמכים״ (״רשומה״ שמזכירה במבנה שלה פורמט קובץ json).
MongoDB קיימת כבר יותר מעשר שנים וממשיכה לצמוח בפופולריות. יותר ממיליון ארגונים, כולל טוויטר, אפל ו- Comcast, משתמשים בה ליישומים שלהם.
כדי להתחיל עם MongoDB ממליצים שתורידו אותו למחשב. זה ייתן לך פריסה אחת של התוכנה שאמורה לפעול היטב לפרויקטים קטנים.
API
ממשק תכנות: הכוונה לאיך לגשת ל-X: למשל, בבקשות מסוג http לשירות, יש ״דרך״ שהשירות הגדיר שיפנו אליו. או דרך להשתמש בספריה או חבילה.
GraphQL
סוג של ממשק תכנות חדשני יחסית. נפוץ עבור בקשות http. המשתמש בממשק הזה מגדיר בעצמו איזה מידע הוא רוצה שיקבל (ובכך הוא מונע מהשירות לשלוח אליו יותר מדי מידע). בנוסף, באותה בקשה אפשר לבקש סוגים שונים של מידע – מה שמונע עומס פניות לשרת, כמו ב-RESTful APIs.
RESTful APIs
ממשק שצריך לענות על הקריטריונים הבאים, לפי red hat:
- בקשות HTTP
- ללא state – כלומר, אין מידע שנשמר בין בקשות. כל בקשה ״יודעת״ מה היא צריכה
- שמירת הנתונים ב-cache
- ממשק אחיד
בקרת גרסאות
מערכת בקרת גרסאות מאפשרת למפתחים רבים לעבוד על אותו פרויקט מבלי ״לדרוך״ אחד על השני. כלומר – שיהיה פיתרון מובנה לפיתוח קבוצתי בלי שיהיו קונפליקטים.
git
גיט (Git) היא מערכת בקרת גרסאות פופולרית המאחסנת קבצים במסד נתונים של אובייקטים, ומאפשרת לנו ליצור בקלות גרסאות של העבודה שלנו, לחזור לגירסאות קודמות ולמזג גרסאות שונות יחד. מאגר git הוא ספרייה עם סיומת .git, המכילה קובץ אחד לפחות בשם "config". אתה יכול לחשוב על זה כ"הגדרות "של ענף המאסטר. הוא מכתיב מה קורה כאשר אתה מוציא פקודות מסוימות, כגון git commit.
לקריאה נוספת: 7 טיפים מנצחים לעבודה עם גיט >>
Docker
Docker הוא פרויקט קוד פתוח המספק פלטפורמה פתוחה למפתחים ומנהלי מערכות ליצירה והפעלה של יישומים על ידי שימוש בקונספט של ״קונטיינרים". אתו מייצרים בצורה אוטומטית את פריסת האפליקציות בתוך מכלי תוכנה, על ידי יצירת שכבה נוספת של הפשטה, ואוטומציה של וירטואליזציה ברמת מערכת ההפעלה על לינוקס.
Grafana
Grafana היא ספריית קוד פתוח מבוססת JavaScript המאפשרת למפתחים ליצור דשבורד בתוך דקות. ל- Grafana מקרי שימוש רבים ושונים למטרות ויזואליזציה והצגה של נתונים כמו דיווח, ניתוח או מיפוי מדדים של החברה.
OSI (Open Systems Interconnection)
מודל 7 השכבות הוא מודל רעיוני המראה כיצד נתונים מתקשרים בין שני יישומים. מודל זה נמצא בשימוש נרחב בתחום הרשתות והוא נועד לסייע לאנשים להבין את תהליך העברת הנתונים.
6 השכבות הן שכבת קישור נתונים, שכבת רשת, שכבת תחבורה, שכבת הפעלה, שכבת מצגת ושכבת יישומים. השכבה השביעית נקראת פרוטוקול הפצת התוכן (CDP) או שירות הפצת התוכן (CDS). זהו השלב האחרון לפני שהתוכן בפועל מגיע למשתמשים.
אבטחת מידע
אבטחת מידע היא חלק חיוני בתהליך פיתוח backend. מפתחים חושבים איך הם נמנעים מפגיעויות אבטחה כיוון שאלו יכולות לעלות לחברות בהפסדים גבוהים ולפגוע במוניטין שלהן. מגוון גורמים יכולים ליצור סיכוני אבטחה לחברה:
- שרתי אינטרנט לא מאובטחים
- יישומים המאחסנים נתונים רגישים בטקסט רגיל
- חוסר הצפנה
- קוד כתוב בצורה גרועה
- דליפת נתונים דרך צד שלישי וערוצים חיצוניים אחרים (כגון מדיה חברתית)
- סיסמאות משותפות שקל לנחש או לפצח אותן
SSL
תעודת SSL היא תעודה דיגיטלית היוצרת חיבור מוצפן בין שרת אינטרנט לדפדפן. SSL מצפין את הנתונים הנשלחים ממחשב אחד לאחר.
עלות תעודת SSL תלויה בסוג התעודה הרצויה ובחברה שתנפיק אותה. הסוגים הפופולריים ביותר הם Domain Validated (DV) ו- Organization Validated (OV). הראשון זול יותר מכיוון שהוא אינו דורש אימות רב כמו השני. מנגד, OV מספק אבטחה רבה יותר.
GDPR
תקנה כללית להגנה על מידע של האיחוד האירופי (GDPR). תקנה זו מחליפה את הוראת הגנת הנתונים 95/46/EC ונועדה לאחד את חוקי פרטיות הנתונים ברחבי אירופה, להגן ולעצב מחדש את הדרך בה ארגונים ברחבי העולם מתייחסים לנושא הפרטיות.
Algorithm
אלגוריתם הוא קבוצת הוראות המשמשות לפתרון בעיה. לדוגמה, ניתן לכתוב אלגוריתם להורדת הסיכון להונאה בעסקת כרטיס אשראי, או להשתמש בו כדי למצוא את הטיסות הזולות ביותר מבוסטון ללוס אנג'לס.
חלק משתמשים באלגוריתמים לזיהוי ומניעת הונאות, ואחרים עשויים להשתמש באלגוריתמים לניתוב ולתזמון. חברה עשויה גם להשתמש באלגוריתם כמודל חיזוי או כמנוע המלצות.
בעולם פיתוח backend, אלגוריתמים משמשים בדרך כלל לאיטרציה על נתונים, מיון, חיפוש ומענה לשאילתות. היישום עשוי להיות פשוט כמו שימוש בפונקציית המיון המובנית של שפת ה- JavaScript או מסובך כמו יישום Quick Merge כדי לנצל אלגוריתמי מיון מהירים המותאמים לסוגים מסוימים של נתונים.
SRE ומפתח תוכנה. בוגר תואר מדעי המחשב וניהול בפתוחה, עם 6 שנים בתעשייה, שהובילו אותי לפתוח את פודקאסט "המסלול להייטק".