SOA - Szolgáltatásorientált architektúra - Service Oriented Architecture

Napjainkban egyre többször felmerül az igény, hogy átlátható, könnyen karbantartható, menedzselhető olyan alkalmazásokat hozzunk létre, melyek könnyen kommunikálnak más alkalmazásokkal, platform és nyelvfüggőség nélkül. Ezért egyre divatosabbak a különféle SOA alapú megoldások, eszközök használatai. Ezek a SOA megoldások egyszerre teszik biztonságosabbá, hatékonyabbá a fejlesztés menetét, és nyújtanak betekintést és beleszólást a rendszer folyamataiba üzleti világnézetű felhasználói számára is a gazdag grafikus felület segítségével.

 

 

A SOA dióhéjban:

Egy megoldás arra, miként tudunk kölcsönös működésre bírni különböző alkalmazásokat, szolgáltatásokat, ez által akár lehetővé tenni különböző rendszerek integrációját, együttműködését.

A két fél, azaz a szolgáltató és a szolgáltatást igénybe vevő a hálózat segítségével kerül kapcsolatba egymással. Jellemzően két teljesen idegen rendszer elemét képezik.
A kapcsolatépítés a következő folyamatokból tevődik össze:
 

  1. Szolgáltatás közzéteszi magát egy szolgáltatásokat leíró nyilvánosan elérhető adatbázisban.
  2. A szolgáltatást igénylő felkeresi az említett adatbázisból a meghívni kívánt szolgáltatást, és kap egy szolgáltatás leírót, mely tartalmazza a szolgáltatás lényeges adatait (hogyan lehet meghívni, milyen típusú és mennyi paramétert vár, milyen típusú a visszatérési értéke, stb.)
  3. Az igénylő a leíró segítségével meghívja a szolgáltatást a szükséges adatok átküldésével.
  4. A szolgáltatás feldolgozza a kérést, és visszaküldi a feldolgozás eredményét az igénylőnek.

 

 

 

Ez egy általános leírása az architektúrának, a valóságban általában webszolgáltatásokról (WebService) beszélünk, ahol a szolgáltatások egy UDDI adatbázisba kerülnek regisztrálásra. A szolgáltatás leíró ilyen esetben egy WSDL fájl, az igénylő és a szolgáltatás pedig SOAP borítékokkal folytatja egymás között a kommunikációt.

 

 

 

 

A SOA tágabb értelmezésben:

Egy nagyobb rendszert kell elképzelnünk, mely lazán csatolt együttműködő szolgáltatásokból épül fel. Ezek a szolgáltatások közös formális nyelven kommunikálnak egymással, mely nyelvfüggetlen az adott szolgáltatás implementációs nyelvétől és környezetétől. A szolgáltatások interfész definíciója elrejti az architektúra elől a nyelvfüggő implementációs részeket. A SOA szabványosított komponensekből felépülő rendszer, amelynek egyik legfontosabb eleme egy kommunikációs réteg, mely rétegen keresztül válnak elérhetővé a háttérrendszerekben azonosított szolgáltatások, melyeket a szolgáltatás-interfészen keresztül érünk el.

 

SOA szemléletmód előnyei:

 

  • Komponens alapú építkezés, mely lehetővé teszi a komponensek újrafelhasználhatóságát.
  • Leváltja a monolitikus (siló orientált) nehezen átlátható és kezelhető rendszereket, így a kritikus helyek könnyebben beazonosíthatóak, karbantarthatóak.
  • Rugalmas és hatékony alkalmazás környezet és architektúra
  • Elosztottság támogatása. A felhasználói felület elválik az implementációs rétegtől.
  • Könnyen párhuzamosítható fejlesztési feladatok, mely szintén az elosztottságból fakad.

 

SOA szemléletmód hátrányai:

 

  • A rugalmasság biztosítása nagyobb erőforrásigényekkel jár, de a jelenlegi technológiai lehetőségek megfelelnek ezen igényeknek.

 

BPM - Üzleti folyamatok modellezése:

Nagyobb üzleti folyamatoknál sok különböző szolgáltatást kell elérni, használni, különböző logikák alapján. Ezen folyamatokat jellemzően egy grafikus modellező eszköz segítségével könnyen áttekinthetően formálhatjuk meg. A háttérben egy XML alapú magas szintű nyelv, a BPEL (Business Process Expression Language) segítségével történik a folyamat tényleges leírása.

 

SOA fejlesztőeszközök:

Manapság több szoftvergyártónak is van már megoldása arra, hogy ne kelljen soronként megírni a webszolgáltatásokat, a WSDL fájlokat, a BPEL folyamatokat, hanem azokat a rendszer segítségével grafikusan létrehozhassuk, a kulcsfontosságú adatok alapján legeneráltathassuk, így nagyon sok időt és terhet spórolhatunk meg. Ezek a rendszerek hatékony kódokat generálnak, kizárják a programozásból adódó hibák lehetőségét, könnyen átlátható és módosítható az elkészített alkalmazásrendszer, ezért érdemes használni őket.