הגדרת אחסון S3 / MinIO לאפליקציית ווב

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

פיתוח ותחזוקה של כל סוגי האתרים:

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הגדרת אחסון S3 / MinIO לאפליקציית ווב
בינוני
~2-3 ימים
שאלות נפוצות

הגדרת אחסון S3: היכן שאפליקציית האינטרנט נשברת

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

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

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

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

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

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

מה נותנת קונפיגורציה נכונה של אחסון

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

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

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

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

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

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

השוואת אפשרויות אחסון: ענן, MinIO, היברידי

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

אפשרות מתי מתאימה מגבלות דרישות לתשתית
אחסון בענן (תואם S3) השקת מוצר, עומס בלתי צפוי, אין צוות תפעול פנימי תשלום על תעבורה יוצאת ובקשות, תלות בספק, השהיה לאזור מינימום: רק גישה ל-API ומפתחות. יתירות — בצד הספק
MinIO עצמאי נתונים רגישים, נפח צפוי, דרישות להחזיק קבצים בקונטור הפנימי נדרשים דיסקים עם יתירות, ניטור, גיבויים ותורנות; עמידות לתקלות בונים בעצמנו אשכול מכמה צמתים, כרך נפרד לנתונים, שכפול ומדיניות lifecycle
תצורה היברידית נתונים חמים ליד האפליקציה, ארכיון וגיבויים — בענן ניתוב והרשאות גישה מורכבים יותר, נדרש סינכרון בין הקונטורים MinIO מקומי + דלי בענן, מדיניות אחידה של versioning ו-lifecycle

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

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

שלבי יישום והגדרה של אחסון S3

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

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

  1. ביקורת תשתית. ספירת מלאי של האחסון הנוכחי, נקודות הגישה ונפחי הנתונים, הערכת עומס הקריאה והכתיבה.
  2. תכנון הסכמה. מבנה הדליים והקידומות (prefixes), מדיניות גישה, כללי מחזור חיים, הפצה דרך דומיין נפרד.
  3. הגדרת האחסון. מקימים שירות תואם S3, מפעילים גרסאות (versioning), הצפנה וגיבוי, ומגדירים מפתחות לאפליקציה.
  4. העברת נתונים. מעבירים את הקבצים הקיימים עם בדיקת שלמות ושימור קישורים — נתיבים שבורים נתפסים לפני החלפת התעבורה.
  5. בדיקת גישה. בודקים תרחישי קריאה, העלאה ומחיקה, הרשאות תפקידים, התנהגות בעת אי-זמינות של צומת, ונכונות ההגשה דרך רשת הפצת התוכן.
  6. החלפה וניטור. מעבירים את התעבורה, עוקבים אחר השהיות ושגיאות, ובסטיות חוזרים לסכמה הקודמת.
  7. מסירת תיעוד. מוסרים לצוות תיאור של הסכמה, המדיניות והוראות לפעולות שגרתיות.

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

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

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

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

שירות העלאת התמונות רואה רק את הקידומת avatars/, שירות הדוחות — רק reports/ ורק לקריאה. אם רכיב אחד ייפגע, שאר הנתונים יישארו בלתי נגישים.

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

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

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

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

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

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

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

מה הלקוח מקבל לאחר הגדרת האחסון

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

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

המערך self-sufficient: מהנדס חדש בצוות מרים את הסביבה ומשחזר את התצורה לפי התיעוד, בלי לפענח הגדרות של אחרים מתוך הלוגים. תארו את המשימה — נחזור עם הערכה ותוכנית עבודה.

במה שונה S3 מ-MinIO ומה לבחור עם גידול בעומס

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

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

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

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

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

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

מקרה בוחן: כיצד קיצרנו את זמן מסירת הקבצים פי 3

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

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

מה שינו

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

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

מדדים לפני ואחרי

מדד לפני אחרי
זמן מסירה ממוצע של קובץ 4-5 ש' 1,4 ש'
שיעור בקשות עם שגיאה 3,1% 0,2%
עומס על דיסקים של שרתי האפליקציה 100% 12%
עמידות בכשלים צומת אחד אובדן צומת אינו מורגש

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

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

שאלות טכניות נפוצות בנושא הגדרת אחסון

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

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

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

מה יקרה לקבצים שכבר הועלו בעת המעבר?

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

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

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

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

כיצד לשלוט בהוצאות על אחסון?

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

תארו את המשימה שלכם — נחזור עם הערכה ותוכנית הגירה.

בואו נדון במשימת האחסון שלכם

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

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

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

מה אנחנו מבררים בשיחה הראשונה:

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

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

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

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

הכישורים שלנו:

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1393
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1368
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1139
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1152
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1231
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    641