יום שני, 1 בפברואר 2016

פוסט 1 - מבוא

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

אז מה בתכנון - בלוג טכני המתאר את שלבי הפיתוח של מוצר, החל משלב הרעיון דרך בחירת הארכיטקטורה ומימושה ועד למוצר של ממש שיושב בענן ומתקשר עם האפליקציות יעודיות (native) לאייפון ולאנדרואיד (End-To-End)

כל התהליך המתואר מעלה נפרס על תקופה של חצי שנה +/-, שבממוצע לשבוע הוקדשו 5-6 שעות לעניין.

רוב הפוסטים יעסקו בארכטיקטורה בת ימינו ושזירת מושגים טכניים (buzzwords) עכשויים הקשורים לענן ול-JAVA.


הפוסט הראשון יחולק בצורה הבאה:

מנות פתיחה:
  • קצת על עצמי.
  • על המוצר.
  • קישורים רלוונטים.
  • כובעים.

מנה עיקרית:
  • ארכיטקטורה וטכנולוגיות.
קינוח:
  • מה מחכה לנו בפוסטים הבאים.


מנות פתיחה

לפני שמתחילים מספר עובדות על עצמי:
  • נשוי פלוס נסיכה קטנה.
  • נכנסתי דיי מאוחר לעולם הפיתוח, לא הגעתי מיחידת מחשבים בצבא, דווקא הייתי לוחם ביחידה מיוחדת בחיל האוויר.
  • עובד כשכיר - Software Engineer at EMC² - JAVA\J2EE developer
  • כל הנעשה פה התבצע בזמני הפנוי, זמן שהייתי נוהג לבזבז על סרטים, טלוויזיה ומשחקי מחשב.
  • במידה ויציצו שאלות, דברים לא ברורים, אתם יותר ממוזמנים לשלוח מייל ל- mike@cityeye.co.il.
אז מה יש לנו:

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

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

קישורים:

כובעים שחבשתי בשלבים השונים

  • הרעיון -> יזם (Founder) 
  • אריכטקטורה -> ארכיטקט (CTO)
  • מפתח Backend
  • DBA
  • מפתח Frontend
  • Web Designer -> עיצוב עמודים, כפתורים, עיצוב אפליקציות המובייל, לוגו, דף נחיתה
  • מפתח iOS
  • מפתח Android
  • Dev-Ops -> העלאת והרצת המערכת על שירותי ענן שונים, הקמת תשתית לדפי נחיתה (Google Compute, AWS)
  • QA - בדיקות  Performance ,Sanity ואוטומטציה. 
  • Security Advocate

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

נשמע מטורף ולא מציאותי שפרוייקט כזה על כל מרכיביו נבנה ע״י אדם בודד?

ובכן, מסכים.

עיקרית

טוב, הגיע הזמן לעבור לדברים המעניינים באמת,
אז מה יש לנו מאחורי הקלעים (נכון לגירסא הראשונה)

שפת פיתוח - JAVA - משתמשים ב-Spring Framework.

Micro Services Architecture - נכון לעכשיו קיימים 10 מיקרו סרביסס, לכל מיקרו סרביס אחריות על דבר אחד, רצים ב Spring Boot וחושפים מספר מטודות REST.

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

Cloud Foundry - PaaS - כל המיקרו סרביסס יושבים על CF, פתרון לנושאים שאגע בהם בהמשך כמו CI, CD, Scalability  

PostgreSQL - Relational DB- ישנו דטה בייס אחד נכון לעכשיו, אולי ישתנה בעתיד.

ObjectDB - No-SQL - ישנם מיקרוסביסס שמשתמשים בדטה בייס קטן ומהיר.

Liquibase - Database refactor - יצירת הטבלאות מתבצעת באופן דינמי.

OAuth2 - Spring Security - Security אבטחת המערכת זיהוי וניהול המשתמשים מתבצעת ע״ב תקני האבטחה העדכניים ביותר.

Logback - Logging.

Swagger - API Framework

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

קינוח

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

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

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

זהו להפעם, יש למה לחכות,
 מייק.