Architecture Decision Record

Active theme: Light

← דוגמאות לרשומות החלטה

רשומת החלטה ארכיטקטונית: ערכת ספריות תרשימים להצגה חזותית של נתונים באמצעות TypeScript ו-JSON

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

הקשר ודרישות:

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

  2. סוגי תרשימים (עדיפות גבוהה):

    • תרשים טבעת (Doughnut)
    • תרשים רדאר (Radar)
    • תרשים תהליך אשכול (Clustering Process)
    • תרשים שטח עם ציר זמן (Area Chart with Time Axis)
    • תרשים נרות (Candlestick)
    • תרשים נייטינגייל (Nightingale)
    • מפת Geo SVG

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

  3. חינמית ובקוד פתוח (עדיפות גבוהה): הערכה צריכה להיות בקוד פתוח כדי להימנע מעלויות רישוי, לספק שקיפות ולהציע גמישות להתאמה אישית.

  4. קריטריונים בעדיפות נמוכה:

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

ספריות שנבדקו:

  1. Apache ECharts
  2. Chart.js
  3. ApexCharts
  4. AG Charts
  5. Highcharts
  6. Carbon Charts
  7. Layer Cake
  8. D3.js

1. Apache ECharts

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

חוזקות:

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

חולשות:

  • עקומת למידה: ECharts, אף שהיא עוצמתית, עשויה להיות בעלת עקומת למידה תלולה יותר בשל הגמישות וה-API הנרחב שלה.
  • מורכבות התיעוד: התיעוד מקיף אבל עלול להיות מכריע למפתחים שרק מתחילים לעבוד איתה.

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


2. Chart.js

סקירה:
Chart.js היא ספריית תרשימים פשוטה וקלה לשימוש לבניית סוגי תרשימים נפוצים. היא ידועה בפשטותה ובקלות השילוב שלה.

חוזקות:

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

חולשות:

  • תרשימים מתקדמים מוגבלים: Chart.js אינה תומכת באופן מקורי בסוגי תרשימים מורכבים כמו תרשימי נרות, מפות Geo SVG או תרשימי תהליך אשכול. אף שאפשר להוסיף יכולות אלה באמצעות תוספים או התאמה אישית, זה לא פשוט כמו בספריות אחרות.
  • אינטראקטיביות: אף ש-Chart.js תומכת באינטראקטיביות בסיסית (למשל תיאורי כלים ואפקטי ריחוף), היא אינה מציעה יכולות מתקדמות כמו ECharts או D3.js.

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


3. ApexCharts

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

חוזקות:

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

חולשות:

  • התאמה אישית מורכבת: אף שהיא מספקת יכולות רבות, אפשרויות ההתאמה האישית אינן גמישות כמו של ECharts או D3.js לצרכי תרשימים מורכבים או מותאמים מאוד.
  • מפות גאוגרפיות: ApexCharts אינה תומכת באופן מקורי במפות גאוגרפיות או בתרשימי תהליך אשכול, שנדרשים לפרויקט הזה.

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


4. AG Charts

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

חוזקות:

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

חולשות:

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

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


5. Highcharts

סקירה:
Highcharts היא ספריית תרשימים פופולרית הידועה במגוון הרחב של סוגי התרשימים ואפשרויות ההתאמה האישית העוצמתיות שלה.

חוזקות:

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

חולשות:

  • רישיון מסחרי: אף ש-Highcharts מציעה גרסה חינמית לשימוש לא מסחרי, הרישיון המסחרי יקר, מה שעלול להיות חיסרון משמעותי לסטארטאפים.
  • עקומת למידה: אף שאינה תלולה כמו של ECharts, עקומת הלמידה של Highcharts עדיין עלולה להיות מאתגרת למתחילים.

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


6. Carbon Charts

סקירה:
Carbon Charts היא ספריית תרשימים שפיתחה IBM, שתוכננה ליצירת תרשימים מושכים ויזואלית וניתנים להתאמה אישית רבה.

חוזקות:

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

חולשות:

  • סוגי תרשימים מתקדמים מוגבלים: היא אינה תומכת במפות גאוגרפיות, בתרשימי תהליך אשכול או בתרשימי נרות, שהם חיוניים לפרויקט.
  • אקוסיסטם קטן יותר: ל-Carbon Charts קהילה ואקוסיסטם קטנים יותר בהשוואה לספריות תרשימים גדולות כמו ECharts או Highcharts.

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


7. Layer Cake

סקירה:
Layer Cake היא ספריית הצגה חזותית של נתונים שתוכננה ליצירת הצגות חזותיות גמישות ושכבתיות.

חוזקות:

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

חולשות:

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

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


8. D3.js

סקירה:
D3.js היא ספריית JavaScript עוצמתית ליצירת הצגות חזותיות מונחות נתונים באמצעות HTML, SVG ו-CSS.

חוזקות:

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

חולשות:

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

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


סיכום

לאחר הערכת הספריות על בסיס צרכי הפרויקט, Apache ECharts בולטת כאפשרות הטובה ביותר. היא תומכת במלוא מגוון התרשימים הנדרשים, כולל מפות גאוגרפיות, תרשימי נרות ותרשימי אשכול. היא בקוד פתוח, עשירה ביכולות ואינטראקטיבית מאוד, מה שמתיישב בצורה מושלמת עם מטרות הפרויקט. אף ש-D3.js מציעה את הגמישות הרבה ביותר, המורכבות והשקעת הזמן שלה הופכות אותה לפחות אידיאלית לסטארטאפ שמבקש לבצע איטרציות מהירות. ApexCharts ו-Chart.js הן חלופות טובות לפרויקטים פשוטים יותר אבל חסרה להן תמיכה בסוגי תרשימים מתקדמים.