SAP = ABAP + JAVA
(zdroj obrázku: help.sap.com)
Aby administrátor systému SAP byl schopen porozumět příčině chyb a uměl je řešit, potřebuje vědět, jak funguje jeho jádro. V tomto článku se tedy pokusím objasnit základní principy fungování technické komponenty SAP Web Application Server (dále SAP Web AS).
Původně byl sytém SAP Web AS založen na programovacím jazyku ABAP (Advanced Business Application Programming) a jeho běhovém prostředí. Tento jazyk byl navržen tak, aby se jeho syntaxe co nejvíce podobala běžnému jazyku a pomocí něj se dá dělat jak kompletně nový vývoj zákaznických aplikací, tak úprava standardních aplikací SAP.
Od verze SAP Web AS 6.20 má systém dvě běhová prostředí. K ABAPu se přidala JAVA 2 Enterprise Edition (J2EE). Obě prostředí pracují nezávisle a vývoj pro ně probíhá v rozdílných programovacích nástrojích. Při instalaci SAP Web AS je možné specifikovat, které z daných (případně obě) prostředí chcete používat.
Architektura
Architektura SAP Web AS je třívrstvá, tj. různé části (vrstvy) logiky systému lze provozovat odděleně, což velice pomáhá na velkých systémech při rozložení výpočetního výkonu na více serverů.
Databázová vrstva
Databázový stroj (databáze) může být nainstalován na samostatném serveru a představuje tak samostatnou vrstvu systému. SAP podporuje mnoho databází - Oracle, IBM DB2, MaxDB, MS SQL Server ..
Jako příklad teto vrstvy můžeme uvést, že v databázových tabulkách se uchovávají data o zákaznících.
Aplikační vrstva
Aplikační vrstva představuje prostředí pro vykonávání programové logiky (programů) na straně serveru. Jak bylo už napsáno, může to být v prostředí ABAPu nebo Javy.
Příkladem této vrstvy může být požadavek uživatele, který chce vědět, za kolik peněz odebral daný zákazník zboží za minulý rok. Aplikační logika (program) nejdříve požádá databázi o všechny záznamy faktur za minulý rok pro daného zákazníka. Po té je záznam po záznamu projde, vyloučí např. neplatné faktury, zbytek sečte a dostane tak požadovanou informaci.
Prezentační vrstva
Prezentační vrstva má za úkol předat informaci uživateli. V systému SAP, tak může prezentační vrstvu představovat webový prohlížeč, SAP GUI (klientský program nainstalovaný v počítači) nebo dnes oblíbené aplikace pro mobilní telefony a tablety.
Instance SAP
Instanci obecně můžeme kostrbatě definovat, jako samostatnou jednotku obsahující všechny nezbytné části a služby pro fungování systému. V naprosté většině případů je jedna instance rovna jednomu aplikačnímu serveru. Někdy se tedy tyto pojmy nesprávně zaměňují.
V systému SAP musí existovat vždy jedna centrální instance, která zajišťuje pro sebe a ostatní instance základní služby (např. přidělování uživatelů, zamykání objektů atd.). Dále může systém obsahovat další instance, které slouží pro rozložení výkonu na více serverů.
Protože je centrální instance životně důležitá pro chod systému, někdy se konfiguruje tak, aby na ni nebyli přihlašování koncoví uživatelé. Tím se zvyšuje spolehlivost celého systému, protože pád jiné (necentrální instance) např. v důsledku přetížení, pak nemá vliv na chod ostatních instancí. Výpadek tedy poznají pouze uživatelé jedné (přetížené) instance.
ABAP instance
(zdroj obrázku: www.sap.com)
Dispatcher
Každá ABAP instance obsahuje jeden dispatcher, což je komponenta, která přijme požadavek od uživatele a předá ji ke zpracování příslušnému work processu. Zajišťuje tedy rozložení výkonu v rámci instance. Nemůže se tedy např. stát, že jeden požadavek uživatele vytíží systém na 100% a omezí tak ostatní uživatele.
Work processes (WP)
WP jsou samostatné jednotky vykonávající požadavek ( např. zmiňovaný součet všech faktur zákazníka za minulý rok). Pro představu je můžeme přirovnat k serverovým procesům.
Jeden WP má alokované pouze určité zdroje a nemůže tedy plně vytížit celý systém a omezit tak práci ostatních uživatelů.
WP je několik druhů, podle toho jaký úkol provádějí ( dialog, update, background, enqueue, spool ).
Message Server (MS)
Zajišťuje komunikaci mezi jednotlivými instancemi a přidělujeme jim přihlášené uživatele. Rozděluje tak zátěž na více aplikačních serverů. Message server je v systému právě jeden a běží na centrální instanci.
ABAP + JAVA instance
Detailní popis samostatné JAVA instance je na samostatnou kapitolu. Uvedu proto jen popis koexistence ABAPu a JAVY v rámci jedné instance.
(zdroj obrázku: www.sap.com)
Jak je vidět na obrázku, požadavky uživatele přicházející ze SAP GUI odbavuje přímo ABAP dispatcher dané instance. Požadavky přicházející z webového prohlížeče přijímá nejdřív ICM (internet communication manager) dané instance a po té je přiděluje buď ABAP nebo JAVA dispatcheru, podle druhu požadavku.
Komunikace mezi ABAP a JAVA work processy zajišťuje JCo (Java Connector).