ארכיטקטורה מוכוונת-שירותים (Service Oriented Architecture, SOA) היא סגנון ארכיטקטוני בתוכנה להרכבת יישומים ותהליכים עסקיים משירותי תוכנה. שירות (Service) הוא יחידת תוכנה שמבצעת פונקציה ברורה. העיקרון הוא צימוד רפוי (Loose Coupling), כלומר השירותים מחוברים באופן גמיש ולא תלויים זה בזה חזק.
האנלוגיה הנפוצה היא לבניית מודלים מלגו: מחברים 'אבני' שירות שונות ליצירת יישומים שונים.
צרכן (Consumer) הוא מי שמשתמש בשירות; זה יכול להיות משתמש, יישום אחר או שירות.
SOA מוגדרת כסגנון ברמת הפשטה גבוהה שבו הישויות הבסיסיות הן שירותים. השירות מוגדר לפי מהות עסקית ולא לפי טכנולוגיה. שירות נחשב "קופסה שחורה", צריך לדעת מה הוא עושה, לא איך הוא עושה זאת.
מאפיינים מרכזיים: שירותים בעלי רזולוציה גסה (Coarse Grained), ממשקים מוגדרים היטב, ועבודה בסביבה מבוזרת עם מערכות שונות.
מנשר ה-SOA הוא מסמך שיצרו מובילי תחום ב-2009. מטרתו להציע עקרונות ברורים ולשפר את המימושים, לאחר שעלו כישלונות ומכסות אכזבה ממימושים קודמים.
רעיון ה-SOA החל להופיע סביב 1996 כשהאנליסטים של Gartner הזכירו אותו. רק מתחילת שנות ה-2000 הוא הפך למגמה מרכזית, עם התפתחות תקני Web Services. יצרני תוכנה גדולים כמו IBM, Microsoft, Oracle ו-SAP פיתחו כלים לשם מימוש SOA.
הארכיטקטורה מחולקת לשכבות:
- ארכיטקטורה עסקית: מתארת שירותים ותהליכים עסקיים ללא מרכיבי מחשוב.
- ארכיטקטורת תוכנה: כוללת מרכיבי תשתית, יישומים, נתונים ומטא-דטה (Metadata, נתונים על נתונים).
שכבת האינטגרציה ממפה רכיבים לשירותים. מצד הצרכן יש ארכיטקטורת ריבוי-ערוצים (Multi-Channel) שמסבירה איך לקוחות שונים ניגשים לשירותים.
יש ארבעה סוגי שירותים עיקריים: שירות חדש, שירות עטוף (Wrapped Service) שמעטפת פונקציונליות קיימת בממשק סטנדרטי, שירות מורכב (Composite Service) שמחבר כמה מקורות, ושירות נתונים (Data Service) שמספק נתונים.
חוזה שירות (Service Contract) הוא מסמך חיצוני שמתאר את מאפייני השירות וה-SLA (Service Level Agreement, רמת שירות מוסכמת). בחוזה מציינים פרטים ניהוליים כמו בעלות השירות (Owner) וראשי התפקידים לפי מודל RACI (אחראי, ניהולי, יעוצי, מיודע).
מאפיינים פונקציונליים מתארים פעולות אופרטיביות; מאפיינים לא פונקציונליים כוללים אבטחה, ביצועים ודרישות תפעול.
מודל התייחסות (Reference Model) הוא מסמך תקני שמציע תבנית להתחלה בבניית SOA ספציפית לארגון.
הסיבה המרכזית היא גמישות: שינויי שוק ועסקים דורשים התאמות מהירות במערכות הממוחשבות. SOA מקלה על התאמה מהירה זו.
SOA ו-Web Services לא זהים. Web Services הן טכנולוגיה נפוצה ליישום שירותים, ואילו SOA היא תפיסה אסטרטגית רחבה עם השלכות עסקיות וארגוניות. אפשר לממש SOA ללא Web Services, ויש ארגונים שמימשו באמצעות טכנולוגיות אחרות כמו CORBA.
מימוש Web Services הוא לעתים טקטי ובדרך חשיבה מלמטה למעלה (Bottom-Up), בעוד SOA לעתים דורש גישה מלמעלה למטה (Top-Down), אך בדרך כלל משולבות שתי הגישות.
כלי תשתית מרכזיים למימוש SOA:
- Enterprise Service Bus (ESB): תשתית אינטגרציה מרכזית שמחברת שירותים.
- Service Registry/Repository: מאגר שבו מוגדרים השירותים (למשל UDDI).
- כלים ל-SOA Governance: כללים ובקרה על מדיניות המימוש.
- כלים ל-SOA Management: ניטור וניהול שירותים בזמן ריצה, בדיקת עמידה ב-SLA וביצועים.
SOA תורמת לשיפור תהליכים עסקיים על ידי התאמה טובה יותר בין התהליכים לילידות הממוחשבת שלהם. זה מאפשר לאנשי עסקים להציע שינויים ולחדש ללא תלות מלאה במומחי מחשוב. מוצרי BPM ו-BPA משולבים לעתים קרובות ב-SOA.
SOA 2.0 מנסה לשלב בין SOA ל-EDA (Event Driven Architecture, ארכיטקטורה מוכוונת אירועים). EDA מטפלת במצבים בהם אירוע מפעיל רכיבים באופן בלתי תלוי. שילוב זה מאפשר גם הפעלת שירותים על ידי אירועים, וכן תהליכים סדרתיים ומקביליים לפי צורך.
WOA משלב בין SOA ובין רעיונות Web 2.0. החזון הוא שאנשי עסקים יוכלו להרכיב יישומים מתוך שירותים, בעזרת כלים דמויי Web 2.0 בממשק משתמש עשיר. טכנולוגיות כמו AJAX ו-REST משמשות גם במימושי SOA ולשלביהן בצד הצרכן.
בסיכום קצר: SOA היא גישת ארכיטקטורה שמבוססת על שירותים גמישים וממשקים מוגדרים, עם כלים ותשתיות שמקלות אינטגרציה, ניהול ושינוי תהליכים עסקיים.
SOA זו דרך לבנות תוכנה מתוך חלקים קטנים שנקראים שירותים. שירות (Service) הוא חלק תוכנה שעושה דבר אחד ברור.
דמיין לגו: מחברים אבנים שונות כדי לבנות דגמים שונים.
מי שמשתמש בשירות נקרא צרכן. זה יכול להיות אדם או תוכנה אחרת.
ב-SOA בונים לפי רעיון עסקי. השירות צריך לתאר מה הוא עושה, לא איך הוא עובד.
השירות הוא "קופסה שחורה", יודעים את התוצאה ולא את הפנים שלה.
הרעיון התחיל בשנות ה-90. בשנות ה-2000 הוא הפך נפוץ. חברות גדולות פיתחו כלים לתמוך בזה.
יש שכבות: עסקים, תוכנה, נתונים ומידע על הנתונים (Metadata - נתונים על נתונים).
יש גם כלי שמחבר בין השירותים, כמו צינור מרכזי שנקרא ESB.
יש ארבעה סוגי שירותים חשובים: חדש, עטוף (כלומר עוטפים פונקציה ישנה כדי להשתמש בה), מורכב (שמחבר כמה מקורות) ושירות נתונים (נותן מידע).
חוזה שירות (Service Contract) הוא מסמך שמתאר את כללי השימוש בשירות. SLA הוא ההסכם על רמת השירות. RACI מסדר מי אחראי על מה.
כי זה מקל לשנות מערכות מהר. ארגון שמגיב לשינויים מהר, זה חשוב.
Web Services הן שיטה טכנית לבנות שירותים. אך SOA היא רעיון גדול יותר. ניתן להשתמש ב-Web Services כדי לממש SOA.
SOA 2.0 מנסה לשלב בין שירותים לאירועים (EDA - ארכיטקטורת אירועים).
WOA משלב SOA עם רעיונות של Web 2.0, כדי שאנשים יוכלו להרכיב יישומים בקלות.
תגובות גולשים