מהי אדריכלות מוכוונת שירות?

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

שירותים מקיימים אינטראקציה דרך החוט באמצעות פרוטוקול כגון REST או SOAP (Simple Object Access Protocol). השירותים משולבים באופן רופף , כלומר ממשק השירות אינו תלוי ביישום הבסיסי. מפתחים או אינטגרטורים של מערכת יכולים להרכיב שירות אחד או יותר ליישום מבלי לדעת בהכרח כיצד כל שירות מיושם.

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

שירותי SOA ורשת

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

מדוע אדריכלות מוכוונת שירות?

SOA מטפל בשלושה אתגרים ארגוניים נפוצים:

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

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

SOA ומיקרו-שירותים

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

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

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

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

מתיו טייסון

מאפיינים עיקריים של SOA

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

ללא קשר לקנה המידה או המורכבות, הדפוס של ארכיטקטורה מוכוונת שירות זהה פחות או יותר:

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

הטמעת אדריכלות מוכוונת שירות

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

מתיו טייסון

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

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

SOAP לעומת שירותי אינטרנט RESTful

אפשר לאמץ את סגנון ה- SOA וליישם אותו עם REST, למשל באמצעות JAX-RS API או Spring Boot Actuator, אך דיון זה אינו מתחום המאמר. ראה "SOAP לעומת REST לעומת JSON" להשוואה שימושית של SOAP לעומת שירותי RESTful. יש גם חפיפה מסוימת בין שירותי האינטרנט RESTful לבין הסגנון הקל יותר המשויך למיקרו-שירותים.

שירותי אינטרנט מבוססי SOAP

שירותי אינטרנט המיושמים באמצעות SOAP הם עדיין נוקשים יותר מיישום שירותי אינטרנט RESTful או יישום שירותי מיקרו-שירותים, אך גמישים בהרבה מהימים הראשונים של SOA. כאן נסתכל רק על הפרוטוקולים ברמה גבוהה הנדרשים לשירותי אינטרנט מבוססי SOAP.

סבון, WSDL ו- XSD

SOAP, WSDL ו- XSD הם התשתית הבסיסית של יישום שירותי אינטרנט מבוסס SOAP. WSDL משמש לתיאור השירות, ו- SOAP הוא שכבת התחבורה לשליחת הודעות בין צרכני השירות לספקים. שירותים מתקשרים עם הודעות שהוגדרו באופן רשמי באמצעות XML Schema (XSD). אתה יכול לחשוב על WSDL כממשק השירות (אנלוגי באופן רופף לממשק Java). ההטמעה נעשית בשיעורי Java ותקשורת ברחבי הרשת מתרחשת באמצעות SOAP. פונקציונלית, צרכן היה מחפש שירות, מקבל את ה- WSDL עבור שירות זה, ואז מפעיל את השירות באמצעות SOAP.

אבטחת שירות אינטרנט

המפרט WS-I Basic Profile 2.0 מתייחס לאבטחת ההודעות. מפרט זה מתמקד בהחלפת אישורים, בשלמות המסר ובסודיות המסרים.

גילוי שירות אינטרנט

ברגע שאבן הפינה לגילוי שירותי האינטרנט, UDDI (תיאור אוניברסלי, הגדרה ואינטגרציה) דעך להיסטוריה. כיום נהוג לחשוף שירות אינטרנט מבוסס SOAP באופן שבו היית עושה שירות אחר באמצעות כתובת אתר של קצה. כדוגמה, אתה יכול להשתמש בממשק Endpoint שירות JAX-WS ו שלה @WebServiceואת @WebMethodההסברים.

בנייה ופריסה של שירותי רשת

למפתחי ג'אווה יש מספר אפשרויות לבנייה ולפריסה של שירותי אינטרנט מבוססי SOAP, כולל Apache Axis2 ו- Spring-WS; עם זאת, תקן Java הוא JAX-WS, ה- Java API לשירותי אינטרנט XML. הרעיון המרכזי שעומד מאחורי JAX-WS הוא ליצור שיעורי Java ולהביא להם הערות ליצירת החפצים הנדרשים. מתחת למכסה המנוע, JAX-WS משתמש בכמה חבילות Java, כולל JAXB, ספריית מטרה כללית לאגירת שיעורי Java ל- XML.

JAX-WS מסתיר את המורכבות והפרוטוקולים הבסיסיים מהמפתח, ובכך מייעל את תהליך ההגדרה והפריסה של שירותי SOAP מבוססי Java. IDEs מודרניים של Java כמו Eclipse כוללים תמיכה מלאה בפיתוח שירותי אינטרנט של JAX-WS. מפרט JAX-WS נבחר גם לפיתוח מתמשך בג'קרטה EE.

סיכום

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

הסיפור הזה, "מהי אדריכלות מוכוונת שירות?" פורסם במקור על ידי JavaWorld.