5 תצורות נפוצות לשרתי אפליקציות אינטרנט

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

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

1. התצורה הבסיסית הפשוטה – הכל על אותו שרת

עבור אתרים פשוטים, מספיק בהחלט לשים את כל סביבת הפרודוקשיין (=ההרצה ) על אותו שרת וירטואלי. בתוך VPS אחד שמים יחד שרת Web, דאטאבייס וכו'.
נמקובל מאוד להשתמש בשילוב הנפוץ LAMP (Linux, Apache, MySql,Php).
סיכום: מעולה כדי להרים שרת במהירות, היות וזו תצורה פשוטה יחסית.
יתרונות : פשטות.
חסרונות : אי אפשר להתרחב בלי לעבור לתצורה אחרת,
אי אפשר לבודד מרכיבים של האפליקציה זה מזה.
האפליקציה והדאטאבייס משתמשים באותם משאבים (זיכרון, מעבד וכו') מה שאומר ביצועים נמוכים.

2. הפרדת הדאטאבייס משרת ה-Web

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

 Load Balancer (Reverse Proxy) .3

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

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

4. פרוקסי הפוך עם Cache

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

5. התקנת דאטאביס עם רפליקציה (Master Slave).

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

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

דוגמא לשילוב בין התצורות
אפשרי לעשות שילוב של Load Balance עם Cahce ועם רפליקציה של הדאטאבייס.
אפשרי גם לעשות Load Balance לשרתים של Cache, בנוסף לשרתי האפליקציה., ובנוסף לרפליקציה. המטרה של השילובים היא כמובן ביצועים.
בהצלחה!
מקור https://www.digitalocean.com/community/tutorials/5-common-server-setups-for-your-web-application

כתיבת תגובה

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