שלום Node.JS

בנובמבר 2009 מפתח JavaScript בשם ריאן דל (Ryan Dahl) עלה על הבמה בכנס JSConf כדי להציג פרויקט חדש עליו הוא עובד: פיתוח טכנולוגיה חדשה לשרתי Web.

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

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

התוכנית של דל היתה לשנות ארכיטקטורה. שרתי ווב יעברו ממודל של Multiple Worker Processes למודל של Non Blocking Single Worker. באנלוגיה למוקדי שירות טלפוני אפשר לחשוב על המודל הישן כמוקד שירות קלאסי בו לקוח מתקשר, נציג שירות עונה וכל זמן השיחה הנציג מדבר רק עם הלקוח שאיתו עכשיו על הקו. המודל שדל הציע דומה יותר לשירות לקוחות בצ'ט, שם כל נציג שירות יכול לדבר עם המון לקוחות במקביל. בזמן שאתה מחכה שלקוח אחד יענה לך להודעה אתה ממשיך ומתכתב עם לקוחות אחרים.

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

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

בתשע השנים שעברו ידע נוד עליות ומורדות. ב 2010 אייזק שלוסטר פיתח מנהל חבילות שנקרא npm בעזרתו אנשים יכולים לשתף קוד node.js שכתבו עם אחרים ופרויקטי node.js יכלו להתבסס על חבילות אחרות מהמאגר מה שיצר Eco System מאוד גדול. ב 2017 המאגר הזה היה מאגר החבילות הגדול בעולם עם מעל 350,000 חבילות תוכנה. ב 2012 ריאן דל עזב את הפרויקט והשאיר את הניהול לאייזק. ב 2015 הוקם Node.JS Foundation שאחראי על איפיון והמשך פיתוח הסביבה.

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


שימו לב- כל תוכניות הדוגמא מהקורס זמינות אונליין בקישור:

https://github.com/tocodeil/nodejs-course-demos