Enterprise Service Bus

Enterprise Service Bus או בראשי תיבות ESB הוא מוצר תוכנה מבוסס סטנדרטים המהווה את הציר המרכזי לאינטגרציה בין רכיבי תוכנה בארגון. רכיבי תוכנה אלה עשויים להיות שירותים, מערכות מחשוב ונתונים. ה-ESB מאפשר זמינות של שירותים מבוססי סטנדרטים למספר רב של מערכות, משתמשים ותהליכים. המייחד אותו מה Integration Broker המסורתי הוא היותו מבוסס סטנדרטים.

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

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

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

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

חברת האנליסטים Aberdeen Group מגדירה ESB באופן הבא:
ESB הוא תווכה מבוססת מסרים המספקת עבודה משותפת (Interoperability) והעברת מסרים מאובטחת בין שירותים בסביבת SOA .
חברת האנליסטים Forrester Research מגדירה אותו כתשתית תוכנה המספקת זמינות רחבה של שירותים עסקיים לשימוש חוזר. הזמינות היא למשתמשים, אפליקציות, תהליכים עסקיים ושירותים אחרים.

== מאפייני ESB ==
ESB ה-ESB הוא מרכיב אינטגרציה מרכזי בו מבוצעות פעולות האינטגרציה בין מרכיבים שונים במערכות המחשוב בארגון. בשונה מה Hub המסורתי או ה Integration Broker הוא מבוסס סטנדרטים. הוא מבצע את אותן הפעולות, שצוינו ביחס לתוכנה מרכזית לאינטגרציה על מסרי XML ומסרי Web Services. הבדל מהותי אחר בין ה ESB ל Integration Broker המסורתי מתייחס לישויות ביניהן הוא מנסה לחבר: שירותים המהווים אבני בניין של ארכיטקטורה מוכוונת שירותים. ב ESB מוכלים בדרך כלל גם שירותים נוספים, כגון: אבטחת מידע וניהול.
ה ESB עשוי להיות Back Bone, שעל גביו יתבצעו שירותים בתפיסה של צימוד רפוי, כלומר: תלות קטנה בין השירות וצרכן השירות, המתבטאת בביצוע השירות באופן אסינכרוני. ESB עשוי להיות פתרון עצמאי או פתרון המשתלב בתוך Application Server. קיימים ויכוחים ביחס לתיחום שירותי ה-ESB. על פי גישה אחת הוא מטפל רק באינטגרציה מבוססת סטנדרטים.
אחרים מוסיפים להגדרת ה-ESB, גם את האפשרות לבצע אינטגרציה שאינה מבוססת על סטנדרטים.
<br /> היכולות העיקריות הכלולות ב-ESB הן:
* תקשורת (Communication) - ה-ESB חייב לכלול שכבת תקשורת המאפשרת אינטראקציה בין ישויות.
בתחום התקשורת נכללות יכולות תקשורת בסיסית כגון: תמיכה בפרוטוקולי תקשורת. פרוטוקולי התקשורת הנתמכים בדרך כלל הם HTTP ופרוטוקול המבוסס על MOM.
<br />בנוסף לכך יכולות Mediationfdui כגון: טרנספורמציות והעשרה.
* אינטגרציה - יכולות התקשרות למערכות אחרות שאינן שירותים. יכולות זו לא תמיד נכללת במוצר ESB חדש שפותח. לעומת זאת היא מהווה מרכיב מהותי במוצר ESB שהתפתח ממוצר EAI. אינטגרציה אפשרית גם מול מקורות מידע, למשל אינטגרציה עם בסיס נתונים באמצעות JDBC או ODBC.
* ניהול - יכולות לנהל ולמדוד את הפעילויות המתבצעות בו.
* אבטחת מידע - תמיכה בשירותי אבטחת מידע ייעודיים והשתלבות עם המסגרת הכוללת של אבטחת מידע בארגון. אבטחת המידע הכלולה ב ESB צריכה לענות על דרישות מודל CIA כלומר תמיכה ב: Confidentiality, Integration, Availability. בנוסף לכך נדרשת תמיכה בפונקציונליות של אבטחת מידע בנושאים נוספים כמו הזדהות והרשאות.
* תמיכה בתהליכים
ESB כולל יכולות מסוימות של טיפול בתהליכים יכולות אלה מבוססות על סטנדרטים מבוססי Web Services במיוחד WS-BPEL. למימוש יכולת כזו נדרש מנגנון של Compensation להתאוששות מתקלות.

== זרימת המידע ==
התהליכים העיקריים המתבצעים ב ESB הם תהליכי זרימת מידע. המידע מועבר באמצעות מסרים אסינכרונים. מסרים אלה מעובדים בתוך ה-ESB. זרימת המידע (Data Flow) מורכבת מהשינויים במסנה ותוכן המסר, מהאופן בו מנותב המסר ומההתניות הקובעות את היעדים אליהם מנותב המסר.

== סווג פתרונות ESB ==
ניתן לחלק את מוצרי ה-ESB לקטגוריות על פי מאפייניהם:
<br /> חלוקה לפי אופן התפתחות המוצר
# מוצרי ESB שפותחו מראש כמוצרי ESB - בדרך כלל אלה מוצרים חדשים יחסית שנבנו מראש כמוצרי ESB. מוצרים אלה הם מוצרים המתמקדים באינטגרציה של שירותים המבוססת על סטנדרטים. 
# מוצרי EAI שהתפתחו למוצרי ESB - מוצרים אלה הם דור חדש של מוצרי EAI קיימים שהותאמו ל SOA. מוצרים אלה תומכים בדפוסי אינטגרציה שלאו דווקא מבוססים על סטנדרטים. בגלל התאמתם בדיעבד כ ESB, עלולים להיווצר קשיים במימוש פונקציונליות חדשה של ESB למשל בנושא ניהול.
<br /> חלוקה לפי המיקוד הטכנולוגי של המוצר
# מוצרי ESB שהם חלק מתשתית כוללת להרצת אפליקציות (Application Server Centric) - מוצרים אלה מהווים חלק מתשתית כוללת להרצת אפליקציות בדרך כלל בסביבת J2EE או סביבת דוטנט. 
# מוצרי ESB ממוקדי אינטגרציה (Integration Centirc) - מוצרים המשתלבים עם תשתיות אינטגרציה אחרות כמו מוצרי BPM.

== ESB ופתרונות תווכה אחרים ==
Integration Broker
ה ESB מחליף את ה Integration Broker שהווה את המרכיב המרכזי בפתרונות Enterprise Application Integration, לפיכך הפונקציונליות שלו כוללת את הפונקציונליות של ה Enterprise Application Integration.
יתרונותיו של ה ESB לעומת ה Integration Broker מבוסס EAI הם:
# תמיכה באינטגרציה מבוססת סטנדרטים - תמיכה באינטגרציה של Services ושל מסרי XML.
# קלות במימוש אינטגרציה - היות שהאינטגרציה בפתרונות ESB היא מבוססת על סטנדרטים והיות שה ESB ומכיל בתוכו פונקציונליות תשתיתית נוספת, נחסך חלק גדול מהפיתוח עבור כל ממשק. התוצאה עשויה להיות מימוש מהיר וזול יותר של פתרון האינטגרציה. בנוסף לכך מקטין את המורכבות כתוצאה מהקטנת מספר הממשקים ומאפשר קלות ביצוע שינויים בגלל ביצועם במקום אחד ולא בכל חיבור בין השירות או היישום לבין יישום אחר. 
# ניהול ואבטחת מידע - מוצרי ESB כוללים יכולות ניהול ואבטחת מידע, המהוות חלק מה ESB פונקציונליות זו אינה נכללת במוצרי EAI 
 BPM
<br /> מוצרי ESB מטפלים בזרימת נתונים של התהליך. מוצרי BPM תומכים במימוש תהליכים ממוחשב, כך שבמובן זה קיימת חפיפה מסוימת ביניהם. המבחין ביניהם הוא היכולת של מוצרי BPM לטפל בתהליכים מורכבים יותר, בעלי טווח גדול יותר בארגון. בנוסף לכך מוצרי ESB אינם מטפלים בתהליכים אנושיים, בשונה מתהליכים הממומשים באמצעות מוצר BPM.

== ראו גם ==
* ארכיטקטורה מוכוונת שירותים
* אינטגרצית מידע ארגונית
* Web Services
* BPM
* תווכה
* Enterprise Application Integration
* שילוב מערכות

== לקריאה נוספת ==
# Aberdeen Group/ ESB and SOA Middleware, June 2006
# Ken Wollmer & Mike Gilpin,The Forrester Wave™: Enterprise Service Bus Q2 2006, Forrester Research, June 2006

== קישורים חיצוניים ==

# [https://web.archive.org/web/20080720152019/http://www.redbooks.ibm.com/redbooks/pdfs/sg246346.pdf Patterns: SOA Design Using WebSphere Message Broker and WebSphere ESB, IBM Redbook]
# [ftp://ftp.software.ibm.com/software/websphere/literature/cbdireport_soa_july2004.pdf CBDI Report/SOA: Introduction for Managers]

== הערות שוליים ==

# ההגדרה מופיעה במאמר שכותרתו Enterprise Service Bus and SOA Middleware ופורסם ביוני 2006
# ההגדרה מופיעה במסמך שנכתב על ידי האנליסטים Ken Vollmer ו Mike Gilpin ומופיע בסעיף לקריאה נוספת.

קטגוריה:תוכנות עסקיות