מה זה מודל שרת-לקוח ואיך הוא מניע את כל האתרים באינטרנט

סער טויטו

סער טויטו

Software & Web Development


TL;DR
  • צד לקוח (Client-side) הוא כל הקוד שרץ במכשיר של המשתמש — HTML, CSS, JavaScript שמציגים ומקיימים אינטראקציה עם הממשק.
  • צד שרת (Server-side) הוא הקוד שרץ במחשב מרוחק — מקבל בקשות, מעבד נתונים, גש למסד נתונים ומחזיר תגובה.
  • API ו-endpoints הם ממשק התקשורת בין שני הצדדים — כל endpoint מגדיר פעולה ספציפית שהלקוח יכול לבקש מהשרת.
  • ההפרדה מאפשרת סקלאביליות שינוי צד אחד לא שובר את השני, ניתן לנהל ולתחזק כל צד בנפרד ולהתמודד עם עומסים.

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

מודל שרת-לקוח במבט כללי

מודל שרת-לקוח מפריד בין שני עולמות: צד הלקוח שרץ במכשיר של המשתמש (דפדפן, אפליקציה) ואחראי על מה שרואים ומרגישים, וצד השרת שרץ במחשב מרוחק ואחראי על הלוגיקה, הנתונים והאבטחה. שני הצדדים מתקשרים דרך API — כל בקשה עוברת כ-HTTP Request, השרת מעבד ומחזיר HTTP Response. ההפרדה מאפשרת לכל צד להתפתח ולהיות מנוהל בנפרד.

צד לקוח - Client-side

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

צד שרת - Server-side

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

מודל שרת–לקוח - תרשים זרימה

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

אז בואו נחלק את התרשים הזה לשלבים:

  1. פעולת המשתמש:

    המשתמש בוחר לבצע פעולה בצד הלקוח (client), כמו לחיצה על כפתור מה שמתחיל את התהליך של בקשה לשרת באמצעות בקשת HTTP.

  2. בקשת HTTP ו-API:

    צד הלקוח שולח בקשת HTTP לשרת. הבקשה מתמקדת בנקודת קצה שנקראת endpoint, שהיא חלק מקבוצה גדולה יותר של endpoints המרכיבים משהו שנקרא API. כל endpoint מגדיר פעולה ספציפית שהמשתמש רוצה לבצע. למשל, אם המשתמש מעוניין לראות את כל המוצרים הזמינים בחנות, הוא ישלח בקשה לנקודת הקצה products/, שתחזיר לו את רשימת המוצרים.

  3. ניתוב (Route) ו-API:

    כאשר השרת מקבל את הבקשה, הוא משתמש בנתיבים (routes) כדי להעביר את הבקשה ל-endpoint המתאימה שמוגדרת ב-API. כל נתיב מקשר לפעולה ספציפית שהמשתמש רוצה לבצע. לדוגמה, אם המשתמש רוצה לעדכן פרטים של מוצר מסוים, הוא ישלח בקשה לנקודת הקצה /products/:id, כאשר :id הוא מזהה ייחודי של המוצר. הנתיב הזה מכוון את הבקשה לקוד המתאים שבודק את המזהה, מוצא את המוצר במסד הנתונים ומעדכן את הפרטים שלו.

  4. חישוב והחזרת תגובה:

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

  5. הצגת התוצאה:

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

diagram of client-server-model

שאלות נפוצות על מודל שרת-לקוח

מה ההבדל בין צד לקוח לצד שרת?

צד לקוח (Client-side) הוא הקוד שרץ במכשיר של המשתמש — כל מה שנראה ומתנהג בדפדפן: HTML, CSS, JavaScript. צד שרת (Server-side) הוא הקוד שרץ במחשב מרוחק — מקבל בקשות, ניגש למסד נתונים, מעבד נתונים ומחזיר תגובה. המשתמש לעולם אינו רואה קוד צד שרת ישירות.

מה זה API ו-endpoint?

API (Application Programming Interface) הוא ממשק התקשורת בין צד הלקוח לצד השרת — אוסף של endpoints. Endpoint הוא נקודת קצה ספציפית שמגדירה פעולה אחת (למשל /products שמחזירה רשימת מוצרים). הלקוח שולח בקשת HTTP ל-endpoint, השרת מעבד ומחזיר תגובה עם הנתונים או אישור הפעולה.

למה חשוב להפריד בין צד לקוח לצד שרת?

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

מה קורה כשלחצתי על כפתור באתר?

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

מה זה HTTP Request ו-Response?

HTTP Request הוא הבקשה שהלקוח שולח לשרת — כולל שיטה (GET/POST/PUT/DELETE), כתובת URL, כותרות ולעיתים גוף עם נתונים. HTTP Response הוא התגובה שהשרת מחזיר — כולל קוד סטטוס (200 להצלחה, 404 לא נמצא, 500 שגיאת שרת) וגוף עם הנתונים המבוקשים.