המאמר הקודם שלי תיאר כיצד תוכלו להיכנס לפיתוח חזית. הוא דן גם כיצד הקצה הקדמי יכול להיות מקום מלא במכרות - צעד במקום הלא נכון ותמלא את המסגרות הרבות של המערכת האקולוגית של JavaScript.
במאמר זה בבלוג, בואו נראה כיצד תוכלו להיכנס לפיתוח קצה אחורי. בדרך אני אענה על כמה מהשאלות הנפוצות ביותר שאנשים שואלים אותי בנושא.
מהי פיתוח Backend?
פיתוח חזית כולל את מה שמשתמש רואה על המסך כשהוא פותח כתובת URL ספציפית שבבעלותך. אפילו בסביבה סטטית לחלוטין (עם HTML / CSS בלבד), כאשר מישהו פותח אתר, שרת כלשהו על פני כדור הארץ צריך להגיב אליך באמצעות אותם קבצי HTML ו- CSS.
שרת זה הוא רק מחשב, בדיוק כמו זה שאתה משתמש בעצמך לגלוש באינטרנט. אבל זה היה מכוון לביצועים, ואין בו רכיבים מיותרים כמו עכבר או מקלדת מחוברים. וזה יושב עם טונות של מחשבים אחרים כנראה במחסן נתונים.
תכנות מחשבים אלה באופן מיוחד כלשהו נקרא פיתוח אחורי .
אתה עשוי לחשוב שפיתוח backend נקרא מה זה מכיוון שהוא פועל מאחורי גבו של המשתמש. מבקר באתר שלך לעולם לא ממש "ניגש" לחלוטין לקצה האחורי. הם פשוט מתקשרים עם השרת שלך, ישירות דרך יציאות לגישה מוגבלת מאוד (כמו העברת קבצי HTML / CSS) או אפילו לא כך - קבורים עמוק מתחת ל- CDN או חומות אש (כמו Cloudflare).
עכשיו, כשיש לנו הבנה גולמית של המשמעות של פיתוח עורפי, בואו ניכנס לכמה שאלות אמיתיות .
האם נדרש ידע בתכנות חזית לקצה האחורי?
TLDR; לא.
פיתוח עורפי, כאמור לעיל, כולל תכנות של מחשב היושב כנראה בצד השני של כדור הארץ האחראי להגיב לדברים שהמשתמשים שלך אומרים מהמחשבים שלהם.
אם אתה מפתח backend במשרה מלאה, אתה לא באמת צריך לדאוג למה שקורה בתוך אותם קבצי HTML, CSS ו- JavaScript שאתה שולח לדפדפן המשתמש. במקום זאת, עליכם להתמקד יותר בביצועי השרת, קוד השרת ותפוקתו.
מה נכנס לפיתוח האחורי?
ובכן, לפי הספרים, אתה יכול לומר שאדם שמקודד יישום שיכול לענות לבקשות HTTP הוא מפתח קצה.
אך במציאות, לפעמים מפתחי קצה אחורי מסוגלים לעשות הרבה יותר מסתם כתיבת סקריפטים של שרתים. יש להם את הידע להקים שרתי פרוקסי הפוכים (NGiNX / HAProxy), לאפשר דחיסה ודרכים אחרות להאיץ את האתר ולהקים סביבת עגינה לייצור.
כדי להיות כשיר כמפתח אחורי, הייתי אומר שהמיומנויות המינימליות הדרושות לך הן:
- ידע טוב אודות שפת תכנות בה ניתן לכתוב שרתי HTTP. דוגמאות: C #, Java, Node, PHP, Python וכו '(יש הרבה!)
- נהל לארח באמצעות cPanel (מסורתי) או באמצעות מסוף bash (אירוח ענן / מסורתי)
- עבודה עם מערכות בקרת גרסאות (VCS) כמו git לניהול ופריסה של בניינים
בדיוק כמו כל משחק מגיע עם מפרט מינימלי ומומלץ, עבור מפתחי קצה, המפרט המומלץ שלי יהיה (כולל כישורי המינימום):
- NGiNX לנכסי קבצים סטטיים וניהול שרתים
- כישורי ניהול מסדי נתונים (SQL / NoSQL)
- אבטחת backend (כתיבת קוד בטוח וחזק, הפעלת יישומים במכולות docker עם הרשאות מוגבלות, הגנה מפני התקפות DoS)
- כיוון אוטומטי / איזון עומסים
בסדר, יותר מדי מדברים על מה שנכנס לפיתוח הקצה האחורי. אבל איך הופכים לאחד?
התחל בדרישות מינימום
כמו שאמרתי, עבור החלק האחורי, ממש כמו משחקים, יש לנו סט של דרישות מינימום ודרישות מומלצות. דרישות המינימום מורכבות משלושה דברים:
למד שפת תכנות backend
כשאנשים לומדים בעצמם, בדרך כלל אין להם צוות או מישהו שיכול לפתח חזית. כולם לבד. לכן לעתים קרובות תצטרך ליצור דפי אינטרנט ושרתים לבד, לפחות בהתחלה.
למרות שיש הרבה אפשרויות לשפות תכנות עורפיות, ואני לא יכול לחשוב על שום שפת מערכת פופולרית שאינה תומכת בשרתי HTTP מהקופסה. היתרון בבחירת הצומת הוא שמיומנויות ה- JavaScript של הקצה שלך ניתנות להעברה לקצה האחורי.
עם זאת, תוכלו לבחור ממגוון שפות כמו Java, C ++, C #, Python, PHP וכו '.
איך תבחר אחד, אתה יכול לשאול. התשובה היא זהה לזו שהייתה במאמר הפיתוח הקדמי: עליכם לנסות הכל בהתחלה ולראות איזה מהם לוחץ הכי טוב איתכם.
הצומת קל כי ייתכן שכבר ביצעת תכנות JS עבור הקצה הקדמי. אבל אם אתה מפתח Python או Java, אתה עשוי למצוא את אלה קלים להילקח. זה תלוי במקצוע שלך וטעמך לחלוטין.
למד אודות ניהול אירוח
הימים בהם תצטרך לרכוש שרתים ולהגדיר אותם בבית שלך, להתחבר לספק שירותי האינטרנט שלך, לעשות את כל הדברים בעצמך. זהו עידן מחשוב הענן. כעת, בעת אירוח האתר שלך, יש לך בעיקר שתי אפשרויות:
- הולך לשרתי אירוח מנוהלים כמו HostGator או GoDaddy.
- הולך לספקי אירוח ענן כמו GCP, AWS או DigitalOcean.
מה ההבדל בין השניים? בשני המקרים, השרתים נמצאים בבעלות והחברות המתאימות. אך ההבדל העיקרי הוא שאירוח מנוהל הוא ידידותי יותר לממשק משתמש, יש לו סט עשיר של כלים לצפייה במערכת הקבצים, לניטור השימוש, ניהול הדוא"ל הרשמי של הדומיין שלך, העלאה / הורדת קבצים מהשרת שלך, וכן הלאה. זה בעצם מערך לאנשים עם כישורים טכניים פחות.
מסיבה זו, אני לא ממליץ על אתרים מנוהלים כמו HostGator או GoDaddy למפתחים מנוסים. ובכל זאת, זו עשויה להיות פלטפורמה טובה לטעות וללמוד עליה, בעיקר משום שלרוב יש לך תוכניות משולמות מראש עבורן. יהיה לך גם ממשק משתמש נחמד לניהול דברים, מה שלא מאפשר לך לירות בטעות את החשבונות שלך.
אבל כשאתה מתחיל לעלות במהירות, אני ממליץ לך לעבור לספק ענן. זה מוריד את כל הכלים הנחמדים מ- cPanel שבהם השתמשת לניהול קבצים ותיקיות בשרתים. אך יחד עם זאת, זה יאתגר אתכם להגביר את הכישורים שלכם הרבה.
כיום, הרבה ספקי ענן מציעים גם תקופת ניסיון מהנה בחינם, כך שתוכלו באמת לנסות את הפלטפורמה שלהם לפני שאתם נכנסים למלואם. אני מארח את האתר שלי למפתחים - codedamn - ב- DigitalOcean ומוצא שהוא נמצא במאזן מתוק של מורכבות האתר ותכונותיו.
אתה יכול להשתמש בקישור זה כדי להירשם ל- DigitalOcean ולקבל זיכויים של 100 דולר בחינם . מקרים של DigitalOcean זולים כמו 5 דולר לחודש, אז יש לך מסלול של כ -20 חודשים באותו מקרה, הרבה, נכון?
בכל מקרה, אתה יכול לבחור כל ספק ענן. אז חשוב ללמוד לנהל את השרת באמצעות שורת הפקודה רק על ידי ssh'ing לתוכו.
למד על מערכות בקרת גרסאות
ישנם פתרונות אחרים מלבד Git עבור VCS. אבל גיט הוא הנפוץ ביותר והפשוט ביותר להבנה.
כאדם, יתכן שלא תעריך זאת מיד. אבל תבין מדוע כל כך חשוב ברגע שאתה מתחיל לעבוד או בצוות על מספר תכונות בו זמנית בפרויקט שלך.
Git מאפשר לך לנהל את זרימת העבודה שלך באמצעות התחייבויות וענפים. ההתחייבויות הן כמו מחסומים בבסיס הקוד שלך - אלה שתמיד תוכל לחזור אליהן אם אתה מתברג.
סניפים הם כמו מציאות חלופית של הפרויקט שלך, שבו משהו אחר לגמרי יכול לקרות. מציאות חלופית אלה ניתנת ליצירה מכל נקודת זמן וניתנת למיזוג חזרה בכל עת.
אם ניתן למזג מציאות אלה יחד עם תאימות, אז זה בסדר. אבל אם יש קונפליקט (כמו אם אתה חי במציאות אחת ומתה באחרת), אתה צריך לבחור באופן ידני. ניתן למזג שינויים אחרים באופן אוטומטי.
Git הוא סופר מעניין, וברגע שתתמקד בזה, תרצה להשתמש בו בכל פרויקט. אתה יכול לשמור על היסטוריה של העבודה שלך בצורה יעילה (זה דוחס ואוחסן רק את ההבדל בין התחייבויות).
זה גם מאפשר לך ליצור מאגרי git מקוונים באתרים כמו GitHub, המשמשים מקור אמת מרכזי עבור האתר שלך. ניתן להגדיר אתרים כמו GitHub עם ווקי-רשת מיוחדים שיכולים למעשה לעדכן את האתר שלך בכל פעם שאתה מוסיף נקודת ביקורת חדשה (התחייבות חדשה) מבלי שתצטרך לעבור ידנית לשרת ולעדכן אותו בעצמך.
לכו על כישורים מומלצים
אני מאמין גדול בלמידה על ידי עשייה. והדרך הטובה ביותר לעשות משהו באה מתוך צורך או עניין. ברגע שאתה מחשיב את עצמך מספיק טוב עם הדרישות המינימליות, הגיע הזמן לרכוש את הכישורים המומלצים. זה כולל את כל הכלים כמו Docker ו- NGiNX שהוזכרו לעיל.
DevOps הוא גם משהו שמתאים מאוד למפתחי הקצה האחורי. אתה יכול לנסות לחקור את TravisCI או CircleCI עבור פריסות בנייה אוטומטיות. שילוב ופריסה רציפה (CI / CD) הוא נושא שיכול לקחת עוד פוסט בבלוג, אז אני לא אכנס לזה. למעשה, ברגע שהוא מוגדר כראוי, זה יחסוך לכם זמן מגוחך של זמן מפתח!
ואז מגיעים מאגרי מידע, אותם הנחתי בכישורים מומלצים. אבל אתה זקוק למאגרי מידע עבור כמעט כל יישום שכרוך באיזושהי התמדה בנתונים שנוצר על ידי המשתמש.
בדרך כלל קל להתחיל לעבוד עם בסיסי נתונים, אך קשה יותר לתחזק אותם ולעצב אותם כראוי. הדרך הטובה ביותר להתחיל לעבוד על ערימת טכנולוגיה אחורית היא להכין הכל בשרת יחיד - קוד היישום שלך, שרתי ה- proxy ההפוכים, מסד הנתונים וכו '. לאחר שתהיה מיומן יותר בכל דבר, תוכל לנתק אותו מההיגיון העסקי הקיים.
על ידי כך אתה מאפשר ארכיטקטורה שניתן לשנותה בקנה מידה גבוה. יישום אינטנסיבי להפעלת מסד נתונים יכול לכלול פתרון מותאם לבסיסי נתונים. ואתר כבול לתעבורה כבדה אמור להיות בעל מנגנון CDN טוב לפריקת נכסים סטטיים וכן הלאה.
סיכום
יש כל כך הרבה מה ללמוד, אבל הכל בר השגה אם לא מוותרים. תודיע לי מה אתה חושב על זה לכתוב הדרך שלי twitter ו- Instagram הידיות. זה אומר לי מאוד אם נתחבר לשם!
כמו כן, אם אתם מעוניינים, צפו בקוד codedamn - פלטפורמה ממוקדת למפתחים לטכנולוגיות למידה כמו פיתוח backend! אפילו פרסמתי סרטון YT על הפעלת שרת אתרים פשוט משלך תוך 2 דקות! בדוק את זה ותן לי לדעת מה אתה חושב!
שָׁלוֹם!