עלתה שאלה היום בקבוצת הפייסבוק של מנהלי מוצר ישראל לגבי המקום של מנהל המוצר בהחלטה לגבי איזה מסד נתונים ישתמשו בפיתוח, ספציפית לגבי שימוש ב-graphDB. וזו שאלה מעניינת.
אם אתם מנהלי מוצר מנוסים או אנשי פיתוח מתחילים אני מניח שעכשיו אתם אומרים לעצמכם “לא, זו לא שאלה מעניינת, התשובות לשאלות על איך מיישמים את האיפיון הם באחריות הפיתוח ולא באחריות מנהל המוצר. סיימנו. אפשר ללכת לשתות קפה קר?”. ולכך אני, מנהל המוצר הצנוע, אענה שהתשובה הזו היא נכונה וכן, תמיד אפשר ללכת לשתות קפה קר. מאוד חם בחוץ. אבל אני לא רק מנהל מוצר, אני מגיע עם יותר מעשר שנות ניסיון של התמחות במסדי נתונים. ואני יכול להגיד לכם שבחירה במסד נתונים נכון היא החלטה מהותית מבחינה טכנולוגית. ראש צוות הפיתוח ירצה לשקול מגוון נושאים לפני שהוא יקבל החלטה בנושא. נושאים כמו מה רמת הביצועים הנדרשת? איזה ידע קיים יש לי בארגון בעבודה מול סוגים שונים של מסדי נתונים? מה העלות הכספית של כל מסד נתונים? כמה תעלה לי התחזוקה הנדרשת בשעות אדם וכוח מחשוב? האם אני נדרש לתת פתרון scalability? מה עם high availability?
זו לא החלטה קלה, יש היום המון סוגים של מסדי נתונים בשוק. החל מה-MongoDB הנפוץ, דרך מסדי הנתונים הרלציוניים (Oracle, SQL server,DB2, MySQL) והיותר יעודיים ומעניינים כמו למשל Druid, CockroachDB או Neo4J ונראה שקמים חדשים כל שבוע. כל אחד מהם מגיע עם סט גדול של יתרונות וחסרונות, אוביקטיביים וסוביקטיביים.
יתרונות אוביקטיבים כוללים דבר כמו סדרי הגודל של המידע לאיחסון, היכולת לספק high availability, כמות התמיכה שאני אקבל למוצר או רמת הביצועים והיכולת לכיוון אותם. יתרונות סוביקטיביים כוללים דברים דברים שנכונים לגבי החברה שלנו בלבד. האם יש לנו ידע בהקמה של מסדי נתונים כאלו? האם הם מוצעים כ-Managed service על יד ספק ה-cloud שלנו? הם יש לנו ניסיון בעבודה מול מסדי הנתונים הללו?
אבל יש פרמטר אחד נוסף חשוב מאוד בבחירת מסד נתונים והוא אופי השימוש במידע שבמסד הנתונים. שאלות כגון כמה מידע אנחנו צריכים לשלוף ממסד הנתונים בכל פניה? מה יחס העדכונים לשליפות? מה סוג השאילתות שנריץ מול מסד הנתונים? מה רמת העדכניות הנדרשת של הנתונים? הפרמטרים הללו הם פריטי מידע שלעיתים מנהל המוצר ידע יותר טוב מאנשי הפיתוח. ולכן חשוב מאוד לנהל את השיחה הזו.
אין ספק שההחלטה הזו היא של מנהל הפיתוח, אבל אם הוא לא ידע מה הדרישות שאנחנו מנהלי המוצר צריכים שמסד הנתונים יעמדו בהם אז הוא לא יוכל לקבל את ההחלטה הנכונה.