5 גישות לארכיטקטורת שרת שאתם צריכים להכיר לפני שאתם מתחילים לפתח

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

מקור: Pixabay

מאת: רדי בקר

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

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

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

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

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

Synchronous Monolith

מדובר בצד שרת שממומש ע”י שפות פיתוח קונבנציונליות, כמו: C#, Java, Ruby On Rails וכו’. מדובר בבלוק אחד גדול של קוד שמקבל בקשות מצד ה-client, מעבד בצורה סינכרונית ומחזיר תשובה.

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

Asynchronous Monolith

מדובר בצד שרת שממומש ע”י NodeJS וכתוב ב- JavaScript. בלוק אחד גדול של קוד שמקבל בקשות מצד ה-client ומעבד בצורה א-סינכרונית (קודם כל מחזיר תשובה ואחר כך מבצע את המשימה).

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

Microservices With Api Gateway

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

נבחר בסוג זה כאשר:

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

Microservices with Message Bus

גם כאן מדובר בצד שרת שיכול להיות ממומש ע”י כל שפת פיתוח, אך אם אין צורך מיוחד עדיף לבחור ב-NodeJS. גם שרת זה מורכב מהרבה מיקרו סרוויסים כשכל אחד מהם אחראי על חלק אחד מאוד קטן במערכת. התקשורת בין הסרוויסים עוברת דרך תור (queue). צד אחד שולח Job לתור (צד זה נקרא publisher) והצד השני מוציא Job מהתור ומעבד אותו (נקרא subscriber או consumer תלוי בשיטת המימוש של message bus).

נבחר בסוג זה כאשר:

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

Serverless

מדובר למעשה במימוש צד שרת על גבי אחד הקלאודים שתומכים ב-serverless. המשמעות היא שאנחנו לא פורסים את הקוד לשרת מסוים אלא לשירות קלאוד (למשל lambda ב-aws) והשירות מחליט בעצמו לאיזה שרת לפרוס. לרוב בגישה זו נפתח עם NodeJS.

נבחר בסוג זה כאשר: 

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

אז מה היה לנו כאן?

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

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

הכותב הינו שותף מייסד בחברת Boostart.io

Avatar

כתב אורח

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

הגב

27 תגובות על "5 גישות לארכיטקטורת שרת שאתם צריכים להכיר לפני שאתם מתחילים לפתח"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

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

סידור לפי:   חדש | ישן | הכי מדורגים
צחי
Guest

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

כפיר
Guest

מסכים לגמרי

דור
Guest

ואף מילה על NALSD.

זורק בומרנג
Guest

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

ירון לוי
Guest
הרבה אי דיוקים (: בהנחה שאנחנו מדברים על mvp, אין שום סיבה להתסכל בכיוון של micro services. הם מסבכים מאוד את זמן הפיתוח ומרחיקים אותך מלהתעסק/לוודא את הבעיה שבאת לפתור. כשגדלים ומתחילים להתקע ב”קירות” (סקייל, הפרדה בין צוותים ומודולים…) אפשר לשקול מעבר ל micro services. וגם לא תמיד רצוי. לגבי המונוליט, מומלץ תמיד לעבוד בצורה אסינכרונית, כלומר השרת הוא רק צינור שמעביר בקשות CRUD מ/אל שירותים אחרים ואף פעם לא מתעקב על חישוב (צורך cpu). גם Node וגם .Net Core תומכות בשיטה הזו – שימוש ב async/await. אם יש צורך בחישוב (cpu), אז Node לא תתאים. במקרה כזה אפשר להעביר… Read more »
Slavik Meltser
Guest

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

גיא
Guest

נשמע שהכותב נורא אוהב nodejs.
כתבה ברמה נמוכה מאוד.

עומרי
Guest

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

מומי
Guest

לא הייתי מזלזל, בכ״ז מייסד שותף והכל, מגייס עוד 3 אנשים וחותם בתור VP R&D.

זורק בומרנג
Guest

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

Guest
Guest

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

שמואל
Guest

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

Hugh Jass
Guest

חלש

Slavik Meltser
Guest
לגבי ה-NodeJS שהכותב הזכיר כמעט בכל ארכיטקטורת צד שרת, אני נוטה להסכים. מי שמכיר JavaScript (כמו הרוב המוחלט של היזמים הטכנולוגיים), זהו הפריימוורק הנכון להתחיל איתו. ניתן להרים איתו אפליקציות מהר מאוד בסקייל גבוהה בלי יותר מדי מאמץ והשקעה, במיוחד לאור העובדה שקיימים בה את כמות הספריות בקוד פתוח הגדולה ביותר. כלומר, כמעט לכל משימת מיקרו ולעיתים גם מאקרו, כנראה כבר כתבו לה ספרייה ל-NPM. בסוף ה-Life Cycle של ה-PoC ו-MPV, אפשר כבר לחשוב על טכנולוגיות ופתרונות שונים בהתאם לניטור קצוות המוצר שכתבנו עד כה, כמו צווארי בקבוק, סקייל, חישוביות מותאמת וכו׳. כי אל תשכחו שאנחנו לא יכולים לחזות את… Read more »
סבטלנה זה לא קומוניזם
Guest
סבטלנה זה לא קומוניזם

וואו כמה אתה מזבל בשכל

בוט
Guest

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

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

מומי
Guest

אז הבנתי שב bootstart.io אוהבים בעיקר Node.js האא?

יניב
Guest

רדוד ברמות.. סורי, ציפיתי ליותר

Hhhh
Guest

למה יש לי הרגשה שהכותב של המאמר מתכנת בjs

Dr. D
Guest

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

יוסי
Guest

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

בוט
Guest

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

יוסי
Guest

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

אמיר
Guest

באמת כתבה לא משהו.
ממליץ ל-Geektime למחוק אותה ולא להשאיר אותה,
פשוט כדי לא להוריד את הרמה של האתר.

מרדכי
Guest

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

משה הקיפוד
Guest

הכותב כותב דברים מאוד מאוד כלליים ודוחף את המילה Node js בתור הטכנולוגיה המובילה או הכי נכונה , שזה פשוט מטעה ולא נכון , אז בסדר אתה כותב ואוהב node js , ואין בזה שום דבר רע וזה אחלה טכנולוגיה, אבל לכל פיתוח ולכל בעיה יש הרבה פתרונות אפשריים בהרבה שפותפרמורקים שונים, והדבר הכי נכון זה לומר זה “depends” .
ועוד משהו מצחיק האתר שלהם בכלל של ויקס , לא כתוב ב nodejs וקיבל ציון 30 בביצועים , וגם היצירת התקשרות מופיעה 4 פעמים … (עם באג קטן ב on enterleave focus)

בוט
Guest

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

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

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

wpDiscuz

תגיות לכתבה: