שאלה לגבי עקרונות Best Practice של להעלות שרת של Node לפרודקשן
אם אני עובד עם nodemon בזמן הפיתוח, יש עניין שהקוד שמעלה את השרת בסביבות productio יהיה עם הפקודה node index.js ולא עם nodemon?
אני משחק בינתיים ברמה של פרויקטיים אישיים ומבחני בית, וסתם זאת שאלה שעלתה לי לראש..
תודה, אלון
אפשרויות ניהול
King_Cobra
13.08.2022:37
1. הסבר שמסביר יפה את העניין למה לא לא להריץ ישירות את nodejs אלא דרך Nodemonבתגובה להודעה מספר 0
או supervisor בנוסף הם מזכירים שם גם משהו שנקרא pm2, הסיבה שהם רושמים שלהריץ את nodejs ישירות זה לא טוב, היא שאם קרה שינוי בשרת אז יהיה צורך להוריד את השרת ולהעלות אותו מחדש, לעומת זאת אם אתה משתמש ב nodemon או supervisor אז ברגע שיש שינוי השרת יאתחל את עצמו לבד עם השינוי החדש. לגבי ה pm2 הם נותנים דוגמה שאתה פונה ל endpoint ומבקש קובץ שלא קיים והדבר עלול להקריס את השרת שלך אז ה pm2 יריץ את השרת מחדש במקרה כזה.
3. לא מומלץ להריץ nodemon בסביבת prod כיוון שזה לא הכליבתגובה להודעה מספר 0
Nodemon נועד לרפרש את הפרוסס של הנוד כשמשתנה הקוד. בניגוד למה שנכתב למעלה, deploy של קוד חדש בכל מקרה מצריך להוריד ולעלות את השרת, גם אם זה בעזרת nodemon. הדבר יגרום לdowntime.
בשביל זה המציאו process managers כדוגמת pm2, שמה שהם עושים, זה לנהל את תהליכי ה-node. pm2 שאיתו אני משתמש, מאפשר לך להריץ כמה instances של אותה אפליקציה בעזרת cluster, מה שמאפשר לי בזמן deploy, לעלות את הקוד, ואז בעזרת pm2 לעשות reload. הוא יודע לעשות את ה-reload בצורה שתיהיה zero-downtime, ע"י כך שהוא מוריד תהליך אחד, אחרי שהוא עלה, מוריד את השני. (בשביל זה צריך להריץ לפחות 2 תהליכים של אותה האפליקציה). בנוסף לכך, כיוון שהאפליקציה רצה על 2 תהליכים (אפשר להריץ כמה שרוצים), זה בעצם מאפשר לך לעשות "load balance" בין תהליכים. (במידה והשרת שלך מרובה ליבות / מעבדים).
כמה עוד
20.08.2020:24
4. תודה רבה! למדתי משהו חדשבתגובה להודעה מספר 3
@CaTz@
hank_mudy
21.08.2017:41
5. הסבר מעולהבתגובה להודעה מספר 3
תפתתפת
06.10.2022:52
6. אצלי בארגון העלתי את זה ב DOCKER IMAGE על מכונה.בתגובה להודעה מספר 0
OmerBa
08.10.2011:33
7. רק dockerבתגובה להודעה מספר 0
אוהב לתכנת
18.11.2000:31
8. Nodemon נועד לפיתוח בעיקר, pm2 זה מה שאתה צריךבתגובה להודעה מספר 0