מעבר לGO למה? איך? ומתי?
-
אז ככה.
אני ג"כ התחלתי עם PHP, והכל זרם בטוב ובנעימים, הרמתי פרוייקטים גדולים ב"ה בהרבה תחומים (הכל סביב מערכות טלפוניות בימות המשיח), ו PHP סיפק לי כלים מספקים למה שהוצרכתי.
עד שהגיע יום, ובקמפיין של סורוצקין - עטרת שלמה היו לי 2500 מאזינים על הקו בו זמנית, מה שגרם שהשרת לא החזיר תשובה לכולם (אני לא יודע מה נקרא שרת קרס, שזה נכבה? הופעל מחדש? לא הגיב מספיק?, בכל מקרה כאן ראיתי שהשרת לא מספיק לענות לכולם,) וזה מדובר על PHP עם אפאצ'י.
שאלתי כאן מה עושים, וההצעה הייתה לעבור לנוד.
אמרתי לעצמי, מה זה הקסם הזה נוד? למה ומדוע זה יותר מהיר? יש לו יותר יכולות מPHP? מה ואיך? לא היה לי כ"כ ברור.
אבל אמרתי, את המצב הנוכחי אני לא ממשיך, אני חייב להתכונן לפרוייקט הגדול הבא.
(בשעתו הרמתי בAWS עוד חמישה שרתים חדשים עם תמונת מערכת של השרת הרגיל, ואז וויסתתי את העומס במערכת וזה סיפק יחסית תפוקה לא רעה).
התחלתי ללמוד נוד, למרות שכמעט ולא היה לי רקע מעשי הJS ולא הבנתי מה בדיוק המושג JS על השרת.
עדיין לא קלטתי מה הרעיון שנוד יהיה יותר מהר.
ואז הגיע @magicode ונתן לי דוגמה של (אריכט... לא יודע איך לכתוב את זה) ויחיד עם הסבר של @אהרן שנתן לי בעצם הבנה שנוד הוא משהו שרץ כל הזמן ואתה יכול לעשות בו פעולות ללא קשר למשתמשים, והשרת יכול להכין מידע וכו' למשתמשים עוד לפני שהם גלשו, ולבצע פעולה אחת שתשמש אלפי גולשים בו זמנית.
זה היה לי חדש לגמרי העולם הזה, אני הייתי רגיל רק לPHP שהכל הוא סקריפט שמתחיל ומסתיים כשהלקוח קורא לדף, ואתה צריך לטעון הכל מחדש לכל משתמש, מה שגורם לשרת לבצע לכל משתמש הרבה תהליכים (ולדוגמא במצ'ינגים בPHP הייתי בודק לכל משתמש 3 קריאות מול השרת של צ'רידי, מה שאין כן בנוד יש בדיקה אחת מתוזמנת של מצב הקמפיין כל 10 שניות, ובדיקת המתרימים כל 3 דקות, זה חסך המון משאבים וזמן).
ובנוסף כאשר אני צריך לולאה לבצע עשר פעולות שלוקחות זמן, בPHP אתה ממתין לכל דבר בסבלנות שיגמור הכל, בנוד הכל מבוצע מיידית.
בהתחלה זה היה לי נורא! לא הסתדרתי עם זה, לא רציתי להסתגל לזה, ללמוד תובנות חדשות, והאמת שאז חיפשתי ברשת וראיתי ג"כ פוסטים שGO יותר מהיר מנוד, ונכנס לי חשק כמוך להתחיל לכתוב בנוד, למה לחכות שזה יהיה הַשפה, אני כבר יכול לרוץ לשם מיד.
אבל במבט מלמעלה ראיתי שזה עבור בנק הפועלים, לא עבורי.
זה דורש קימפול או איך שקוראים לזה, ואין לזה עדיין מספיק קהילה ועוד, ובעיקר כי זה באמת מיותר!
וב"ה המשכתי עם הצעת החברים כאן, למדתי להבין איך להשתלט על האי-סינכרוני (האמת, עד היום אני לא יודע בע"פ מה זה סינכרוני ומה זה אי-סינכרוני), למדתי להשתמש בפרומיס ( @dovid כן אני כבר משתמש עם זה גם בלי ליידע אותך..), למדתי את התחביר של השפה, איך מבצעים פעולות על משתנים ע"י אובייקטים שבתוך המשתנה(string.action()) לעומת PHP שכל דבר הוא פונקציה שמקבל ארגומנט את המשתנה (action(string)).
כתבתי כבר מחלקות לחיבור לבסיס נתונים ועוד ועוד.
המערכות הראשונות שלי שם היו באמת כתובות לא מידי חכם, אבל עשו את עבודה, הייתי חייב במיידית משהו שעובד, וב"ה עם הזמן ובעזרת החברים כאן הגעתי להישגים מאוד יפים בנוד.
נכון לעכשיו אני עדיין משתמש בנוד רק למצ'ינגים ולישיבה על קברו, כי אני לא לוקח כעת פרוייקטים חדשים (אני מקוה בעזה"י להכניס עובד, ואז אוכל לחזור לפיתוחים חדשים), ושאר הפרוייקטים הפעילים עדיין על PHP ולא קריטי להעביר אותם לנוד.
בישיבה על קברו למשל, יש ביום כ18000 השתתפויות של לימודים בנדרים ובטלפון, בPHP על כל תנועה, השרת היה בודק מול בסיס הנתונים כמה וכמה שאילתאות, את רשימת המסלולים להיום, טבלת השאלות והתשובות ועוד, בנוד לעומת זאת, כל חמש דקות יש רענון מול השרת בקבלת הנתונים הקבועים, ורק בדיקות ברמת המשתמש (האם כבר השתתף היום, ועדכון השתתפות) מבוצעות מיידית.
השרת נותן כעת ביצועים הרבה יותר טובים ומהירים בגלל זה.
בקיצור הארכתי מאוד, אבל ראשית רציתי לומר לך, שמע לחברי הקבוצה, שהרימו כבר פרוייקטים ולכל הפחות כמו הפרוייקט הרציני הגדול הבא שלך, ויש להם ידע ורצון לעזור.
א. בגלל עצם המענה להם שזה מה שכדאי עבורך.
ב. כי הם יעזרו לך בהמשך הדרך וההסתגלות.
ושנית, זה היה במה נוספת להביע הכרת הטוב לאלו שסייעו לי להבין ולכתוב בנוד, אלו שהזכרתי לעיל, וכן @יוסף-בן-שמעון (ואולי פיספסתי מישהו א"כ אנא ראה כאן את הכרת הטובה בעילום שם) הן על ההצעה, הן על הלימוד, והן על ההבנה בקשיי ההסתגלות.
ואם מדובר על שפה אהובה, לאחר לימודה אני מחבב אותה יותר מאשר את PHP, למרות שאני כמה שנים הייתי בPHP והייתי בטוח שאין יותר נחמד ממנה.
בהצלחה לכולם -
@חוקר
תודה על התגובה
כבר הרבה זמן אני מחכה לשמוע ממך איך זה לעבור שפה
יש לי עדיין כמה שאלות
א. האם אתה מתכוון לעזוב לגמרי את PHP כדי להתרגל לכתיבה של נוד או שיש דברים שתמיד יהיה יותר נוח לכתוב אותם בPHP למשל לעשות תפריט פשוט בלי מסדי נתונים וכו'
ב. היה לך כאן שאלה פעם אחת על חיבור לFTP של ימות לדעת האם יש קבצים מסוימים במערכת
האם זה היה תרוץ על מה להתאמן או שבאמת זה מועיל עם זה כתוב בנוד (אני שואל כי אני מנסה להבין את המוגבלויות של PHP)
ג. אתה לא חייב לענות אבל מעניין אותי האם הפסקת לקבל עוד עבודות בגלל שאתה עסוק בלימוד נוד או שלא קשור (זאת אומרת האם זה היה יקר לעבור או לא, ואם כן האם זה שווה את המחיר) -
@nigun
ראשית, לעבור שפה, כל זמן שלא הבנת לעומק את ההבדל בין השפה הקודמת לחדשה, ואתה מגיע עם תפיסות שאת זה עושים כך, ואת זה עושים כך וכו', ולא הבנת מהו התחביר והרעיון שעומד מאחורי השפה החדשה, זה מאוד קשה להבין איך עושים פעולות מורכבות בשפה החדשה, אבל אחרי שנהיה הקליק בעזה"י, רואים פה ושם דוגמאות קוד ומהלכי עניינים, ומבינים את צורת העבודה, אתה כבר יודע לתכנן איך לכתוב את הקוד, יודע איך לגלגל ולחפש (כמובן לפני ששואלים כאן מותר לחפש האם מישהו כבר הסביר איך עושים את זה באיזה מקום אחר ברשת), והכל יותר קליל.
א. בנוד, האפליקציה/השירות הוא תהליך, ויש לך ברירה או שאתה כותב את כל המערכות שלך תחת אפליקציה אחת, או לכל דבר תהליך נפרד, זה נראה לי עדיין קצת מסובך, בשביל שרת שנותן שירות פשוט של באם הקשת X הוא ישמיע Z ואם Y הוא ישמיע E, נראה לי יותר קל קוד PHP קטן מרוכז בסקריפט אחד ויש לך שליטה מלאה, ולא צריך להפעיל מחדש את תהליך הנוד המרכזי עבור כל שינוי.
אם כי באם זה כבר דורש חיבור לבסיס נתונים, ובעיקר אם יהיו שאילתות נתונים שחוזרים על עצמם, אני יעדיף לכתוב את זה בנוד.
(כנראה שאצור תהליך חדש עבור כל השירותים החדשים, בצורה שאוכל בקלות לבנות אותה בהתאמה להוסיף מערכות ושירותים בקלות.
ב. הלוואי והיה לי זמן להתאמן, זה היה בשביל ישיבה על קברו, וכחלק מהמעבר של ישיבה על קברו מPHP לנוד, וע"י האי-/סינכרוני (לא זוכר מה נכון לכתוב) זה מבוצע במקום בדיקה של 2 דקות בPHP, מבוצע ב כעשר שניות בנוד. (התהליך הוא בדיקה על כל מסלול האם קיימים כל השאלות והתשובות בימות המשיח).
ג. ב"ה אני 2 סדרים בכולל, ולכן אין לי כ"כ זמן, זה הסיבה. לימוד שפה, דורש זמן, אבל בדר"כ זה לא מחייב זמן על חשבון עבודה, כי את הלימוד התיאורטי ניתן לעשות כשאתה בין כך לא מרוכז וכו', והלימוד המעשי אתה מתחיל באמת לבנות את המערכת ואתה מתחיל להתקדם.
אני לא יודע מה לומר על גו כל זמן שלא ניסיתי את זה, אבל בהחלט בנוד אחרי שהבנתי את הרעיון, אני כבר עובד מראש עם פרומיס, והכל מסודר בצורה שזה לא משנה ולא מפריע זה שזה א-סינכרוני.
ולסיום, לפי הראש שלי, לימוד תיאורטי של קריאת מדריכים של סתם פונקציות ורעיונות בשפה, מומלץ כשאתה לא מרוכז, וזה נותן לך פה ושם תובנות נוספות על השפה, אבל הכי טוב זה להגיע עם תוכנית ברורה של שירות שאתה רוצה להפעיל, ולחפש ולגלגל איך להתקדם ולקדם את זה! (ייתכן ואחרים ניגשים אחרת, כל אחד והטבע והראש שלו).
אאחל לך הצלחה במה שתחליט!