SOA gondolatok – a SOA gondolat eredete

Szeretettel köszöntöm a Nyájas Olvasót e jeles alkalomból, amikor is útjára indul a blogom és vele a SOA gondolatok sorozat!

Az első részben az elmaradhatatlan visszatekintéssel kezdem: azt igyekszem megmutatni, hogy a szolgáltatás-orientáció és a SOA (Service Oriented Architecture, magyarul szolgáltatás-irányultságú architektúra, azaz SZIA) nem egyszerűen újabb mágikus szavak, hanem egy régi gondolat megvalósulásai, amely – mint minden más a technika fejlődésében – nem egy pillanat alatt, hanem rövidebb-hosszabb fejlődés eredményeként jelentek meg, és amelyeket a hardveripar már régóta és sikerrel alkalmaz.

A hardver- és a szoftver-ipar fejlődésében talán a legszembeötlőbb különbség, hogy a hardvergyártás mindig is iparszerű volt. Bármennyire is egyszerűek a félvezetők működésének alapelvei, azért házilag csak nagyon kevesen állítottak elő tranzisztort. (Egyik kivétel éppen akadémiai témavezetőm, Gyulai József, a fizikai tudomány doktora, aki ifjúkorában „barkácsolt” otthon egy germánium tranzisztort, amely meglehetősen méretesre sikerült és mikroszkóp alatt kissé szabálytalanul nézett ki, viszont működött.) Azon komplex struktúrák pedig, amelyek lehetővé tették például a személyi számítógépek megjelenését, egyszerűen nem alakíthatók ki igen komoly technológiai háttér nélkül.

A másik faktor a jelentős költség, amely a hardverhez kapcsolódik. Már egy egyszerű, négy alapműveletre képes számológéphez is tízezres nagyságrendű kapcsolóelem (jelfogó, elektroncső, tranzisztor) szükséges, amelyeket valahogyan meg kell(ene) finanszírozni, a szoftverfejlesztésnél „bevált” copy&paste módszerrel nem lehetséges szaporítani azokat…

Az első integrált áramkör, azaz olyan struktúra, amelyben egy félvezető lapkán egymással összefüggően működő több elem lett kialakítva, már az 50-es évek végén megjelent (1958, Jack Kilby, Texas Instruments), és nem is sok időnek kellett eltelnie, míg alkalmazási területet talált magának. A hatvanas évek közepétől jelentek meg kereskedelmi forgalomban a logikai integrált áramkörök, amelyek nagy terhet vettek le a tervezők, és még inkább a fejlesztők, üzemeltetők válláról. Ezek olyan eleinte elemi, később összetettebb műveleteket voltak képesek elvégezni, amelyekhez korábban tucatnyi tranzisztort kellett felhasználni. Szerepeltek közöttük két- és több bemenetű logikai kapuk, egy- és több bites tárolók, összekapcsolható egybites összeadók és egyebek. A tervezőknek ezek után csak a megfelelő műveleteket megvalósító áramköröket kellett kiválasztani a katalógusból és a kívánt módon összekötni azokat, a fejlesztők pedig nem kellett törődjenek mondjuk a D flip-flop belső működésével, csak azt kellett figyelembe venniük, hogy az SN7474-es típusszámú 14-lábú DIL-tokozású áramkörön hol van a bemenet, hol vannak a kimenetek, illetve melyik láb a földpont (a 7-es) és melyik a tápfeszültség pozitív pólusa (a 14-es). Tehát a logikai rendszereket kész építőelemekből lehetett összeállítani, amelyek szabványosan kapcsolódtak egymáshoz. Ezeket az építőelemeket rettenetes módon újrafelhasználták, no nem úgy, hogy az egyik rendszer D flip-flopja egy másik rendszerben is látott el feladatot, hanem úgy, hogy a másik rendszer megépítéséhez egy másik, de pont ugyanolyan áramkört vettek elő a fiókból. A lényeg viszont megmaradt: nem kellett megtervezni, kifejleszteni és tüzetesen újratesztelni az adott építőelemet, mert ezt már a gyártó megtette, továbbá egy építőelem-katalógusban leírta, hogy az adott típus milyen funkcionális (pl. D flip-flopot valósít meg) és nem-funkcionális (pl. +4,75 V és +5,25 V tápfeszültségek között működik) követelményeknek felel meg.

Ez a fajta szabványosítás, amely egy cég (a Texas Instruments) specifikációiból indult, érdekes módon folytatódott. Miután a specifikációkat nyilvánosságra is hozták, azaz nyílt szabványokat alakítottak ki, több más cég is beszállt a gyártásba, és az SN7474 mellett hamarosan megjelent a National Semiconductor LM7474, a Fairchild f7474, és még sok más vállalat saját terméke, amelyek – miután szorosan követték a szabványokat – csereszabatosak voltak egymással. Mi történt tehát? Miután körültekintően kidolgozott és nyilvános szabványok álltak elő, megjelentek az (abban az értelemben) újabb változatok, (hogy más gyártóktól származtak,) amelyek a visszafelé kompatibilitást messzemenően megtartva biztosították az újrafelhasználhatóságot.

Később előálltak olyan típusok is (az ún. L sorozat), amelyek kevesebb áramot fogyasztottak, így könnyebb volt velük nagyobb rendszereket építeni, meg olyanok is, amelyek egy technológiai újítás révén gyorsabban működtek (az S sorozat), és a kettő kombinációja is, amely kevesebbet fogyasztott és mégis ugyanolyan gyorsan működött, mint az alaptípus (ez volt az LS sorozat). Mi történt ebben a lépésben? Az áramkörök belső szerkezete átalakult, de ugyanazon funkcionális és részben ugyanazon nem-funkcionális követelményeknek feleltek meg, mint a korábbi típusok, ezért (bizonyos korlátok között) csereszabatosak maradtak azokkal, azaz az újrafelhasználhatóság megmaradt.
Ezekből az áramkörökből eleinte egyedi berendezések készültek, majd kialakultak azok a szabványos nagyobb egységek, amelyeket szintén építőkockákként lehetett alkalmazni a minél gyorsabb és rugalmasabb rendszerkialakítás során. E folyamat egyik kitűnő hazai példája volt a KFKI-ban megalkotott CAMAC intelligens mérésadatgyűjtő és -vezérlő rendszer, amely a korabeli TPA számítógépekkel együttműködve sok helyen változatos módon volt képes ellátni a feladatát, változó körülmények között is. A CAMAC rendszer egy ún. keretre épült, ebbe helyezték el tápegységet és a programozható keretvezérlőt (ez lényegében egy mikroszámítógép volt), valamint magukat az adatfeldolgozó kártyákat. Ezek között voltak többcsatornás digitális és analóg ki- és bemeneti egységek, analóg/digitális és visszafelé alakítók, számlálók, kijelzők, és még sokan mások. A CAMAC modulokban maga az a rész, amely lehetővé tette a szabványos rendszerbuszhoz való csatlakozást, a tervezésnél egyszeri (a gyártásnál folyamatos) többletköltséget jelentett ugyan (ezt anno nagyjából 30 %-ra becsülték), de a tényleges rendszerek összeállítását olyan drámai mértékben megkönnyítette és felgyorsította, hogy ez nem gátolta az elterjedését. Megjelentek tehát az építőelemekben a granuláltsági szintek.

A többszintű szerveződés a nyolcvanas évek végére más módon is előállt. Egy mikrokontroller (mikroprocesszorra épülő komplett adatfeldolgozó áramkör) belső felépítése igen összetett, viszont a rövidülő műszaki élettartama megkövetelte, hogy egyre gyorsabban állítsanak elő újabb és újabb feladatokra újabb és újabb típusokat. Ennek az üzleti igénynek a gyártók úgy próbáltak megfelelni, hogy az alkatelemeket külön-külön tervezték meg, a terveket alkatrész-könyvtárakban tárolták, és az adott mikrokontrollert ezekből az építőelemekből rakták össze. Vegyünk egy ilyen mikroprocesszor-egységet, ennyi memóriát, annyi ki/bemeneti egységet, amolyan analóg/digitális átalakítót, rázzuk jól össze, és kész a vadonatúj mikrokontroller egyetlen tokban, egyetlen szilíciumlapkán!

A moduláris személyi számítógépek (az Apple és az IBM PC) megjelenésével a granularitás tovább fokozódott: megjelentek a számítógépek alaplemezein a különféle buszok, amelyekbe különböző feladatokat ellátó kártyákat lehetett csatlakoztatni, mint például monitorvezérlő, winchester-illesztő, hangkártya és sok más egyéb. Az IBM PC-nél ezeknek a kártyáknak a specifikációi is nyilvánosak voltak, ami miatt számtalan gyártó kezdte el azok „termelését”. Az Apple megtartotta magának a hardvergyártást, látható, hogy a piaci részesedésben ez hova vezetett (a nagyságrendileg 5 %-hoz). Egyfajta kártya, mondjuk egy hangkártya egyfajta szolgáltatást nyújtott: az adott példában erősítőbe vezethető hangot generált a beérkező digitális adatfolyamból. Miután ennek a specifikációi lerögzültek és nyilvánossá váltak, megindult az újrafelhasználás; ha nem is maguké a kártyáké, hanem az általuk megvalósított funkcióké. Azaz a visszafelé kompatibilitás megőrzése miatt ha valaki megunta az első hangkártyájának kissé reszelős hangját, különösebb gond nélkül cserélhette azt egy jobb hangú darabra, amely a régi által nyújtott szolgáltatásokat továbbra is biztosította, és persze újakat is felkínált. Egy idő múlva egy szabványos, vagy ipari személyi számítógép (ahogy az IBM PC-kompatibilis gépeket egy idő után többféle okból nevezni kezdték) igazi „élő” darabbá vált: az általa nyújtott szolgáltatások egyre tágabb határok között és egyre gyorsabb ütemben változtak, miközben az alapműködés folyamatos maradt.

Összefoglalva: mint láthatjuk, a számítástechnikai hardvergyártásban már régen megjelentek a szabványos interfésszel rendelkező, visszafelé kompatibilis, újrafelhasználható és gyártófüggetlen „szolgáltatások”, amelyeket több granuláltsági szinten összeszervezve könnyen és gyorsan lehetett komplex rendszereket létrehozni. Ennek persze ára volt: meg kellett teremteni az építőelemek szabványos összekapcsolhatóságát, amely többletmunkát, többletidőt és többletköltséget jelent a tervezésnél (és ahogy említettük, bizonyos mértékig a gyártásnál), de ez olyan óriási méretű munka-, idő- és pénzmegtakarítást tesz lehetővé a rendszerépítésnél, hogy az az újrafelhasználhatóság és az újrafelhasználás miatt többszörösen megtérül.

Ezek után kérdezhetjük, hogy a szoftvermérnökök ilyen buták volnának, nem ismerték fel ezeket az előnyöket? Már több, mint egy évtizede lenne SOÁ-nk, ha példát vettek volna a hardveresekről… Persze a dolog nem ennyire egyszerű. Hogy miért nem, ezzel foglalkozunk majd a következő részben.

Mészáros Gyula

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.

Feladvány a továbblépéshez *