Podnikové aplikace s mobilními klienty a podporou IoT – jak vyvinout aplikaci pro libovolné zařízení jak tato zařízení obsloužit?
The times they are a-changin’… časy se mění
Bývávalo zcela obvyklé, že většina počítačových úloh, se kterými se běžný uživatel setkal, byla řešena na osobním počítači, třeba s připojením na vzdálený datový server. Jenže časy se mění. Dnes se používají nejen datové servery, ale i služby a datová úložiště v cloudech a navíc se data sbírají přes internet z nejrůznějších vzdálených zařízení a senzorů. Běžný uživatel se změnil na „chytrého uživatele. Nosí v kapse smartphone, zařízení s nevídaným výpočetním výkonem a touží úlohy řešit nejen u stolu na PC, ale i na těchto chytrých telefonech či tabletech, na cestách, prostě kdykoli je to potřeba. Soudobé řešení počítačových úloh musí zvládat obsloužit různorodou směsici zařízení, operačních systémů, komunikačních protokolů a datových formátů. Jediná aplikace, která by toto vše zvládla, by byla složitá, hardwarově náročná a obtížně udržovatelná. Řešením je využití tzv. vícevrstvé architektury, tady rozdělení aplikace na funkční celky (vrstvy), které se specializují na určitou oblast: správa dat, manipulace s daty, integrace nebo komunikace s uživatelem pořizujícím nebo využívajícím data.
Bez dat to nejde
Jen málo aplikací se dnes obejde bez přístupu k informacím uloženým v databázových strojích, ať už tradičních relačních, nebo nově nastupujících NoSQL. Zatímco u stolních počítačů a notebooků není zásadním problémem komunikace přes odpovídající klientské knihovny, pro mobilní zařízení je tento přístup často nepoužitelný. Pro mnoho databází není databázový klient pro mobilní operační systémy (Android, iOS apod.) k dispozici. Nebo je přímý přístup vyhodnocen (zcela oprávněně) jako příliš velké bezpečnostní riziko. Další komplikací je, že s aplikací, která se připojuje ke vzdálenému serveru, je možné pracovat jen tehdy, pokud je dostupná některá varianta datových přenosů.
Existují samozřejmě i databázové stroje specificky navržené pro mobilní nasazení. Populární je v této oblasti například hojně používaná SQLite. Výhodou je nízká náročnost (jak z pohledu výpočetního výkonu, tak nároků na diskový prostor) a velmi jednoduchá instalace (typicky jde o několik málo souborů, které se na zařízení nakopírují spolu s aplikací). Jde však o takzvané lokální databáze, které spravují data přímo na zařízení. Zde se obejdeme bez datových přenosů, ale pro podnikové nasazení je to samozřejmě velmi nepraktické řešení, jelikož například neřeší jakékoli sdílení dat. Nebo jej řeší jen toporně.
Zajímavou variantou tak může být hybridní přístup, kdy je část dat uložena lokálně, a k centrální databázi se přistupuje jen v případě potřeby. Byť je tato cesta nejelegantnější, není rozhodně nejjednodušší. Vývojář musí vyřešit replikaci či synchronizaci dat mezi jednotlivými mobilními klienty, a k tomu i s jednou nebo více centrálními databázemi.
Víceúrovňová architektura databázových technologií použití významně zjednodušuje a hlavně zabezpečuje. Komunikace s databázovými stroji se v tomto uspořádání odehrává na straně serveru. Ten je zpravidla mnohem výkonnější, fyzicky zabezpečený a lze zde instalovat potřebné klientské knihovny. Jednotlivé operace se provádějí přes publikované služby a klientské aplikace tak nemají přímý přístup k datům.
Umístění aplikační logiky na serveru pak zjednodušuje údržbu celého řešení, protože se lépe aktualizuje server než všechna zařízení, a navíc minimalizuje nároky na datové přenosy, protože zpracování dat probíhá ideálně pouze na serveru.
Každý, kdo je s tím obeznámen, k tomu ihned řekne: „To my přece víme, aplikační servery jsou ale drahé, a tím pádem pro menší podniky těžko dostupné. Jsou často i složité a jejich využití vyžaduje velké zkušenosti.“ Tak, a teď babo raď, jak na to, když bychom chtěli zavádět něco, čemu se kdysi říkalo BYOD, ale následně to „umřelo“ kvůli hrůze podniků zpřístupnit svá data možným záškodníkům. Jak na to?
Co třeba vyzkoušet Embarcadero RAD Server?
RAD Server je aplikační server, který poskytuje takzvaně „na klíč“ robustní provozní platformu pro nasazení aplikačních služeb vytvořených v nástrojích Delphi nebo C++Builder. Od konkurenčních produktů se liší tím, že je zaměřen na vývojáře aplikací typu klient/server, kterým nabízí maximálně jednoduchou cestu pro přenesení hotových projektů do prostředí víceúrovňové architektury. RAD Server je navržen tak, aby vývojáři mohli nadále používat stejný jazyk, vývojové prostředí, oblíbené komponenty i zažité postupy, na které jsou zvyklí z lokálních nebo aplikací klient/server. Mimo to však přináší i řadu technologií, které řeší nové možnosti světa cloudů, mobilních zařízení nebo IoT.
RAD Server nabízí jednoduché a přitom stabilní a spolehlivé prostředí, které vývojářům pracujícím v nástrojích Delphi a C++Builder usnadňuje umístění stávajících i nových aplikací a jejich provoz ve formě služby. RAD Server se postará nejen o správu uživatelů, zabezpečení nebo řešení zasílání zpráv (push notification), ale například i o pokročilé analytické výstupy poskytující informace pro další vylepšování aplikace. Vývojáři tak mohou bez zásadních zásahů do kódu přenést aplikační logiku na RAD Server a následně ji zpřístupnit pro tlusté i tenké klienty na tradičních PC či na mobilních zařízeních.
Velkou předností RAD Serveru je technologie FireDAC. Za prvé je většině vývojářů a programátorů pracujícím s prostředími Delphi nebo C++Builder důvěrně známá, za druhé pak nabízí některé pokročilé vlastnosti, které šetří čas a nervy. Z těch hlavních je třeba zmínit podporu širokého spektra databázových platforem a odstínění vývojáře od jejich vzájemných odlišností. Pokud například některý z databázových strojů některou důležitou vlastnost nepodporuje, FireDAC ji emuluje. Zároveň nabízí i vlastní makrojazyk, díky kterému je možné psát podmíněné SQL příkazy tak, aby se pro jednotlivé platformy interpretovaly syntakticky správně. FireDAC navíc nabízí i hromadné operace, skriptování, práci s tabulkami v paměti nebo podporu jednoduchých operací ETL pro integraci dat z podnikových systémů. Pro víceúrovňové aplikace je pak důležitá schopnost zapisovat a číst data ve formátu JSON (JavaScript Object Notation) nebo BSON (tedy binární JSON).
Jak se moje aplikace přenesou do RAD Serveru?
Asi nejčastější otázkou, kterou si bude klást většina vývojářů, je jak přenést na server již existující aplikace. Zde záleží na přístupu, který byl při vývoji aplikace použit. Na RAD Server lze pohodlně umístit dříve používaný kód v jazyce Pascal nebo C++. Jedinou podmínkou je, aby šlo o kód oproštěný od přímých vazeb na uživatelské rozhraní, jinými slovy jde o vizuální prvky pro ovládání aplikace. RAD Server je určen výhradně pro nasazení programových modulů. O zobrazení (prezentaci) dat se pak musí postarat klientská část.
Funkce a procedury mohou být zpřístupněny jako koncové body technologie REST (REST Endpoints). Je použit protokol HTTP a funkčnost služeb RAD Serveru je poskytována pomocí volání serverových metod GET, PUT, POST a DELETE. Metoda GET slouží k načtení dat, PUT je určena pro jejich aktualizaci, POST pro vkládání a DELETE pro odstranění existujících záznamů. Jednodušší to už být nemůže a zvládne to každý programátor, i elév. Kromě oblastí řešících specifickou problematiku zákazníka, pro kterého je aplikace vyvíjena, existuje i řada obecných (obslužných) funkcí, které jsou přirozeně považovány za standardní součást řešení.
Jenže standard-nestandard, stále jde o nezanedbatelné penzum práce. Patří sem například správa uživatelů, řízení přístupových práv, nebo zasílání zpráv na klientská zařízení (push notifikace). RAD Server má výše uvedené již funkční a zabudované. Informace o uživatelích, uživatelských skupinách, instalovaných službách a přidělených oprávněních, toto vše automaticky udržuje v zabezpečené relační databázi (použit je server InterBase, jehož licence je součástí dodávky).
Kromě zabezpečení má tento přístup ještě další nezanedbatelnou výhodu. Umožňuje totiž přístup k podrobným informacím o využívání jednotlivých služeb. Aplikace vytvořené v Delphi nebo C++Builderu mohou být navíc vybaveny rozšířením AppAnalytics. Sledovat tak lze i jakým způsobem koncoví uživatelé pracují s klientskými aplikacemi. Data lze přehledně zobrazit dle uživatelů, uživatelských skupin a dalších atributů. K dispozici jsou jak aktuální, tak historická data pro srovnání, analýzy či odhad budoucích trendů. Vývojáři mohou díky tomu získat důležitou zpětnou vazbu, kterou lze využít k optimalizaci a dalšímu vylepšování celého řešení.
Ještě nepoužíváte IoT?
Je těžké, ne-li nemožné sledovat překotný vývoj, který oblast informačních technologií prožívá. Společným jmenovatelem prakticky všech diskutovaných novinek je automatizace. Nezáleží, zda je motivována úsporou nákladů, větším pohodlím pro uživatele či bezpečností. Automatizace se již zdaleka netýká pouze výroby, ale téměř každé oblasti lidské činnosti. Přibývá stále více zařízení, která komunikují přes internet, sbírají data, nebo reagují na určité situace. Přichází doba IoT.
RAD Server spolu s vývojovými prostředími Delphi nebo C++Builder poskytuje prostředky pro začlenění zařízení IoT do podnikových řešení. Jejich data však v drtivé většině případů nelze zpracovávat, jelikož jsou připojitelná pomocí jiných protokolů, než přímo přes internet. Řešení tak musí často obsahovat mezivrstvu (IoT EdgeWare). Jde o funkční celek složený z hardwaru (tedy prakticky libovolného počítače, tabletu nebo mobilního telefonu) a na něm instalované aplikace, která zprostředkovává komunikaci s koncovými zařízeními kategorie IoT. V praxi může jít o různá průmyslová čidla, majáčky (Beacons), zařízení typu SmartHome, nebo například nositelnou elektroniku a čidla pro sledování zdraví.
Struktura předávaných informací se liší dle typu koncového zařízení a použitého protokolu. Jak Delphi, tak C++Builder přinášejí prostřednictvím svého aplikačního úložiště GetIt sadu přístrojových rozhraní s názvem ThingConnect. Spolu s dalšími komponentami tak vývojářům přináší ucelenou architekturu pro připojení zařízení IoT (IoT Smart Connectivity Framework) s vestavěnou podporou Z-Wave nebo Bluetooth Low Energy.
Samostatnou zmínku si zaslouží aplikační rámec Beaconfence, který zjednodušuje vývoj a nasazení orientačních a obchodně marketingových řešení postavených na stále populárnější technologii hlásičů polohy, jinými slovy majáčků (Beacons). Beaconfence obsažený v RAD Serveru pomáhá vývojářům navrhnout ideální rozmístění majáčků a poskytuje aparát pro výpočty spojené s polohou mobilního klientského zařízení jak vůči jednotlivým majáčkům, tak určeným zónám, které lze za pomoci majáčků vytýčit.
Nikterak přitom neomezuje vývojáře ve volbě konkrétních zařízení, protože podporovány jsou všechny tři aktuálně používané standardy iBeacon, AltBeacon a Eddystone. Jednoduše je tedy možno psát aplikace přizpůsobující své chování okamžité poloze koncového zařízení.
To bych tedy chtěl vidět!
Podobně jako jiné softwarové produkty si lze vyzkoušet i RAD Server. Vývojové nástroje společnosti Embarcadero (Delphi, C++Builder či RAD Studio) v edici Enterprise a vyšší obsahují kromě všech nástrojů potřebných pro návrh aplikací připravených pro provoz v prostředí RAD Serveru i RAD Server pro pět (5) uživatelů, určený právě pro účely testování. Tyto nástroje rovněž umožňují tvorbu příslušných klientských aplikací a jejich překlad pro různé verze operačních systémů Windows, Android, MacOS X nebo iOS.