pexels-jonas-svidras-785418
דמי בן ארי

דמי בן-ארי ,

Co-Founder ו CTO, Panorays

איך לבחור Technology Stack לסטאראטפ?

2022-09-14

6 דקות קריאה

אחד הנושאים שיצא לי לעסוק בו כבר לא מעט פעמים בקריירה שלי ועולה לפחות פעם אחת בחייה של חברה אם לא מספר רב של פעמים, בכל שינוי ארגוני או בכל Pivot, והוא: ״איזה Technology Stack אני אבחר לחברה / מוצר שלי?״

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

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

(ספוילר, אני לא הולך לתת פה תשובות, אלא יותר נדבר על השיקולים שצריך לחשוב עליהם וגם לאיפה זה יכול לגלגל אותנו בעתיד החברה)

אז ממה מתחילים?

השאלות הרגילות כנראה עולות בראש:

  • איזה שפת תכנות? האם זה Java או Python?
  • איזה Cloud Provider נבחר? Google Cloud או AWS?
  • איזה ארכיטקטורה? האם אנחנו נשתמש ב Microservices או Monolith?

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

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

    1. האם המוצר שלנו יהיה B2B / B2C / B2B? (או עוד הרבה סגנונות).
    2. זה הולך להשפיע לנו מאוד גם על הארכיטקטורה שאנחנו נבחר, וגם על איזה פלטפורמות אנחנו הולכים לפתח עליהן.
    3. לדוגמא אם מחליטים ללכת על פתרון שהוא Consumer Based אז יכול להיות שהגישה תהיה Mobile First ברמת ה Frontend שלנו ואז נרצה לפתח את זה ב iOS או ב Android שזה מכווין אותנו מאוד לצורה מסוימת, אבל פתאום נחליט שזה אפליקציה שלא צריכה להיות מותאמת מאוד למכשירים, ולכן אין בעיה לפתח זאת ב React Native בכדי שידע לתמוך בכל הפלטפורמות ונוכל לגייס מפתחים שמפתחים בכלל מעל ה framework הזה ולא לכל פלטפורמה בנפרד.
    4. בכל אופן, נצטרך לחשוב על טכנולוגיית Backend שתדע לתמוך, ונמשיך בדוגמא שלנו הקודמת, צריך גם להתייחס לארכיטקטורה שנרצה לבנות, ואיך מתקשרים עם השרתים? באיזה פרוטוקול? ופה אנחנו צריכים לקחת בתור שיקול איזה תעבורה הולכת להיות ואיך גם התהליכים מתנהלים במערכת? כי זה מאוד ישפיע אם אנחנו נבחר טכנולוגיה שיודעת לתמוך ב 100 משתמשים במקביל בתוכנה שלנו או 100 מיליון. (כמובן שאנחנו מדברים על החזון כולנו יודעים שבהתחלה הולכים להשתמש כנראה: אמא שלי, החברים הקרובים שלנו, ואולי גם כמה אנשים שחילקנו להם ארטיקים בים כדי שיתקינו את האפליקציה שלנו).
    5. לאחר מכן, נוכל להחליט האם זה יהיה Java או Python וגם איזה Framework אנחנו נשתמש.
    6. אבל תזכרו, בסוף זה אמור לשרת את ה Business ולא סתם ״להיות היפסטר תוכנה מגניב שכותב ב Go כי אני יכול לרשום את זה אחרי זה בקו״ח״.

האם המוצר יהיה SaaS או On-Prem

    1. השיקול הזה הולך לבסס הרבה מהארכיטקטורה שלנו בפיתוח המוצר, וגם על הטכנולוגיות שאנחנו נחבר בכדי לממש. זה מאוד תלוי למי אנחנו הולכים למכור את המוצר, כי נגיד אם אנחנו נבוא למכור את המוצר לממשלת ארה״ב, יש סיכוי גדול שאנחנו נהיה חייבים לתת פתרון שהוא On-Prem, או אולי אפילו Hybrid שמשלב גם Cloud (רגע, הוא גם צריך להיות סופר דופר מוגן וסודי נכון?)
    2. אם כבר הלכנו ל Cloud, אז גם פה יש שיקול מאוד גדול, של איזה Cloud לבחור? איפה המידע הולך להיות, באיזה Data Center? וגם אולי אנחנו רוצים Multi-Cloud כי אנחנו בכלל מוכרים מוצר למפתחים ורוצים לתמוך בכמה שיותר אפשרויות.
    3. הדוגמא הטובה לזה, כשיצא ה GDPR - רגולציה של פרטיות עולמית, אז כל מי שבחר לממש את הפתרון שלו רק בארה״ב נתקל בהרבה בעיות של שיכנוע לקוחות ב״למה זה בסדר שהמידע שלכם לא נמצא באירופה״, וכל זה בהשפעה של כמה קליקים של לשים את המידע באירופה / ארה״ב או אוסטרליה, כי זה כל כך קל. אבל בשורה התחתונה, יכול מאוד להשפיע לפי המדינות שאנחנו מוכרים אליהן. רוב הפעמים גם בעתיד אנחנו נגיע למימוש המוצר גם בכמה מקומות בגלובוס.

איזה כלים אנחנו הולכים לבחור לסביבת הפיתוח

    1. חלק שאי אפשר להתעלם ממנו הוא העניין של איזה סביבת פיתוח אנחנו בוחרים ואיזה כלים אנחנו נבחר כדי לנהל גם את כל תהליך הפיתוח.
    2. בטח שמעתם את כל הקללות של: JIRA, GitHub, VS Code, IntelliJ, Pycharm ועוד טובים ורבים, וזה כבר נכנס לכל מיני פינות של ״חסידויות״ של חנונים. שורה תחתונה, זאת התשובה המעצבנת ביותר: ״זה תלוי״. תלוי באיזה שיקולים עשינו בנקודות הקודמות, שיגזרו את השפות תכנות שאנחנו נבחר, וגם כתלות בגוף הפיתוח באיזה כלי אנחנו נבחר לניהול כל התהליך, יש היום אינסוף סטארטאפים / חברות ומוצרים שעוזרים לנהל את התהליך כולו, ואנחנו צריכים לבחור מה מתאים בכל שלב של החברה / מוצר / פיתוח.
    3. לדוגמא, ביום הראשון של החברה כנראה שאתם תפתחו mono-repo ב Git ואז כל המפתחים עושים deployment ביחד ל Production - וכל זאת כדי לזוז מהר, ואחרי שיש לכם פיתוח של 10 אנשים, אתם כבר תתחילים לעבוד ביחד עם ה DevOps שלכם על לבנות Continuous Integration Pipeline שבקליק יוכל לאחד ולעשות אוטומציה של כל התהליך (אני יודע שזרקתי הרבה קללות, אבל ״זה קשה, תסמכו עליי״)

איזה כלים אנחנו נבחר ל Analytics

    1. אתם מכירים את ה Buzzword הזה שנקרא ״Data Driven״, אז לטובת זה כמובן שאנחנו צריך דאטה, וזה אומר שאנחנו צריכים להביא את המידע לדוגמא של השימוש במוצר שלנו למקום מרכזי, לדעת לנתח אותו, להעביר אותו לגורמי ה Product בארגון, וגם כמובן להסיק ממנו מסקנות.
    2. מוצרים כמו Mixpanel או לדוגמא Heap ועוד רבים וטובים, שבסוף נותנים לנו הרבה מאוד מטריקות שאפשר לשדר מהמוצר ולהעביר לניתוח פנימי כדי לדעת איך להחליט החלטות מוצריות הרבה יותר נכונות וגם ליישם את ההחלטות בהתבסס על מידע אמיתי ולא ״תחושת בטן״ של המפתח שלנו.
    3. זה עולם ומלאות, ובהתאם לכמות ה Data שאחנו נאסוף, יכול להיות שתיוולד מחלקה שלנו בפיתוח שלנו (ספוליר - אם החברה תתקדם זה יקרה, תהיו בטוחים בזה) שמתעסק רק בזה.

המוצר שלנו ״אמור להיות מאובטח, לא?״ - Cyber Cyber Cyber

    1. אז כמובן, תמיד נכנס השיקול של איזה כלים אנחנו צריכים לממש בכל הסביבה שלנו, כדי שהפיתוח יהיה מאובטח, המוצר יהיה מאובטח, וכל זאת ועוד כדי שלא יפרצו אלינו, שמידע הלקוחות שלנו יהיה מוגן, וגם שנוכל לתפקד במהלך מתקפת הסייבר הבאה (שהיא תהיה, תאמינו לי) כדי שהלקוחות שלנו יוכלו תמיד להמשיך לעבוד.
    2. אבל יש פה עוד שיקול, וזה אולי נשמע כמו משהו מאוד משעמם: Compliance - ובזה אני אחבר את זה קצת יותר ל Business, כי היום כדי למכור את המוצר שלנו, במיוחד בתעשייה ה B2B ובסגנון שלה, אנחנו חייבים לעמוד בסטנדרטים מאוד גבוהים של Cyber Security ולכן, המימוש של הצד הטכנולוגי בתחום הזה הוא חיוני כדי לעשות את הצעד הראשון במכירות של המוצר.
    3. זה עולם שלם, שאנחנו לא ניכנס אליו מאוד לעומק (מקום לפוסט נוסף )

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

    1. כאן אנחנו ניגע קלות באלמנט מאוד חשוב של זמינות של המערכת שלנו ושל המוצר שלנו, צריך ברמה ה Business לדעת מה אנחנו מספקים ללקוחות ואיזה רמת זמינות של המוצר אנחנו צריכים להיות? נניח בתחום של בנקאות, כנראה שאנחנו לא רוצים שיהיה מצב ש״אופס״ ואיבדנו טרנזאקציה כלכלית של אחד הלקוחות שלנו שיכול להיות שהיא שווה מיליוני דולרים.
    2. כדי לוודא את הזמינות של המערכות שלנו, אנחנו צרכים לממש הרבה מאוד פתרונות ל Monitoring ו Logging וגם תגובה לתקלות, והכל זה עוד ועוד מערכות שאנחנו צריכים לממש.
    3. זה לא עולם פשוט בכלל ויש המון מערכות שאנחנו נצטרך להכניס לתהליך, והכל חייב לצאת מהשאלות הראשונות של איזה סגנון מוצר אנחנו מוכרים.

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

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

---------------- 

דמי בן-ארי, הוא ה- Co-Founder ו CTO של חברת Panorays, חברת סייבר שמתעסקת בניהול הסיכון מגורמי צד שלישי. הקים שתי קהילות מפתחים, ״Big Things״ וגם את Google Developer Groups Cloud (שמתעסקות ב Big Data, Data Science, DevOps, Cloud ושאר יקרות), ואחד ממקימי עמותת בוגרי אופק שמקדמת תחומים של יזמות וטכנולוגיה.

שתפו את הבלוג:

Share on whatsapp
Share on facebook
Share on linkedin
Share on email

עוד תוכן בנושא:

הניוזלטר שלנו

הירשמו וקבלו עדכונים על פרקים חדשים, כתבות, אירועים ועוד הפתעות!

רוצים לקחת חלק בשיתוף ידע?

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