SaaS – Akkor ez most a Symbol Ügyvitel API?

SaaS működésünk megjelenése előtt számos céggel beszélgettünk róla, hogy ez a működés, akkor most mennyire van kész, ez most akkor gyakorlatilag egy API? A válasz az, hogy ez egy DynamicAPI. Teljes API-t nem lehet csinálni, de bármely része percek/órák alatt implementálható.

Mi is az API?

Az API egy függvénytár, amely egy rendszer kívülről elérhető funkcióit engedi megszólítani. Kis vagy közepes funkcionalitás esetén az API annyi megszólítható “dolgot” tartalmaz, amennyit két kezünkön meg tudunk számolni. Példaképpen említhetjük a POP3 vagy IMAP parancsokat, amelyek a levelek letöltését, üzenettörzs letöltését, üzenetek törlését valósítja meg. Nem is kell többet.

Ugyanilyen a Google Docs API, amely dokumentumok tárolását szolgálja. A műveleteknél nem is vágyunk többre, mint dokumentum feltöltése, letöltése, törlése, áthelyezése és egy gyors keresőszolgáltatás a dokumentumok tartalmában (ez utóbbi nem is biztos, hogy része a rendszernek, de ha már Google, akkor talán igen)

SaaS

Egy összetett (nem bonyolult, hanem komplex) rendszer esetében egy teljes API legalább annyi műveletet tartalmaz, mint ahány főmenüpontja van, a paraméterek száma is több tízre tehető. Ez nyilvánvalóan nem valósítható meg, pontosabban olyan mértékű ráfordítást igényel, amely nem térül meg.

Ehelyett a dolog méregfogát úgy húztuk ki, hogy egy önálló programozási platformmal lehetővé tettük bármilyen API megírását. És mindezt ingyenes eszközökkel. Egy SaaS kompatibilis SyX megírása ahhoz hasonlítható, mintha a Google Docs adatbázisához hozzáférünk (saját adataimat nem rejtsék el előlem) és saját lekérdezéseket írhatunk. A lekérdezéseket egy szabványos hozzáférési rétegen (HTTP) kivezetjük, hogy az azt felhasználó kollégáknak ne kelljen valami újat megtanulniuk.

Nézzünk erre egy példát!

Szükségünk lenne egy termékhez tartozó készletinformációra. Ezt egy külső program (amely a weboldalt frissíti) fogja felhasználni. Programozási nyelve lehet PHP, Delphi, C++ vagy C# is. Triviális megoldás, ha az adatbázisból közvetlenül lekérdezzük ezeket az információkat. (Ügyfélszolgálatunk támogatást nyújt a szükséges adatok helyének megismerésében). Ez a megoldás azonban közvetlen adatbázis kapcsolat igényel, amely közepes méretű cégeknél nem megoldható. Emellett külön kell azzal foglalkozni, hogy a fent jelölt programozási nyelvek miként kapcsolódnak az adatbázishoz. Helyette valósítsuk meg a dolgot két lépésben!

1. lépés: SaaS funkció létrehozása.

Hozzunk létre ingyenes fejlesztőeszközzel egy SyX-et, amely SaaS működésre alkalmas. A fenti művelet kiszolgálására készítsünk egy metódust, amely egy termékkódot vár és egy opcionális dátum paraméterrel hívható meg. A metódus “magja” kb. 8-12 programsor segítségével a beérkezett kérést ki tudja szolgálni a megfelelő táblákból történő lekérdezéssel. Végeredményként visszaadja az összes raktárt és benne a készletet, ahol a termék eddig megfordult. Fontos megjegyezni, hogy a bemenő URL feldolgozását nem nekünk kell elvégezni, sőt az eredmény formátumát sem nekünk kell meghatározni, azokat a SaaS definiálja (XML lesz).

2. lépés: SaaS funkció hívása.

Következő lépésben a Symbol Ügyvitel által használt webszervertől le tudjuk kérni a http://localhost/GetWarehouseBalance meghívásával a raktárkészlet információkat. Az URL meghívása szinte programozási nyelv függetlenül megtehető, minden nyelv tartalmaz weboldalról való letöltést megvalósító funkciókat. A visszaadott érték lehet XML formátumú, esetleg JSON, sőt teljes HTML weboldal is, ha az URL-t böngészőn keresztül kívánjuk elérni.

A fenti példán keresztül jól látható, hogy miért nem egy teljes API-t valósítottunk meg, mennyire szerteágazó lenne az ügyfelek minden igényét egy API-ban kielégíteni. Helyette azt a megoldást választottuk, hogy szabványos platformot hoztunk létre, amelyben mindenki a saját API-ját elkészítheti a saját adatai feletti rétegben.

Használat Interneten keresztül – Biztonságos ez?

Rendszerünk használata az infrastruktúra helye megválasztása miatt távolról is lehetőséges. Számos megoldási mód van még a tarsolyunkban, de a legtriviálisabb a direkt Interneten keresztüli csatlakozás.

Ingyenes megoldás

Adatbázis műveleteink optimalizáltsága miatt egy 2/2 Mbit-es kapcsolaton működő szerver (amely lehet Linux is) alkalmas a rendszer kiszolgálására 15 munkaállomásig. A munkaállomások számának növekedésével felfelé skálázni kell a kapcsolat sebességét.

A kapcsolat nyilvánvalóan publikus, bárki számára elérhető, emiatt lehet hozzá egyszerűen csatlakozni. De nézzük meg, milyen információkat kell tudnunk ahhoz, hogy a kapcsolat létrejöhessen. Szükség van tehát:

  • IP címre vagy host névre
  • port számra (alapértelmezett 3050 helyett)
  • adatbázisfájl fizikai helyének megadására

Az első kettő a mai számítógépes teljesítménnyel pár óra alatt kideríthető, ha máshogy nem, próbálkozással. A legutolsó azonban olyan mértékű kombinációs lehetőséget jelent, hogy számítógép legyen a talpán, aki ezt kitalálja. Nézzük, milyen példák lehetnek:

Windows-on: c:SymbolUgyvitelDBkiscegemdb1default.database

Linux-on: /var/lib/database/Symbol/CoMPaNY_1580/default.database

Ez utóbbi még betűnagyság érzékeny is. Matematikus kollégák véleménye szerint a lehetőségek száma elég nagy ahhoz, hogy valaki ezt ne találhassa ki. Konkrétan 26*2+10+5 a 49-ik hatványon, ami egy 3-as és mögötte 89 (!!!) darab nulla. Szemléltetve ez ennyi:

1 :
30000000000000000000000000000
000000000000000000000000000000
0000000000000000000000000000000

Azaz kicsi az esélye, hogy valaki el tudja találni, hol az adatbázisom. Ezt még egy kicsit erősíteni lehet, ha a helyet havonta cseréljük.

Ingyenes, előkészületet igénylő megoldás

Továbbra is ingyenes, de felkészültséget igénylő megoldás a kézzel kiépített SSL tunnel. Ezt például a putty programmal is megtehetjük. Ilyenkor az előző biztonságot növeljük azzal, hogy titkosított csatornán keresztül közlekednek az adatok. A csatorna kiépítése ilyenkor a felhasználó feladata.

Vállalati meegoldás, VPN

Egy igazi megoldás, amely pénzbe kerül a Virtual Private Network. Ez egy virtuálisan kiépített helyi hálózat, amely a számítógépet úgy emulálja, mintha a számítógép az irodában lenne. Ehhez valamilyen VPN szerverre szükség van.

…nevet még nem írhatok

Egy nemsokára megszülető megoldásunk – amelynek van már neve, de nem publikus – célja ponz az lesz, hogy biztonságos és stabil infrastruktúrális megoldást biztosítsunk ügyfeleinknek. Erről majd később.