מהי תשתית בקאנד? מדריך מקיף

עטיפת תשתית השרת של Back4app

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

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

בנוסף, נבחן כיצד ליצור תשתית שרת באמצעות Back4app.

מטרות

בסוף המאמר הזה, תוכל:

  • להסביר מהי תשתית שרת
  • לדון בסוגים שונים של תשתיות שרת (כולל IaaS, PaaS, ו-BaaS)
  • לבחור את תשתית השרת המתאימה לפרויקט שלך
  • לבנות את השרת שלך באמצעות Back4app

מהי תשתית שרת?

תשתית שרת היא השילוב של רכיבי תוכנה וחומרה התומכים במערכת שרת. זה כולל את השרתים, מכולות, רכיבי רשת, חומת אש ומשאבים נוספים.

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

מה לשקול בעת בחירת תשתית שרת?

נדון בגורמים חיוניים שיש לשקול בעת בחירת תשתית שרת.

מהירות

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

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

מהירות היא גם אחד הגורמים הקריטיים ביותר ב-SEO.

גמישות

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

יכולת התרחבות

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

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

תחזוקה

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

בחר בתשתית שרת עם מערכת CI/CD מובנית, או מימוש מערכת משלך.

דרישות DevOps

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

אבטחה

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

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

סוגי תשתיות שרת

אתה יכול להשתמש בשרתים שלך (תשתית מסורתית) או לנצל תשתית ענן לפריסת השרת שלך.

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

ניתח כמה מהפופולריים ביותר.

תשתית כשירות או IaaS

Infrastructure as a Service (IaaS) הוא דגם מחשוב הענן הפחות מופשט. בדגם זה, ספק הענן מספק משאבי מחשוב בסביבה וירטואלית, כגון שרתים, אחסון, מערכות הפעלה ורכיבי רשת.

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

כמה מספקי ה-IaaS הפופולריים הם:

פלטפורמה כשירות או PaaS

Platform as a Service (PaaS) הוא דגם מחשוב ענן המציע סביבה ידידותית לפיתוח, ניהול ואספקת אפליקציות. הוא כולל כלים מובנים לפיתוח אפליקציות, מה שמקל על הפעלת האפליקציה שלך.

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

דוגמאות לפתרונות PaaS כוללות:

שרת כשירות או BaaS

Backend as a Service (BaaS) מאטומט את פיתוח הצד השרת וניהול התשתית בענן. הוא מציע מסדי נתונים בזמן אמת, ניהול משתמשים, אימות, התראות, אינטגרציות למדיה חברתית, ועוד.

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

פלטפורמות BaaS האהובות עליי הן:

מכולות כשירות או CaaS

Containers as a Service (CaaS) הוא דגם מחשוב ענן להעלאה, בנייה, קנה מידה וניהול של מכולות. CaaS בדרך כלל כולל ריצת מכולות, מאגר מכולות, פונקציונליות קנה מידה אוטומטית, מערכת CI/CD מובנית, איזון עומסים ועוד!

CaaS מפשט את הטיפול במכולות, מסיר דאגות לגבי התשתית התחתונה. הוא מעודד פיתוח אג’ילי, מסייע בארכיטקטורת מיקרוסרוויסים, ומאיץ את יצירת האפליקציות בעלות קנה מידה גבוה.

פלטפורמות CaaS כוללות:

כיצד ליצור תשתית שרת?

במקטע זה של המאמר, ניצור תשתית שרת באמצעות Back4app.

מהו Back4app?

Back4app היא פלטפורמת Backend as a Service (BaaS) יוצאת דופן. היא מאפשרת לך לבנות שרתים לאפליקציות ווב וניידות במהירות.

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

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

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

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

כדי ללמוד יותר על Back4app, בדוק את מהו Back4app?

סקירת הפרויקט

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

תרשים ER של הפרויקט שלנו ייראה כך:

תרשים ER למסחר אלקטרוני של Back4app

נבנה את השרת עם מינימום קוד ונראה כיצד ניתן להשתמש בו בצד הלקוח (באמצעות SDKs, REST API, ו-GraphQL API).

יצירת אפליקציה

לעקוב אחרי, נדרש חשבון Back4app. צריך אחד? הירשם היום!

לאחר הכניסה לחשבון Back4app שלך, תראה את רשימת האפליקציות שלך. לחץ על כפתור “Build app” כדי להתחיל את תהליך בניית האפליקציה.

יצירת אפליקציה ב-Back4app

לאחר מכן, בחר “BaaS” כי אנו מקימים שרת.

Backend as a Service של Back4app

בחר שם לאפליקציה, בחר “NoSQL”, וצור את האפליקציה.

תצורת BaaS של Back4app

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

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

תצוגת בסיס הנתונים של Back4app

הגדרת בסיס הנתונים

עכשיו שיצרנו את האפליקציה שלנו, בואו נטפל בבסיס הנתונים.

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

+-------------+-------------+------------------------------------------+
| סוג         | שם          | תיאור                                   |
+-------------+-------------+------------------------------------------+
| מחרוזת      | objectId    | מזהה ייחודי של האובייקט                  |
+-------------+-------------+------------------------------------------+
| תאריך       | updatedAt   | תאריך ושעה של העדכון האחרון             |
+-------------+-------------+------------------------------------------+
| תאריך       | createdAt   | תאריך ושעה של יצירת האובייקט             |
+-------------+-------------+------------------------------------------+
| ACL         | ACL         | רשימת בקרת גישה                          |
+-------------+-------------+------------------------------------------+

כפי שהוזכר בסקירת הפרויקט, לפרויקט שלנו יהיו שלוש מחלקות. צור את הראשונה על ידי לחיצה על כפתור “Create class” בסרגל הצד. קרא לה ProductCategory:

יצירת מחלקת בסיס נתונים ב-Back4app

הוסף את השדות הבאים:

+-----------------------------+-------------+---------------+----------+
| סוג                         | שם          | ערך ברירת מחדל | חובה     |
+-----------------------------+-------------+---------------+----------+
| מחרוזת                      | name        | <השאר ריק> | כן       |
+-----------------------------+-------------+---------------+----------+
| מחרוזת                      | description | <השאר ריק> | לא       |
+-----------------------------+-------------+---------------+----------+

בצע את אותם השלבים עבור מחלקת Product:

+-----------------------------+-------------+---------------+----------+
| סוג                         | שם          | ערך ברירת מחדל | חובה     |
+-----------------------------+-------------+---------------+----------+
| מחרוזת                      | name        | <השאר ריק> | כן       |
+-----------------------------+-------------+---------------+----------+
| מחרוזת                      | description | <השאר ריק> | לא       |
+-----------------------------+-------------+---------------+----------+
| קשר -> ProductCategory    | categories  | <השאר ריק> | לא       |
+-----------------------------+-------------+---------------+----------+
| מספר                        | price       | 0             | כן       |
+-----------------------------+-------------+---------------+----------+

השתמשנו בסוג הנתונים Relation כדי לטפל בקשר רבים-לרבים.

לבסוף, צור את מחלקת Order:

+-----------------------------+------------+---------------+----------+
| סוג נתונים                  | שם         | ערך ברירת מחדל | חובה     |
+-----------------------------+------------+---------------+----------+
| מצביע -> Product           | product    | <השאר ריק> | כן       |
+-----------------------------+------------+---------------+----------+
| מחרוזת                      | cFirstName | <השאר ריק> | כן       |
+-----------------------------+------------+---------------+----------+
| מחרוזת                      | cLastName  | <השאר ריק> | כן       |
+-----------------------------+------------+---------------+----------+
| מחרוזת                      | cAddress   | <השאר ריק> | כן       |
+-----------------------------+------------+---------------+----------+
| מספר                        | delivered  | false         | כן       |
+-----------------------------+------------+---------------+----------+

השתמשנו בסוג הנתונים Pointer כדי לטפל בקשר אחד-לרבים.

לאחר שתסיים, תראה את המחלקות בסרגל הצד.

מילוי בסיס הנתונים

בהמשך, נמלא את בסיס הנתונים.

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

כדי לייבא קובץ JSON השתמש באפשרות “More option > Import > Class data > Select file”. ודא לייבא את קבצי ה-JSON בסדר הבא:

  1. ProductCategory.json
  2. Product.json
  3. _Join꞉categories꞉Product.json
  4. Order.json
ייבוא נתוני מחלקות ב-Back4app

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

אבטחת בסיס הנתונים

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

כדי לאפשר זאת, עלינו להרפות כמה מגבלות. Back4app/Parse מגיע עם שני מנגנוני הגבלה:

  1. הרשאות ברמת מחלקה (CLPs)
  2. הרשאות ברמת גישה (ACLs)

CLPs מאפשרות לנו לאכוף הגבלות ברמת המחלקה, בעוד ש-ACLs מאפשרות לנו לאכוף הגבלות ברמת האובייקט. שני המנגנונים יכולים להגביל מחלקה או אובייקט ל-Role או User ספציפי.

בחר במחלקת Product בסרגל הצד, ולחץ על הטקסט “Protected” בחלק העליון של המסך. לאחר מכן שנה את ה-CLPs:

CLPs של ProductCategory ו-Product ב-Back4app

בצע את אותם השלבים עבור מודל ProductCategory.

לאחר מכן עדכן את ה-CLPs עבור מחלקת Order:

CLPs של Order ב-Back4app

שים לב לתמונה. כאן, אנחנו גם מאפשרים את הרשאת Create.

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

כדי ללמוד יותר, בדוק את מאמר אבטחת Parse Server שלנו.

אפליקציית מנהל

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

למרבה המזל, Back4app מאפשרת לך להפעיל בקלות את הפונקציונליות “אפליקציית מנהל”. אפליקציית מנהל היא לוח ניהול קל לשימוש המותאם למחלקות בסיס הנתונים שלך.

הפעל אותה על ידי ניווט ל-“More > Admin App” בסרגל הצד. לאחר מכן לחץ על “Enable”:

הפעלת אפליקציית מנהל ב-Back4app

Back4app תבקש ממך לבחור שם משתמש, סיסמה וסאבדומיין. החלטתי לבחור את הבאים:

user:        root
pass:        complexpassword123
subdomain:   https://binfra.admin.back4app.com/

מצוין, זה כל מה שעליך לעשות.

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

נסה להתנסות בלוח הבקרה כדי להתרגל אליו.

לוח הבקרה של אפליקציית מנהל ב-Back4app

קוד ענן

Back4app מאפשרת לך להריץ קוד JavaScript מותאם אישית באמצעות כך שנקרא קוד ענן. עם קוד ענן, תוכל להגדיר פונקציות שיכולות להיות מופעלות על ידי Parse, בקשות HTTP, או לרוץ באופן תקופתי. בנוסף, קוד ענן ניתן לשימוש בבניית אפליקציות ווב באמצעות Express.

פונקציית קוד ענן

נניח שרצינו פונקציית קוד ענן שמחשבת את המכירות הנוכחיות.

ראשית, ננווט ל-“Cloud Code > Function & Web Hosting” בסרגל הצד. תבחין שתצוגת קוד הענן מחולקת לשני חלקים. בצד השמאלי, תוכל לראות את מבנה הספרייה ואת הקוד בצד הימני.

קוד ענן ב-Back4app

לאחר מכן, פתח את cloud/main.js והדבק את הקוד הבא:

// cloud/main.js

Parse.Cloud.define("calculateSales", async (request) => {
  const orderClass = Parse.Object.extend("Order");
  const orderQuery = new Parse.Query(orderClass);
  let sales = 0;

  try {
    const orders = await orderQuery.find();

    for (var i = 0; i < orders.length; i++) {
      let order = orders[i];
      let productId = order.get("product")["id"];

      const productClass = Parse.Object.extend("Product");
      const productQuery = new Parse.Query(productClass);
      const product = await productQuery.get(productId);

      sales += product.get("price");
    }
    return { 
      sales: sales,
    };
  } catch (error) {
    console.error("Error calculating the sales: " + error.message);
    return {
      sales: 0,
    }
  }
});

Parse.Cloud.job("printSales", async (request, status) => {
  try {
    const result = await Parse.Cloud.run("calculateSales");
    console.log("Sales: " + result.sales + "$");
  } catch (error) {
    console.error("Error calculating the sales: " + error.message);
  }
});
  1. הגדרנו פונקציית קוד ענן בשם calculateSales(). הפונקציה עוברת על כל ההזמנות, שולפת את המוצרים המתאימים, ומסכמת את המחירים שלהם.
  2. הגדרנו משימת קוד ענן בשם printSales(), המאפשרת לנו להריץ את הפונקציה מלוח הבקרה של Parse ולתזמן אותה באופן תקופתי.

לבסוף, לחץ על “Deploy” לפריסת קוד הענן.

ודא שהמשימה פועלת על ידי ניווט ל-“Cloud Code > Jobs” בסרגל הצד ולאחר מכן הרצת המשימה printSales(). אם הכל עובד היטב, תראה הודעה שאומרת, למשל, Sales: 1440$ בעת בדיקת הלוגים.

תזמון קוד ענן

לתזמן את המשימה, עליך לנווט ל-“App Settings > Server Settings” בסרגל הצד. גלול למטה ל-“Background jobs”, לחץ על “Schedule a job”, ומלא את הטופס.

תזמון משימה ב-Back4app

כדי לוודא שזה עובד, בדוק את הלוגים שוב.

צד הלקוח

ישנן מספר דרכים לאינטראקציה עם השרת המבוסס על Back4app שלך:

  1. Parse SDK
  2. RESTful API (נוצר אוטומטית)
  3. GraphQL API (נוצר אוטומטית)

כעיקרון, תמיד כדאי להשתמש ב-Parse SDK אם הוא זמין עבור הפלטפורמה שלך. אם לא, תבחר בין RESTful API או GraphQL API. הבחירה בין ה-APIs תלויה בנתונים שלך.

למד כיצד להשתמש ב-Parse SDK עם מסגרות עבודה שונות על ידי בדיקת התיעוד.

עם זאת, בוא נבדוק את השרת שלנו באמצעות REST Console המובנה.

נווט ל-“API > REST” בסרגל הצד, ונסה לשאול את כל המוצרים על ידי מילוי הטופס:

REST Console של Back4app

אתה אמור לקבל תגובה דומה:

{
    "results": [
        {
            "objectId": "4ZyHH3X0RQ",
            "name": "Fitness Tracker Watch",
            "description": "...",
            "price": 80,
            "createdAt": "2023-10-17T20:03:55.424Z",
            "updatedAt": "2023-10-17T20:24:12.322Z",
            "categories": {
                "__type": "Relation",
                "className": "ProductCategory"
            }
        },
        {
            "objectId": "cDqlGJzT5U",
            "name": "Organic Fruit Basket",
            "description": "...",
            "price": 40,
            "createdAt": "2023-10-17T20:04:10.063Z",
            "updatedAt": "2023-10-17T20:24:00.382Z",
            "categories": {
                "__type": "Relation",
                "className": "ProductCategory"
            }
        },
    // ...
}

נסה לבצע את השאילתות הבאות:

  1. שלוף את כל המוצרים שהמחיר שלהם גבוה מ-50
  2. שלוף את כל ההזמנות שטרם נמסרו
  3. צור מוצר חדש והוסף לו קטגוריה
  4. מחק הזמנה

סיכום

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

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

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

  1. כיצד לארח צד קדמי וצד אחורי?
  2. כיצד לפתח אפליקציית מדיה חברתית?
  3. כיצד לבנות צ’אטבוט באמצעות React?

משאבי מאמר נוספים זמינים בקוד פתוח ב- מאגר GitHub.


Leave a reply

Your email address will not be published.