אז איך הכל התחיל?
ובכן, שנתיים וחצי בהן הייתי שכיר והועסקתי כמפתח צד שרת בג׳אווה, עובדה זו בשילוב עם החיבה שלי לטכנולוגיות צד לקוח, היו לקרקע מוצקה עבור הדחף שנוצר בי לפתח מוצר מאפס על כל מרכיביו (END-TO-END).
חייב לציין שלמרות שנטלתי חלק בשלוש השנים האחרונות מקורפריט, אני יזם בנפשי, הראש שלי כל הזמן עסוק באיזה פתרון אנחנו כל כך צריכים ועדיין לא יודעים על זה.
אבל פה זה לא המקרה, פה רציתי להוכיח לעצמי שלושה דברים פשוטים שזהיתי כקריטיים להמשך הדרך המקצועית שלי:
א. יודע לאמוד את היכולות שלי.
ב. יכול הלכה למעשה לפתח מוצר מ-0.
ג. יכול להתמודד עם כל קושי שיצוץ בדרך.
ביחידה שהייתי בצבא, יש שבוע נווט אחד במסלול שהוא שבוע לימודי בגבעות גורל ובסוף השבוע יש את התרגיל המסכם של השבוע שהוא בעצם ניווט ״גולם״, לאחר מכן לאורך המסלול יש עוד 25 שבועות ניווט שהם ניווטי ״בדד״, אני יכול לומר שאני משחזר את התהליך שעברתי בפיתוח המוצר אני מרגיש בדיוק את אותה הרגשה שהרגשתי אחרי השבועות הללו. המון קשיים, למידה עצמית ועל עצמך, עולמות חדשים, התעסקות בדברים שלא חשבת עליהם, כשם שאתה מתכנן לעצמך את הציר לפני הניווט כך אתה רואה בעיני רוחך את צעדי הפיתוח לפני הפיתוח והקושי האמיתי בפיתוח מתעורר כאשר עושים את הצעד ה-4933 ואז מגלים שלצעד ה-4934 יש עוד 2000 צעדים שלא לקחנו בחשבון או תכנתת אותם בדיוק כשם שאתה מגלה ש״התברברת״ ואתה כבר שלוש שעות הולך בכיוון הלא נכון.
בחירת הרעיון הייתה די רנדומלית, חיפשתי שוק שהוא יחסית בתול ועשוי לקבל תנופה בשנים האחרונות ומצאתי - ערים חכמות - קלאסי.
ברגע שנסגרתי על השוק, מהר מאוד נרקם הרעיון ופשוט התחלתי לתכנן את הארכיטקטורה ולפתח.
זאת הנקודה שבה אנו פורשים מסיפורי אלף לילה ולילה ועוברים לדבר שוב על הארכיטקטורה.
אז כפי שכבר ציינתי בפוסט הקודם אנחנו מדברים על מוצר שיושב בענן, הצרכנים שהם הערים והרשויות המקומיות לא מתקינות דבר בסביבה שלהן אלא כל שהן צריכות זה דפדפן ואינטרנט.
מלפני שניגשתי ממש לכתוב קוד (Day One) היה עיקרון שסביבו ביססתי את כל ה-Design של הארכיטקטורה והוא:
מערכת רובסטית (robust) שתקבל דיווחים ללא הבחנה, הצגת האירועים (מושג שאסביר בעתיד) תסונן על בסיס הגבולות המונציפליים של הצרכן (Tenant).
קיום של מערכת כזאת חייב תמיכה בשלושה עקרונות בסיסיים בפיתוח מוצר בענן והם:
1. Scalability - יכולת התמודדות עם כמות משתמשים משתנה בצורה פשוטה וזולה.
2. Continues Integration - CI, Continues Delivery - CD - תהליכים אוטומטיים המתבצעים מהרגע שהמפתח מסיים לכתוב פיצ'ר ועד שמגיעים למשתמש הקצה.
(אפשר להרחיב רבות על כל מושג מבין אלה)
אודות כל עקרונות אלה בחירת הארכיטקטורה הייתה טרוויאלית למדי וכפי שכבר ציינתי אנחנו מדברים על Micro Services.
נכון לגירסא הראשונה קיימים 11 מיקרו סרביסס, אציין במשפט מה תפקידו של כל אחד, בעתיד כל מיקרו סרביס יזכה לפוסט שלם שידבר רק עליו:
מה שאנחנו רואים כאן זאת התצוגה שמספק ה-Web Micro Service הסבר קצר על מה שאנחנו לא רואים כאן:
המסך שאנחנו רואים הוא המסך לאחר תהליך ההזדהות בפאנל הניהול, בתהליך כמובן משתתף מיקרו סרביס נוסף שאנחנו לא רואים כאן והוא ה-Tenant Micro Service.
עוד מיקרו סרביס שאנחנו לא רואים כאן הוא ה-Report Micro Service, אליו ניתן להגיע דרך התפריט, בעתיד נראה אותו ונעסוק בו ובתפקידו
בפוסט הבא אתאר את ה-FLOW הסטנדרטי של המערכת, מרגע קבלת הדיווח מהתושב ועד להצגתו בפאנל הניהול יחד עם כל המידע הנוסף שנאסף עבורו. אדבר על המושג "אירוע אמת" ואגע באפליקציית המשתמש.
ובכן, שנתיים וחצי בהן הייתי שכיר והועסקתי כמפתח צד שרת בג׳אווה, עובדה זו בשילוב עם החיבה שלי לטכנולוגיות צד לקוח, היו לקרקע מוצקה עבור הדחף שנוצר בי לפתח מוצר מאפס על כל מרכיביו (END-TO-END).
חייב לציין שלמרות שנטלתי חלק בשלוש השנים האחרונות מקורפריט, אני יזם בנפשי, הראש שלי כל הזמן עסוק באיזה פתרון אנחנו כל כך צריכים ועדיין לא יודעים על זה.
אבל פה זה לא המקרה, פה רציתי להוכיח לעצמי שלושה דברים פשוטים שזהיתי כקריטיים להמשך הדרך המקצועית שלי:
א. יודע לאמוד את היכולות שלי.
ב. יכול הלכה למעשה לפתח מוצר מ-0.
ג. יכול להתמודד עם כל קושי שיצוץ בדרך.
ביחידה שהייתי בצבא, יש שבוע נווט אחד במסלול שהוא שבוע לימודי בגבעות גורל ובסוף השבוע יש את התרגיל המסכם של השבוע שהוא בעצם ניווט ״גולם״, לאחר מכן לאורך המסלול יש עוד 25 שבועות ניווט שהם ניווטי ״בדד״, אני יכול לומר שאני משחזר את התהליך שעברתי בפיתוח המוצר אני מרגיש בדיוק את אותה הרגשה שהרגשתי אחרי השבועות הללו. המון קשיים, למידה עצמית ועל עצמך, עולמות חדשים, התעסקות בדברים שלא חשבת עליהם, כשם שאתה מתכנן לעצמך את הציר לפני הניווט כך אתה רואה בעיני רוחך את צעדי הפיתוח לפני הפיתוח והקושי האמיתי בפיתוח מתעורר כאשר עושים את הצעד ה-4933 ואז מגלים שלצעד ה-4934 יש עוד 2000 צעדים שלא לקחנו בחשבון או תכנתת אותם בדיוק כשם שאתה מגלה ש״התברברת״ ואתה כבר שלוש שעות הולך בכיוון הלא נכון.
בחירת הרעיון הייתה די רנדומלית, חיפשתי שוק שהוא יחסית בתול ועשוי לקבל תנופה בשנים האחרונות ומצאתי - ערים חכמות - קלאסי.
ברגע שנסגרתי על השוק, מהר מאוד נרקם הרעיון ופשוט התחלתי לתכנן את הארכיטקטורה ולפתח.
זאת הנקודה שבה אנו פורשים מסיפורי אלף לילה ולילה ועוברים לדבר שוב על הארכיטקטורה.
אז כפי שכבר ציינתי בפוסט הקודם אנחנו מדברים על מוצר שיושב בענן, הצרכנים שהם הערים והרשויות המקומיות לא מתקינות דבר בסביבה שלהן אלא כל שהן צריכות זה דפדפן ואינטרנט.
מלפני שניגשתי ממש לכתוב קוד (Day One) היה עיקרון שסביבו ביססתי את כל ה-Design של הארכיטקטורה והוא:
מערכת רובסטית (robust) שתקבל דיווחים ללא הבחנה, הצגת האירועים (מושג שאסביר בעתיד) תסונן על בסיס הגבולות המונציפליים של הצרכן (Tenant).
קיום של מערכת כזאת חייב תמיכה בשלושה עקרונות בסיסיים בפיתוח מוצר בענן והם:
1. Scalability - יכולת התמודדות עם כמות משתמשים משתנה בצורה פשוטה וזולה.
2. Continues Integration - CI, Continues Delivery - CD - תהליכים אוטומטיים המתבצעים מהרגע שהמפתח מסיים לכתוב פיצ'ר ועד שמגיעים למשתמש הקצה.
(אפשר להרחיב רבות על כל מושג מבין אלה)
אודות כל עקרונות אלה בחירת הארכיטקטורה הייתה טרוויאלית למדי וכפי שכבר ציינתי אנחנו מדברים על Micro Services.
נכון לגירסא הראשונה קיימים 11 מיקרו סרביסס, אציין במשפט מה תפקידו של כל אחד, בעתיד כל מיקרו סרביס יזכה לפוסט שלם שידבר רק עליו:
- Web Micro Service - אחראי על הצגת פאנל הניהול והצגת המידע המתקבל מהמיקרו סרביסס האחרים.
- Tenant Micro Service - אחראי על ניהול המשתמשים, יצירה וזיהוי (ערים ורשויות מקומיות), משתמשי האפליקציה הם אנונימיים לחלוטין.
- Listener Micro Service - אחראי על קבלת הדיווחים מהתושבים, מכיל את האלגוריתם לזיהוי אירועי אמת.
- Event Micro Service - אחראי על שליפת אירועי האמת שנוצרו וניהולם (אירוע פתוח, בטיפול, טופל).
- Photo Micro Service - אחראי על קבלת התמונות המתקבלות מהתושבים לאחר דיווח ושליפתם בעת הצורך.
- Comment Micro Service - אחראי על קבלת התיאור המילולי המתקבל מהתושבים ושליפתו בעת הצורך.
- Archive Micro Service - אחראי על ארכיון האירועים, מנהל אירועים ישנים וכאלה שטופלו או נסגרו (יש מערך תיעוד שלם של האירועים)
- Notification Micro Service - אחראי על שליחת ההודעות (Push Notifications) לתושבים המדווחים אודות התקדמות הטיפול באירוע שדיווחו עליו.
- Score Micro Service - אחראי על מנגון הניקוד, כל תושב המדווח על אירוע שמתברר שהוא אירוע אמת מקבל ניקוד.
- Geo Micro Service - אחראי על הפקת כתובת מהקורדינטות המתקבלות מהתושבים ע״י פניה לשרתים של גוגל.
- Report Micro Service - אחראי על הצגת וניהול הדוחות שהמערכת מייצרת.
מה שאנחנו רואים כאן זאת התצוגה שמספק ה-Web Micro Service הסבר קצר על מה שאנחנו לא רואים כאן:
המסך שאנחנו רואים הוא המסך לאחר תהליך ההזדהות בפאנל הניהול, בתהליך כמובן משתתף מיקרו סרביס נוסף שאנחנו לא רואים כאן והוא ה-Tenant Micro Service.
עוד מיקרו סרביס שאנחנו לא רואים כאן הוא ה-Report Micro Service, אליו ניתן להגיע דרך התפריט, בעתיד נראה אותו ונעסוק בו ובתפקידו
בפוסט הבא אתאר את ה-FLOW הסטנדרטי של המערכת, מרגע קבלת הדיווח מהתושב ועד להצגתו בפאנל הניהול יחד עם כל המידע הנוסף שנאסף עבורו. אדבר על המושג "אירוע אמת" ואגע באפליקציית המשתמש.
זהו לבינתיים,
מייק.