רשימת רשימות ליצירה ופרסום של יישומי אינטרנט

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

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

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

נתחיל ביום רביעי.

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

שרת Windows - אותו Windows, אבל בווריאציה של שרת. פונקציונליות מסויימת הזמינה בגרסת הלקוח (הרגילה) של Windows אינה קיימת כאן, למשל, שירותים מסוימים לאיסוף סטטיסטיקות ותוכנות דומות, אך ישנה מערכת עזר לניהול רשת, תוכנה בסיסית לפריסת שרתים (אינטרנט, ftp, ...). באופן כללי, Windows Server נראה כמו Windows רגיל, קוואק כמו Windows רגיל, עם זאת, הוא עולה פי 2 יותר מהמקביל הרגיל שלו. עם זאת, בהתחשב בכך שסביר להניח שתפרוס את האפליקציה על שרת ייעודי/וירטואלי, העלות הסופית עבורך, למרות שהיא עשויה לעלות, אינה קריטית. מכיוון שפלטפורמת Windows תופסת מקום מכריע בשוק מערכת ההפעלה הצרכנית, מהדורת השרתים שלה תהיה המוכרת ביותר לרוב המשתמשים.

יוניקס-מערכת דומה. עבודה מסורתית במערכות אלו אינה דורשת נוכחות של ממשק גרפי מוכר, המציע למשתמש רק קונסולה כאלמנט בקרה. עבור משתמש לא מנוסה, עבודה בפורמט זה יכולה להיות קשה, רק מה המחיר של יציאה מעורך טקסט שהוא די פופולרי בנתונים מֶרֶץ, שאלה הקשורה לכך כבר זכתה ליותר מ-6 מיליון צפיות ב-1.8 שנים. ההפצות (מהדורות) העיקריות של משפחה זו הן: דביאן - הפצה פופולרית, גרסאות החבילות בה מתמקדות בעיקר ב-LTS (תמיכה לטווח ארוך - תמיכה לאורך זמן), המתבטאת באמינות ויציבות גבוהה למדי של המערכת והחבילות; אובונטו – מכיל הפצות של כל החבילות בגרסאות האחרונות שלהן, מה שעשוי להשפיע על היציבות, אך מאפשר לך להשתמש בפונקציונליות שמגיעה עם גרסאות חדשות; Red Hat Enterprise Linux - מערכת הפעלה, הממוקם לשימוש מסחרי, בתשלום, עם זאת, כולל תמיכה מספקי תוכנה, כמה חבילות קנייניות וחבילות מנהלי התקנים; CentOS - קוד פתוח וריאציה של Red Hat Enterprise Linux, המאופיינת בהיעדר חבילות קנייניות ותמיכה.

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

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

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

  • אירוח (שמירה) של שרת בעצמך היא האפשרות הידידותית ביותר לתקציב, אך תצטרך להזמין IP סטטי מהספק שלך כדי שהמשאב שלך לא ישנה את כתובתו לאורך זמן.
  • השכרת שרת ייעודי (VDS) - ונהל אותו באופן עצמאי וקנה קנה מידה של עומסים
  • שלם (לעיתים קרובות הם נותנים לך הזדמנות לנסות את הפונקציונליות של הפלטפורמה בחינם) עבור מנוי לאירוח ענן כלשהו, ​​שבו מודל התשלום עבור המשאבים המשמשים הוא די נפוץ. הנציגים הבולטים של הכיוון הזה: אמזון AWS (הם נותנים שנה חינם של שימוש בשירותים, אבל עם הגבלה חודשית), Google Cloud (הם נותנים 300$ לחשבון, שאפשר להוציא במהלך השנה על שירותי אירוח בענן) , Yandex.Cloud (הם נותנים 4000 רובל . לחודשיים), Microsoft Azure (נותנים גישה חופשית לשירותים פופולריים למשך שנה, + 2 רובל לכל שירות למשך חודש אחד). לפיכך, אתה יכול לנסות כל אחד מהספקים הללו מבלי להוציא אגורה, אלא לקבל חוות דעת משוערת לגבי איכות ורמת השירות הניתן.

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

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

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

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

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

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

בנוסף, בנוסף לאספקת הסביבה, עלינו להבטיח פריסה מוסמכת של האפליקציה, הכוללת כל מיני טרנספורמציות של קוד, התקנה של ספריות וחבילות הקשורות לאפליקציה, הרצת בדיקות, התראות על פעולות אלו וכו'. כאן עלינו לשים לב למושג כמו "שילוב מתמשך" (CI – אינטגרציה מתמשכת). הכלים העיקריים בתחום זה כרגע הם ג'נקינס (תוכנת CI שנכתבה ב-Java עשויה להיראות מעט מסובכת בהתחלה), טרוויס CI (כתוב ברובי, סובייקטיבי, קצת יותר פשוט ג'נקינסעם זאת, עדיין נדרש ידע מסוים בתחום תצורת הפריסה), Gitlab CI (כתוב על רובי וגו').

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

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

  • Python היא שפה ידידותית למדי למשתמש לא מנוסה, היא סולחת על כמה טעויות, אבל היא גם יכולה להיות די קפדנית עם המפתח כדי שהוא לא יעשה שום דבר רע. כבר שפה בוגרת ומשמעותית למדי, שהופיעה ב-1991.
  • Go - שפה מגוגל, גם די ידידותית ונוחה, די קל להרכיב ולקבל קובץ הפעלה בכל פלטפורמה. זה יכול להיות פשוט ונעים, או שזה יכול להיות מורכב ורציני. טרי וצעיר, הופיע לאחרונה יחסית, ב-2009.
  • Rust קצת יותר מבוגרת מהקולגה הקודמת שלה, שיצאה ב-2006, אבל היא עדיין צעירה למדי בהשוואה לבני גילה. מיועד למפתחים מנוסים יותר, למרות שהוא עדיין מנסה לפתור משימות רבות ברמה נמוכה עבור המתכנת.
  • Java היא ותיקה בפיתוח מסחרי, שהוצגה בשנת 1995, והיא אחת השפות הנפוצות ביותר בפיתוח יישומים ארגוניים כיום. עם המושגים הבסיסיים וההגדרה הכבדה שלו, זמן הריצה יכול להפוך למאתגר למדי עבור מתחילים.
  • ASP.net היא פלטפורמת פיתוח יישומים שפורסמה על ידי מיקרוסופט. כדי לכתוב פונקציונליות, משתמשים בעיקר בשפת C# (מבוטא C Sharp), שהופיעה בשנת 2000. המורכבות שלו דומה לרמה שבין Java ל-Rust.
  • PHP, ששימש במקור לעיבוד מקדים של HTML, נכון לעכשיו, למרות שהוא מחזיק בהובלה מוחלטת בשוק השפה, יש מגמה של ירידה בשימוש. יש לו סף כניסה נמוך וקלות כתיבת קוד, אך יחד עם זאת, כאשר מפתחים אפליקציות גדולות למדי, ייתכן שהפונקציונליות של השפה לא תספיק.

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

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

  • ReactJS היא לא מסגרת, אלא ספריה. למעשה, המסגרת שונה מהכותרת הגאה שלה רק בהיעדר פונקציות מסוימות "מחוץ לקופסה" והצורך להתקין אותן באופן ידני. לפיכך, ישנן מספר וריאציות של "הכנה" של ספרייה זו, היוצרות מסגרות ייחודיות. זה יכול להיות קצת קשה למתחילים, בגלל כמה עקרונות בסיסיים והגדרה די אגרסיבית של סביבת הבנייה. עם זאת, להתחלה מהירה, אתה יכול להשתמש בחבילת "צור-הגיב-אפליקציה".
  • VueJS היא מסגרת לבניית ממשקי משתמש. מתוך השילוש הזה, הוא לוקח בצדק את התואר של המסגרת הידידותית ביותר למשתמש; לפיתוח ב-Vue, מחסום הכניסה נמוך מזה של האחים האחרים שהוזכרו. יתר על כן, הוא הצעיר ביניהם.
  • Angular נחשבת למורכבת ביותר מבין המסגרות הללו, היחידה שדורשת הקלד (תוסף לשפת Javascript). משמש לעתים קרובות לבניית יישומים ארגוניים גדולים.

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

מקור: www.habr.com

הוספת תגובה