פיתוח פנימי מול שימוש בפלטפורמה

פיתוח "מהיסוד" על ידי צוות הפיתוח בארגון או על ידי ספק חיצוני הוא תהליך מקובל

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

פיתוח פנימי מול שימוש בפלטפורמה

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

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

שינויים בכלים ויכולות

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

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

פיתוח על בסיס פלטפורמה

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

יתרונות הפיתוח על בסיס פלטפורמה

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

  • פיתוח הפלטפורמה נעשה על ידי קהילות מפתחים גדולות ומעורבות מאד, ביניהם מהמפתחים המוערכים ביותר בתחום.  בהיות הקוד פתוח הוא נתון לביקורת קפדנית של מספר רב של מפתחים. מעבר לכך יש לראות בקהילות אלו מקור תמיכה טכנית טוב מאוד ובעל בסיס ידע עצום
  • לפלטפורמה יהיו בדרך כלל נהלי פיתוח מסודרים ומאורגנים ותיעוד טוב לפלטפורמה עצמה, לסטנדרטים ולשימוש בפלטפורמה ברמת אדמיניסטראטור וברמת משתמש
  • טיפול בתשתיות ברמה גבוהה (כולל יכולת אופטימיזציה, ביצועים, שרידות וכולי)
  • מגוון רחב של מודולים קיימים המקצר את זמן הפיתוח וכן  API מסודר ומוגדר היטב המאפשר רכישת מודולים מסוגים שונים והתאמת מודולים אלו או יצירת מודולים ייעודיים בקלות יחסית  
  • מסלול שדרוג מסודר ומוגדר ואימוץ טכנולוגיות חדשניות והטמעתן במהלך שידרוג
  • קהילת משתמשים גדולה מאד, המעבירה דרישות ומזהה תקלות לקהילת המפתחים.
  • טיפול באופטימיזציה של אלמנטים שונים במערכת ותכנון הלוקח בחשבון ביצועים והתאמה לנפח הפעילות (Scaleability & Availability)
  • טיפול יסודי בהיבטי אבטחה
  • הפרדה נכונה בין ניהול תוכן – טכנולוגיה – עיצוב, המאפשרת גמישות לשינויים ו בפן הטכנולוגי – הפרדה בין ממשקי משתמש, לוגיקה, טיפול במידע – החיונית הן לטיפול בשינויים והן ליכולת טיפול בתקלות ולטיפול ביציבות ושרידות המערכת.
  • העברת ידע ותחלופת גורמי ניהול המערכת קלים יחסית

חסרונות הפיתוח על בסיס פלטפורמה

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

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