האם איחסון בענן של מערכת שמורכבת משפות : Node.js MySql React אמורה לעלות מינימום 40-50 דולר לחודש?
-
שלום לכולם,
אני פיתחתי מערכת מבוססת Node.js, MySQL ו-React, והדרישות שלה כוללות את הנקודות הבאות:
1.המערכת מבוססת על טכנולוגיית זמן אמת (WebSocket), מה שמחייב זמן תגובה מהיר.
2. כמות המשתמשים במערכת היא מינימלית, מקסימום 20 משתמשים.
3. השימוש במערכת מתבצע בכל יום, למשך 24 שעות, עם שעות שימוש מוגברות של כ-7 שעות ביום.
4. בכל יום מתווספות למערכת כ-100-200 רשומות למסד הנתונים, אך אין לי דרך לכמת בצורה מדויקת את כמות הזיכרון הנדרשת.העליתי את המערכת לשירותי Render, שמשלבים אחסון בענן עבור השרת לקוח והמסד נתונים MySQL.
השירות של מסד הנתונים עולה כ-27$ לחודש, והשרת והלקוח כרגע שירותים חינמיים.
אני שוקלת לשדרג את השרת והלקוח לשירות בתשלום, מאחר ואני נתקלת בבעיות של איטיות בתגובה ובזמן אמת.השאלה שלי היא: האם זה הגיוני למצוא שירותי אחסון בענן במחירים זולים יותר?
אני פיתחתי את המערכת מבלי לדעת מראש על העלויות הכרוכות באחסון בענן, זו פעם ראשונה שלי שאני מתעסקת עם זה.
ואני מתחילה לתהות מדוע ללקוח כדאי לשלם סכומים גבוהים מראש עבור המערכת, יחד עם תשלום עבור תחזוקת הענן.האם זו ציפייה סבירה לשלם סכומים כאלה עבור מערכת שאינה גדולה במיוחד ולא כוללת הרבה משתמשים?
אשמח לכל מידע, טיפים או המלצות בנושא.
תודה רבה מראש!
-
@חגי
לגבי האיטיות- אני משתמשת בטכנולוגיה של websocket - זמן אמת.
יכול להיות שזה אחד הגורמים לאיטיות אבל אין לי דרך לדעת בוודאות.
(הקריאות לשרת מהלקוח הן לא קריאות ע"י axios אלא ע''י socket)
הבעיות של חוסר תגובה או איטיות לא מתרחשות כל הזמן,
לפעמים המערכת מגיבה בהתאם לציפיות ולפעמים אין תגובה, או לאחר זמן רב מידיי.
(מה שלא קרה ב-localhost)זה בגדול.
(יכול להיות שזה פשוט בעיה של קוד שצריך לבצע התאמה לשרת בענן?
אני מנסה להבין איפה הבעיה בדיוק, אם המערכת כן עבדה תקין על המחשב המקומי...) -
@TG לא, websocket זו לא סיבה לאיטיות מורגשת.
המחיר שאתם משלמים כעת למסד הנתונים הוא ענק ואין לו הצדקה, אתם צריכים לעבוד עם שרת פרטי (VPS) או שירות מנוהל זול בהרבה.
בשביל להבין למה האיטיות צריך באמת לחקור את האפליקציה ולמצוא את הסיבה, ייתכן חוסר יעילות בקריאות לשרת שגורמות לכך שרק במקומי זה יהיה סביר. -
תובנה בסיסית בנושא:
סוג מספר 1 של שירותים בתחום הוא "רכישת מחשב בענן".
זה אומר למשל VPS, שזה מחשב מרוחק וירטואלי (בפועל זה מחשב גדול שהמשאבים שלו משותפים בין הרבה משתמשים, והחלוקה למחשבים אחרים מושגת באמצעות וירטואליזציה תוכנתית).
או גם אפשר לרכוש כזה שאינו משותף עם אחרים.
הגישה של המשתמש אליו מתבצעת בדרך כלל באמעות SSH (לפחות ראשונה, לפני התקנת תוכנות בהתאמה אישית).חסרון של סוג זה:
- צריך לדעת מה לבחור, כמה אחסון, כמה זכרון, איזה CPU וכדומה.
- זה לא גמיש, או פחות גמיש, אם רוצים להגדיל אחד מהמרכיבים שבחרנו בסעיף 1 צריך לקנות חדש ולהעביר וכדומה.
- המשתמש אחראי על התקנת התוכנות והכל (אפשר אמנם להתחיל ממשהו שמותקן בו דברים מסוימים, תלוי בספקים השונים) לטוב ולרע, כולל זה שיש אפשרות שננעלים בחוץ וצריך לאפס הכל (זה ממש דורש זמן למידה) וכולל האפשרות שהעמסנו יותר מדי והמכונה פשוט הפסיקה להגיב, וצריך לאתחל דרך הממשק שהספק נותן.
- המשתמש אחראי על תעודת אבטחה, דומיין, DNS ואין אפילו איך להתחיל להשתמש בלעדיהם, גם לא זמנית.
יתרונות:
זול בפער עצום מסוג מספר 2 להלן. בדרך כלל עם חיבור עם שירותים כמו cloudflare או letsencrypt כדי להשיג TLS וכדומה (בחינם).
יש לסייג שזה זול רק בשימוש עם מערכת הפעלה לינוקס (זה הנפוץ ב99% מהמקרים, אמנם יש אפשרות גם להתקין בכל מיני דרכים WIN לבד, אבל כשמראש הספק מאפשר שימוש בWIN בצורה חוקית, זה מעלה את המחיר בהרבה מאד, גם בגלל שזה בדרך כלל דורש מחשב חזק יותר, וגם בגלל שזה עולה כסף בנפרד).
ישנן עוד מעלות וחסרונות אבל זה הבסיס.סוג מספר 2 של שירותים, הוא שירות מנוהל, שבו יש הרבה מאד סוגים, והרבה מאד ספקים שמספקים דברים דומים מבחינת שירות, אבל עלולים להיות שונים מבחינת טרמינולוגיה (כלומר כל אחד יקרא לשירות שלו בשם אחד וישתמש במונחים אחרים לתאר רכיבים בשירות..)
אבל כדי להסביר, יש למשל שירות שמספק את האפשרות להעלות את הקוד כמו שהוא (איך מעלים - יש יותר מדרך אחת בדרך כלל) ובכל השאר מטפל הספק.
ויש שירות שמאפשר להעלות קוד שיעשה פעולות בתגובה לאיזשהו אירוע וכדומה. כל אלו שירותים שבחלוקה כללית שייכים לסוג 2.חסרונות:
- יקר יותר בפער, למרות שגם בזה יש ספקים שנותנים בסיס בחינם מתוך ההנחה שכשתגדלו ותצרכו יותר תשלמו (או שתתרגלו לפלטפורמה וגם בפרויקטים גדולים יותר תשתמשו בזה, וזה מתחבר עם חסרון מספר 2 שהוא חסרון אדיר מימדים בעיני).
- צריך לבנות מראש או להתאים את הפרויקט מקצה לקצה כדי להשתמש בשירות, לפחות בחלק מהתצורות של השירותים האלו (למשל בcloud functions) או לבחור במסגרת פיתוח שמתאימה את עצמה לזה (כמו nuxt.js בגירסה האחרונה), וככל שהשירות פחות מצריך פיתוח מראש בהתאמה לפלטפורמה, כך מחירו יעלה בהתאם.
- הדרך להשתמש בשירות הזה, תמיד תבוא עם עוד שירותים בתשלום.. כמו אחסון של DB במקרה של functions כמו lambda.
וזה מכיון שהשירות רק מפעיל את הקוד, כלומר הרעיון בבסיס השירות הוא שהם מספקים רק הפעלה של הקוד, אבל לא אחסון של נתונים או קבצים. זה לא מחשב שאתם מקבלים, זה שירות שמפעיל את הקוד שכתבתם, ואם השירות לא באוויר - הקוד לא באוויר.
ההמשך של הרעיון הוא להשתמש בשירות אחר שמספק אחסון נתונים (למשל) ולחבר בין שני השירותים. - משאיר את המשתמש חסר ידע לחלוטין (הסימון של זה כחסרון הוא לטעמי האישי בלבד, ועל זה אפשר להוסיף שזה גם מצריך רכישת ידע - למידת השירות).
מעלות-הפוך מהחסרונות בסוג שירות מספר 1:
- אין צורך לבחור משאבים, המשאבים נבחרים על ידי הספק בהתאם לצורך.
- גמישות מירבית, הספק מתאים את צריכת המשאבים בדר"כ ויש גם אפשרות להגביל למחיר מסוים (כמובן שהצריכה מגדירה את המחיר..)
- יש בדרך כלל אפשרות להתחיל להשתמש מיידית, ולו באופן זמני.
- הרבה מהדברים מטופלים באמצעות השירות, כולל דברים חיצוניים לו (אבל בא עם מגבלות בנושא הזה גם).
--
השירותים שאני מכיר שהתמחור שלהם מצדיק העמקה ופיתוח מראש בהתאם לפלטפורמה זה רק cloudflare workers (ושאר הכלים שהם מציעים בפלטפורמה. עד לאחרונה היה שירות בשם cyclic, אבל הם ירדו\יורדים מהאוויר, דרוש תחליף..).
אמנם מאד מסובך להבין אותם והתיעוד לא מספק, אבל התמחור נותן הרבה מאד ערך בחינם. ברוב המקרים לא יהיה תשלום בכלל, לפרויקטים בגודל סביר (מלבד סל שירותים מסוימים שעולה החל מהשימוש הראשוני, כמו רכישת דומיין).הדרך המומלצת היא להכיר את הכל.. כמובן זה אומר להשקיע זמן וללמוד את הנושא.
כשמתנסים בחלק מהשירותים וצוברים ניסיון, מבינים מתי ואיך להשתמש בכל סוג, או אפילו לשלב ביניהם, והדובדבן שבקצפת - איך לתכנן מראש פרויקט בצורה המיטבית שתשלב את היתרונות מכל הסוגים.
ברעיון יש אפשרות להשתמש בסוג 1 כדי לבנות סוג 2 (שזה מה שספקי סוג 2 עושים, ואפשר להשיג את זה לבד, על ידי k8s וכלים מהסוג הזה, אין לי בפועל ידע בזה, וזה מתאים לצרכנים שהם מספיק גדולים כדי להשקיע ולבנות לעצמם את הגמישות בצריכה לבד). -
@5566brs תודה רבה על התשובה המפורטת,
ממה שהבנתי, כל עוד אין לי ידע מספק בהקמת ענן פרטי, עדיף לא להתעסק עם זה כשאני רוצה לראות תוצאות מהירות.
לכן עדיף לפנות לספקי ענן שעושים את כל העבודה, אבל מאידף לשלם הרבה כסף על כך.ולכן חוזרת לשאלה הראשונית שלי:
האם יש ספקי ענן זולים יותר מ-RENDER לאיחסון DB של MySql?או ש-27$ זה מחיר ממוצע לחודש ל:
1 CPU
Memory 2GB
Disk Usage 10 GB -
@TG
כשהשאלה הופכת לפרקטית נקודתית, כנראה יש עדיפות לבעלי ניסיון, וזה לא נכון במקרה שלי.
חיפוש גוגל עונה תשובות טובות לשאלה הזו אפילו בניסוח גרועהתוספת היחידה שעולה בדעתי שלא מגיעים אליה דרך גוגל היא זו:
https://github.com/ripienaar/free-for-dev
יש שם תוצאות גם בנושא הזה.מניסיון העבר יש קונצנזוס בקרב חברי הפורום שכדאי להשקיע קצת, ולהתחיל ללמוד "להקים ענן פרטי" או לתחזק VPS משלכם.
-
לכאורה פיסת מחשב וירטואלית הכי זולה בענן (מוכר כVPS) יספיק לך
אני ממליץ מנסיון על HETZNER
https://www.hetzner.com/cloud/
במקרה שלך הם גם הכי זולים!יש להם גם מתחרים כמו CONTABO (שבמקרה עברו בשבוע שעבר השבתה מאסיבית)
וOVH
כאמור אני הכי ממליץ על HETZNER
ואני ממליץ אצלם על אחסון מבוסס Arm64 / Ampere שנותן יותר תמורה לכסף.
את יכולה לאחסן מסד נתונים מקומי או להתממשק למסד חיצוניהעלות היא כ4 יורו לחודש
-
@5566brs כל הכבוד על התגובה המפורטת. כמה הערות:
- בתוך "שירות מנוהל" מנוהל שהזכרת כאחד היו למעשה 3 סוגים:
- SaaS (לדוגמה: heroku, fly.io): שירות הרצה מנוהלת במלואה של פרויקטים "רגילים". זה רץ על מכונת ויטורלית רגילה וקבועה (כלומר אפשר לסמוך על state), רק שאתה לא צריך להתעסק בכלל עם התחזוקה והתצורה, להתקין תלויות, לעדכן את הקוד בשרת, להגדיר DNS תעודה וכו' וכו', אתה מחבר את המאגר בגיט והוא מריץ לך הכל, ואם אתה צריך מסד נתונים הם גם יספקו לך שירות מסד נתונים מנוהל, וכמובן שהקאץ' במחיר שהוא פי כמה מאותו מפרט בשרת רגיל.
נ.ב. יש כיום תוכנות קוד פתוח המחקים את הרוקו ודומיו שניתן להתקין על שרת VPS רגיל וכך ליהנות מכל העולמות - Serverless באופן כללי (לדוגמה: קוברנטיס): שזה אומר טכנולוגיית מחשוב ענן שבה מריצים קוד "רגיל" אבל התשתית מנוהל באופן אוטומטי וסלקלביליטי לפי הצורך על ידי ספק הענן. המשמעות מבחינת המתכנת היא שצריך לבנות את הקוד בצורה שלא תסתמך על state בין בקשות, כיוון שכל בקשה יכולה להגיע בכלל למופע אחר של אותו הקוד עם state שונה.
- Cloud Functions (לדוגמה: Cloudflare Workers, amazon lambda, Cyclic ז"ל (מבוסס על אמזון למבדה)): למעשה נגזרת של שיטת serverless עם הגבלות נוספות. זוהי גישה שבה המפתח כותב פונקציות קוד קטנות וממוקדות, שמופעלות מאפס בתגובה לאירועים מסוימים (בד"כ בקשות HTTP), ומוגבלות גם במשך זמן הריצה וגם בסוגי הruntime שנתמכים כמו פייתון, node, וכן הלאה, תלוי במימוש של ספק הענן, וכמובן במגבלת הstate שהוא יורש מserverless רק בצורה חריפה יותר.
- זה לא מדויק שאין דרך להתחיל להשתמש בשרת ללא תעודת אבטחה דומיין וDNS כי אפשר לגשת ישירות לIP של השרת
- בשרת VPS של חברה נורמלית (לאפוקי contabo לדוגמה. אין שום סיבה לבעל שרת "רגיל" להשתמש בקונטאבו!) הכל גמיש ובלחיצת כפתור, הדבר היחיד שדורש שרת חדש הוא מעבר לשרת עם נפח דיסק קטן יותר. הוספת דיסק נוסף/הגדלת מפרט מכל סוג/הקטנת מפרט כל עוד זה לא לתצורה עם דיסק קטן יותר - תדרוש כמה קליקים בממשק והפעלה מחדש בלבד.
-
@dovid כתב בהאם איחסון בענן של מערכת שמורכבת משפות : Node.js MySql React אמורה לעלות מינימום 40-50 דולר לחודש?:
@TG תבדקו את cloudways, הם נראים לי ידידותיים בשירותים מנוהלים, המסלול שלהם נראה לי כולל מסד נתונים ואירוח לאפליקציית nodejs.
אני בדקתי והם ממש ידידותיים, וכן צדקת , כולל מס''ד נתונים ואירוח..
יש עוד כמה פלוסים...