123: סדרת R&D 05 – למה בחרנו להוסיף שרתים מחוץ לארצות הברית

Startup For Startup

 

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

דוד:            היי. מה קורה?

דריה:          היי דניאל.

דניאל:         היי, מה נשמע?

דריה:          אתה מיטלמן מעכשיו, אני מודיעה מראש.

דניאל:         סגור.

דריה:          אתה בטח רגיל לזה.

דניאל:         לא, לא חדש.

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

דוד:            יאללה.

דניאל:         יאללה. [מוזיקה]

דריה:          אוקיי. אז אני כאן עם דוד וירצר. דוד, אתה Head of Infrastructure, נורא קשה להנגיד את המילה הזאת. [צוחקים]. ומיטלמן, אתה Tech Lead באינפרה, נכון?

דניאל:         נכון.

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

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

דריה:          אוקיי, אז בעצם לפני שזה קרה, שהתחילו לבוא אלינו בדרישות האלה – כל ה-data שלנו היה שמור בארה”ב, ובעצם גם לקוח שנמצא עכשיו באנגליה ומשתמש במאנדיי ה-data שלו נשמר באיזשהו server בארה”ב. נכון?

דוד:            כן.

דריה:          אוקיי, ואז בעצם לקוחות התחילו לבוא אלינו בדרישה שהם לא רוצים שה-data שלהם יהיה בארה”ב.

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

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

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

דריה:          הם בעצם מבינים שיכולים לאסוף עלינו מלא מלא מידע.

דניאל:         למעשה ה-NSA יכול להשיג כל פרט מידע שהוא רוצה על כל בן אדם בעולם – כל עוד המידע נמצא או עובר איכשהו בסביבות ארה”ב.

דריה:          [00:04:00] אוקיי. אז זה התפרסם. ואיך זה השפיע?

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

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

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

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

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

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

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

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

דוד:            לאיך שאנחנו כותבים את הקוד, איך שאנחנו בונים את התשתיות שלנו, אוטומציה של דברים. אפילו third party services שאנחנו משתמשים לצורך שליחה של אימיילים או אס.אם.אסים או כל דבר שאנחנו משתמשים ב-production, צריך לוודא שאותו service יידע [00:08:00] לרוץ גם באזור גיאוגרפי אחר. ובטח אם הוא שומר מידע PII וכאלה של לקוחות. ואם לא, אז צריך לחפש אלטרנטיבה, לעשות איזושהי מיטיגציה אחרת. דברים כאלה.

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

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

דריה:          אוקיי, אז שם שווה לשים את הדגש. ומה השלב הבא אחרי המחקר הזה?

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

דריה:          כדי שהם כבר יוכלו להתחיל לתקשר את זה הלאה ללקוחות.

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

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

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

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

דוד:            הוא לקח שנה, ואנחנו עכשיו בשלבי סגירה.

דריה:          אוקיי. אז מיטלמן, אני עכשיו שמה את ה-spotlight עליך.

דניאל:         בכיף.

דריה:          אתה בעצם הובלת את הביצוע של התהליך הזה?

דניאל:         אז באמת הפרויקט התחיל אצל דוד, מנקודה באמת של יותר high level, של להבין את הצורך, של לעבוד עם Sales ו-Partners ובאמת לגבש את זה כתוכנית אסטרטגית שאנחנו לוקחים. ואז באמת כשהגענו לשלב הביצועי אז באופן טבעי הפרויקט עבר מה-group lead ל-tech lead – שזה באמת התפקיד שלו להוביל פרויקטים כאלה.

דריה:          שרק נגיד, צוות ה-Infra הוביל את זה אצלנו בחברה.

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

דריה:          בלי עכשיו לחשוב “טוב, מתישהו מישהו יצטרך את זה באירופה, מתישהו מישהו ירצה את זה באוסטרליה.”

דניאל:         נכון. למעשה המילה region בכלל לא הייתה על השולחן, אלא האפליקציה ישבה על שרתים, היו מסדי נתונים שאחסנו את המידע של הלקוחות, ופה בעצם נגמרה כל השיחה. ועכשיו כשאנחנו [00:12:00] מסתכלים על כל הנחות היסוד או כל הנחות הבסיס שנתנו לעצמנו לקחת במהלך השנים, אז מתחילים להיכנס לכל-מיני פרטי מימוש. למשל מסתכלים על הקוד עצמו. בקוד עצמו אנחנו מצאנו hard-coded רפרנסים ל-region האמריקאי. כלומר, מי שכתב את הקוד אפילו לא העלה על דעתו את האפשרות שיום אחד האפליקציה הזאת לא תרוץ בחוף המזרחי של ארה”ב.

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

דניאל:         אז למעשה יש פה שני אתגרים מאוד מאוד משמעותיים לפרויקט הזה. האתגר הראשון הוא אתגר טכנולוגי. הוא אתגר שבו אנחנו מתחילים לבנות תשתית גלובלית. אנחנו לוקחים בעצם תשתית מקומית שהייתה עד עכשיו מאנדיי.קום והופכים אותה לתשתית גלובלית. תשתית שיודעת להתחשב באזורים גיאוגרפיים, שיודעת לנטר אנשים מיבשת אחת ליבשת שנייה, ואנחנו גם ניכנס קצת לפרטים בהמשך, אבל זה אתגר ראשון. האתגר השני הוא באמת אתגר של education. זה להגיע למפתחים, להגיע ל-R&D. שבעצם יוכלו לחיות תחת אותלו סט של הנחות בסיס עד עכשיו, ולהגיד להם “מהיום אנחנו כבר לא יכולים לעבוד בצורה הזאת, אלא אנחנו צריכים להחיל על עצמנו התחשבות בשיטות פיתוח חדשות. למשל, אני לא יכול לצפות שמידע מסוים יהיה בהכרח ב-region מסוים שאני פועל בו. מכיוון שאם יש לי שני ריג’נים, שלושה ריג’נים – הן למעשה יחידות תפעול נפרדות לחלוטין, הן לא מודעות אחת לשנייה אפילו לקיום שלהן. ואם אני מפתח שעובד על אפליקציה שרצה בתשתית הגלובלית של מאנדיי, אז למעשה האפליקציה שלי קיימת פעמיים – היא קיימת פעם אחת בארה”ב ופעם אחת באירופה. זה אומר שכל השיקולים הפיתוחיים שלי, מהשלב של ה-Design, דרך הכתיבה של הקוד וה-review וה-deployment שקורה באמצעות צוות האינפרה – כל הדברים האלה צריכים להתחשב בעובדה שאפליקציה לא יודעת איפה היא רצה בעולם.

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

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

דריה:          כן, גם אנחנו לא יכולים, למשל אנשי ה-Sales, לא יכולים לבוא ולהגיד לארגון שאומר “טוב, אני חייב שה-data שלי יישמר באירופה”, הם יגידו לו “אין בעיה, אבל לא יעבוד לך 1-2-3 בפלטפורמה.

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

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

דניאל:         יפה. אז הדבר הראשון זה באמת לשרטט את המסלול שעושה לקוח מהמחשב שלו בבית או בעבודה שלו, ועד שהוא מגיע למה שאנחנו נכנה באופן כללי “שרת של מאנדיי”. ולהבין האם מה שיש לנו היום יעבוד עולם שהוא multi-regional, או שאני לא אוכל להביא אותו ל-region הנכון בהינתן זה שאני יודע אם הוא שייך לארה”ב או לאירופה. אתגר שני הוא אפילו אם אנחנו מרחיבים את הבעיה הזאת אפילו יותר. לקוח מגיע לעשות log in למאנדיי. אנחנו לא יודעים מי הלקוח הזה ואנחנו לא יודעים באיזה חשבון הוא נמצא. האם אני מכוון אותו לשרת האמריקאי או לשרת האירופי, בהינתן זה שאני אפילו לא יודע מי זה.

דריה:          אוקיי. ועוד שאלה אחת: כל הלקוחות האירופאים שכבר היו לי בפלטפורמה – כי בטוח היו כאלה שכבר היו שם – גם אותם אני רוצה [00:16:00] להעביר עכשיו ל-region השני?

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

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

דוד:            לגמרי. [מוזיקה]

דריה:          אוקיי. אז הבנתי את כל המורכבויות. איך באמת, איך ניגשתם לזה?

דניאל:         יפה. אז אני כבר אגיד מראש שהפתרון עצמו הוא לא פשוט. אבל זו דוגמה מצוינת לבעיה שאנחנו ניגשנו אליה עם mindset שאנחנו לא נוכל לפתור את זה רק בתוך אינפרה. ובאמת הפתרון צריך להגיע משיתוף פעולה במקרה הזה בין קבוצת האינפרה לבין צוות Server Foundations אצלנו ב-R&D.

דריה:          שזה הצוות שמתעסק בעבודות תשתיתיות.

דניאל:         נכון, בצד האפליקטיבי, נכון. כל בקשה שנכנסת לתוך מאנדיי למעשה צריכה לעבור כמה בדיקות אבטחה. כי אנחנו לא מעבירים כל בקשה מאינטרנט ישירות לאיזשהו שרת או מחזירים איזשהו מידע בחזרה. אחת הבדיקות שכל בקשה עוברת זו בדיקה של באמת מי אתה. האם אתה משתמש מורשה, האם באמת עשית log in, עם יוזר וסיסמה שהם תקינים. האם אתה לא מגיע מ-IP שהוא חסום. ובשביל זה אנחנו באמת כתבנו פתרון שהוא in-house שהוא יודע לבצע את כל הבדיקות האלה. אנחנו יודעים להשית עליו את כל המורכבויות שאנחנו רוצים. ומכיוון שאנחנו פיתחנו את זה in-house אז אנחנו גם הרשינו לעצמנו לבוא ולהגיד “אוקיי, מכיוון שהדבר הזה מטופל כבר בכניסה לרשת, בואו נוסיף למנוע הזה עוד תחום אחריות, של סיווג לא רק של מי הבן אדם אלא לאיזה region הוא שייך. ואז ממש עוד לפני שהגענו לאפליקציה, ממש עוד בשכבת הרשת, אנחנו יודעים היום לסווג האם הבן אדם הזה שייך ל-region האמריקאי או ל-region האירופי. כלומר, אנחנו יכולים להסתכל על, אם אנחנו מדמים בקשות בתור כדורי טניס, אנחנו יכולים לחשוב על תותח שיורה אלפי כדורי טניס בשנייה לעבר המערכת שלנו, ובצד השני ראוטר מאוד מאוד חכם שיודע לנתב אותם ימינה או שמאלה בקצב של אלפי כדורים בשנייה. ובאמת אחד הדברים שהבנו בסופו של דבר שטוב שהלכנו לכיוון הזה, זה שלא רק שהפתרון הזה סקיילבילי מבחינת נפח, שאנחנו נוכל לתמוך גם בפי 10 ופי 20 ופי 50 יותר לקוחות ממה שיש לנו היום – אלא שזה שומר לנו את החירות להחליט איך הדבר הזה נראה ולפתח איך באמת המעברים האלה בין ריג’נים ובאמת איך אותה הגנה על פרטיות ושמירה על אזור גיאוגרפי של לקוחות, איך היא תיראה ב-production.

דריה:          זה מאפשר גמישות.

דניאל:         גמישות כמעט אינסופית.

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

דניאל:         נכון. למעשה, בתור מי שיצא לו להוביל את הפרויקט הזה טכנולוגית, אני הסתכלתי על הפרויקט הזה בתור איזושהי הזדמנות שלנו לפתוח את הספרים ולהגיד “אין פרשות קדושות”. אם עבדנו עד עכשיו בצורה מסוימת שהיא עבדה בסדר, ואולי היא תעבוד [00:20:00] בסדר גם ב-multi-region, אבל זה לא יהיה נכון שאנחנו נמשיך לעבוד ככה שנים קדימה. זאת הייתה הנקודה בדיוק להכות בברזל החם, ולהגיד “אנחנו משנים את איך שאנחנו עובדים”. כי אם אני מסתכל עכשיו שלוש שנים, חמש שנים, שמונה שנים קדימה – אני ארצה לעבוד ככה לא רק כשיהיו לי שני ריג’נים אלא כשיהיו לי ארבעה ריג’נים, אם יהיה מצב כזה יום אחד בעתיד.

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

דניאל:         נכון. ובאמת דוד הזכיר מקודם את העיקרון של infrastructure as code, שזה אחד העקרונות הכי חשובים שצריך לשמר בתהליך הזה. זה שכשאנחנו הרמנו את ה-region שלנו באירופה, אנחנו עשינו את זה מלכתחילה בצורה שהיא reproducible.

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

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

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

דוד:            מקווים ששלושה חודשים. [מוזיקה]

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

דניאל:         אז באמת בגלל שזה שינוי משמעותי, אז גם בתהליך של הפריסה אנחנו לקחנו קצת את הזמן. אז הדבר הראשון שעשינו זה באמת עבדנו עם צוות ה-Partners אצלנו ומצאנו לקוח אחד משמעותי מאוד שזה היה לו מאוד מאוד חשוב, ברמה של “זה או אירופה או שאני הולך למתחרים שלכם” – ובאנו והצענו לו את ההצעה הבאה: אנחנו נאחסן את החשבון שלכם על על השרתים האירופיים החדשים שלנו. אנחנו רוצים שתבינו שאנחנו נמצאים באיזושהי תקופת הרצה ראשונית. המערכת הולכת לעבוד לכם, והיא הולכת לעבוד טוב. אבל, אתם תשימו לב שיש פיצ’רים מסוימים שעדיין לא עובדים מאה אחוז או עדיין לא נמצאים שם, אנחנו נעדכן אתכם בפריסה של ה-region, אתם תראו שפיצ’רים שלא הופיעו לכם עד עכשיו יופיעו לאט-לאט. ואנחנו גם נלווה אתכם ממש בכפפות משי. אז בעצם הייתה לנו תקופה של שישה שבועות ראשונים שבהם הם הבינו שהתפקיד שלהם זה לשקף לנו כמה שיותר ובצורה שהיא באמת מאוד מאוד שקופה, את מה עובד טוב ב-region, מה לא עובד להם, מה איטי, מה נתקע, מה חסר להם. ובאמת הייתה לנו אינטראקציה באמת כמעט יומיומית עם הלקוח הזה.

דריה:          זה שישה שבועות שבהם אתם וצוות האינפרה מקבלים מהם פידבק שוטף ועושים תיקונים ממש ב-live, ברגע שאתם מקבלים אותם?

דניאל:         בסדר גודל של ימים, בדיוק. ובאמת יכולנו לראות איך התהליך של הכנסה של חשבון אירופי חדש נראה – לא רק מהצד שלנו של המדדים והגרפים אלא ממש מהצד של לקוח גדול ומשמעותי שמאמץ לחיקו את המערכת הזאת, בהינתן א’ כל הדברים הטובים שמגיעים עם מאנדיי, אבל באמת כל המגבלת שקיימות עכשיו, ובאמת לראות את ההבנה שלו של אנחנו הולכים איתכם ביחד, אנחנו פותרים את [00:24:00] זה. כרגע המצב הוא עדיין קצת חלקי, אבל בסופו של דבר עוד כמה חודשים אתם הולכים לקבל חוויה מלאה של מאנדיי, ואנחנו מאוד רוצים שתעשו את זה איתנו ביחד. ואנחנו בעצם הגענו למצב שבו בתשעה חודשים אנחנו בנינו את מאנדיי מאפס, באזור חדש לחלוטין. למעשה לקחנו את כל העבודה מ-2012 עד 2020 ועשינו אותה מחדש בתשעה חודשים. וכל ההבנה של איך הדבר הזה מתנהג אזור גיאוגרפי אחר, עם התפלגות קצת שונה של לקוחות, עם שימושיות קצת שונה – זה היה מאוד חסר לנו. ובאמת הפידבק הזה מלקוח אמיתי שבאמת מרגיש את המערכת בידיים יומיום, אפשרה לו באמת לאפטם ולהגיע למספרים שהם הרבה יותר מתאימים.

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

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

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

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

דוד:            כן, למשל, לא יודע, אופן שליחת מיילים טרנזקציוניים. כשלקוח נרשם הוא צריך לקבל אימייל, שנרשמתי, הכול טוב, תאשר את האימייל שלך. אז אנחנו במקרה הזה משתמשים ב-SendGrid, בארה”ב. והם בעצמם רצים בארה”ב, ואימייל זו גם פיסת מידע של לקוח בסופו של דבר, מזהה ייחודי. גילינו על הדרך שאין להם אפשרות להרים שרתים שלהם באירופה. אז היינו צריכים פה לעשות מיטיגציה ולהתאים את mail gun באירופה לריצה באירופה. אז יש לנו איזשהו שוני בסרוויסים, והיו עוד דוגמאות כאלה. עוד אתגר שיש לנו כרגע, וזה מתמשך למרות שכל הפרויקט הזה התחיל לא בסיילו, לא שאנחנו התחלנו אותו ולא דיברנו עם אף אחד, מן הסתם דיברנו עם כולם, עם R&D בעיקר, כי היינו צריכים להפעיל את כמעט כל הצוותים – לא כמעט, כל הצוותים ב-R&D-

דריה:          כן, יש לזה משמעויות כמעט על כל מפתח.

דוד:            נכון. אז ניסינו לחבר את כולם עוד מההתחלה, מה זה אומר, ואיך, ושלב ראשון בכל מקרה היה של תשתיות, והיינו צריכים להבין ש-region נוסף זה עוד רובד של מורכבות. אם להוריד את זה קצת לקרקע, אז נגיד אם האפליקציה שלכם תומכת רק באנגלית, אז זה פשוט. ומה אם צריכים לתמוך בעוד עשר שפות? אז כל string שמשנים צריך לבדוק אותו שהוא יעבוד גם בשפה מסוימת וצריך לתרגם אותו. אז תחשבו שמוסיפים עוד מספר … [00:27:37] שצריך לתמוך בהם, ופה התמיכה היא לא רק אפליקטיבית, היא גם תשתיתית. כי כל אפליקציה צריכה גם database נוסף.

דריה:          אז זה ממש משהו שכל מפתח צריך שיהיה לו כזה ב-back of his  mind ולהתחשב בזה בעבודה שלו. אז איך עושים את זה באמת? איך מזכירים להם, איך דואגים שהם כן יעבדו נכון?

דוד:            אז ניסינו למצוא דרכים, ויותר בקטע של טסטים, או כלים שאנחנו [00:28:00] מכניסים, שעוזרים למפתחים ממש “לגלות” את אירופה, שהם-

דריה:          לבדוק את עצמם למשל.

דוד:            לבדוק את עצמם, נגיד הוספנו עוד רובד ב-deployment pipeline שלנו, שה-deployment ייעשה אוטומטית גם לאירופה, כן? וגם כל-מיני נוטיפיקציות שהמפתח כשהוא עושה deployment הוא יקבל שהנה, האפליקציה שלך, הגרסה החדשה נפרסה בארה”ב וגם נפרסה עכשיו באירופה. אז בן אדם צריך לחשוב, “או, באירופה? אז מה אני עושה? האם זה הצליח, לא הצליח? אולי שכחתי להריץ איזושהי אימיגרציה, או שכחתי להוסיף קונפיגורציה.” והיו לנו מקרים ש-deployment באירופה פתאום נכשל כי-

דריה:          שכחו לבדוק-

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

דריה:          תגידו, מאנדיי קיימת מ-2012. לקחתם data וקוד שנבנה במשך שמונה שנים, הרמתם אותם במקום אחר. לא הייתה דרך לעשות את זה קצת אחרת? מההתחלה להגיד “אוקיי, אולי אנחנו בעתיד נרצה להתפתח לעוד regions?

דוד:            זה פשוט רובד של מורכבות, multi-region, שלא כדאי להיכנס אליו בשלב הראשון, כשאנחנו עוד לא שם ואין לנו לקוחות. או שיש לנו בקושי קצת לקוחות. זה פשוט הדברים שגורמים להיות out of focus בשלבים הראשונים. ועדיף לדחות את זה לאח”כ, כשהחברה תהיה יותר בוגרת, כבר עם track record שברור שיש Product Market Fit, יש לקוחות שאוהבים את המוצר, וכבר הלקוחות הם אלה שדרשו שיהיה להם פתרון מולטי-ריג’ני כזה, אבל זה יכול להיות מאוד תלוי בביזנס הספציפי.

דניאל:         כמו שאמרנו, באמת זה נושא שהלך ותפס תאוצה רק בעשור האחרון. אם היום היינו מנהלים את השיחה הזאת בתור סטארט-אפ חדש, אני הייתי אומר שזה לא הדבר הראשון שצריך להתחיל איתו, אבל זה כן משהו שצריך להיות ב-mindset של כל סטארט-אפ, כל חברה, שה-main business שלה זה להחזיק data על אנשים או data של אנשים. ואני אגיד אפילו שחברה שמתחילה לבחון את השוק שלה מסביבה ויודעת כבר להגיד היום באיזה מדינות היא צפויה לפעול בהן בצורה משמעותית – כדאי לפחות להסתכל ולזכור את חקיקת הפרטיות במדינות האלה. אם זה אוסטרליה ואם זה ברזיל, ובאופן כללי כל האיחוד האירופי שהיום מוביל מגמה מאוד משמעותית בכיוון הזה, ואפילו קליפורניה, שיש לה חקיקה ספציפית לה שנקראת CCPA. אני לא חושב שסטארט-אפים בשלב הזה צריכים ממש להתחיל להכין את התשתית לתמוך ב-multi-region. אבל כן צריך להתחשב בדבר הזה בכל שורת קוד שכותבים, בכל אינטגרציה שעושים, ולזכור לפחות in  back of their minds שיכול להיות שיבוא יום ובו באמת הם יצטרכו להתחיל לעשות את ההפרדה הזאת.

דוד:            גם להבין את הדרישה הספציפית מ-multi-region. האם מעניין אתכם שה-data של לקוחות יישמר ב-region מסוים? או שהתקשורת תעבור דרך region? כי נגיד בשלב של מחקר בכלל, ואם אנחנו רוצים לגשת לזה, ואיך אנחנו רוצים, אנחנו גם התייעצנו עם חברות אחרות איך [00:32:00] הן עשו את זה. וכל אחד, תלוי בביזנס שלו, יש כאלה שבחרו לשמור רק את ה-data ב-region מסוים אבל להשאיר את כל השרתים וכל התקשורת עדיין מתבצעת מארה”ב ל-region אירופאי נגיד, כן? יש כל-מיני ארכיטקטורות, צריך להבין מה נכון לכם כחברה.

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

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

דניאל:         יש ארגונים שבאמת הולכים למהלכים כאלה, מהלך של לפתוח region נוסף, ויש באמת הרבה מאוד חברות שעושות עכשיו את הפרויקט הענק הזה שנקרא “מעבר לענן”, של להעביר את כל השרתים שיש להן on premise, ממש במשרדים של החברה, להעביר אותם ל-cloud. ואתה רואה באמת את ההבדל בין חברות שבחרו להתמקד בזה כפרויקט ליבה שלהן, והן שמו על זה כוח אדם וזמן וכסף ובאמת הריצו את הפרויקט הזה בפרק זמן מוגדר, לבין חברות שהגדירו לעצמן את זה בתור איזשהו יעד עליון כזה, ואז לוקח להן 3-4-5 שנים לעשות את זה, ובזמן הזה קורות כל-כך הרבה תמורות, שכשאתה כבר בשנה הרביעית של הפרויקט, דברים שעשית בשנה הראשונה כבר לא רלוונטיים ואז אתה צריך לחזור אליהם עוד פעם.

דריה:          וזה משהו שממשיך וממשיך, ובעצם אף פעם לא מפסיקים לעבוד עליו.

דניאל:         נכון.

דריה:          אחלה. אז המון המון תודה. תודה מיטלמן.

דניאל:         תודה לך.

דריה:          תודה דוד.

דוד:            תודה רבה.

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

דוד:            ביי ביי. [מוזיקה]

 

 

 

 

 

[wp_applaud]