Co usnadňuje DDS? Část 2: Vývoj
Často se ve spojení s DDS používá pojem middleware.
Což si můžeme představit jako vrstvu, mezi aplikacemi a operačním systémem, která zabezpečuje komunikaci mezi všemi částmi distribuovaného systému.
Na straně aplikací poskytuje jednotné rozhraní, aby se při vývoji nemuseli starat na které platformě (operační systém, architektura procesoru) je aplikace nasazena.
Middleware (tedy i DDS) z pohledu aplikací umožňuje zjednodušit jejich vývoj tím, že vývojáři se mohou soustředit na aplikační logiku a nemusí se tolik starat o sdílení dat mezi komponentami, které může být v distribuovaných systémech složité.
To co umí middleware nemusím řešit na aplikační úrovni. Tím se mi aplikace zjednoduší.
Tuto definici a zjednodušení komunikace však umožňuje mnoho komunikačních protokolů nebo technologií. MQTT, AMQP, gRPC nebo i Apache Kafka. Prostě si projdu příklady, použiji knihovnu a komunikuji.
Výhody:
• Nezávislost na platformě a programovacím jazyku. – Když změní hardware, kód se mi nemění (neřeším sockety, mám rozhraní na vyšší úrovni abstrakce – které mě to překryje)
• Méně kódu které se týká konektivity – vede k méně chybám.
• Využívám vlastnosti komunikačního protokolu, nebo middlewaru.
Co může DDS vsadit do hry?
• Data – centric – data jsou interface, tzn. nemusím řešit co s nimi kdo udělá a neřeším API pro přístup k datům. Nemusím vědět, jaké funkčnosti aplikace provádějí a rozšiřování systému je tak jednodušší, protože nemám mnoho závislostí mezi aplikacemi.
• Publish – subscribe – kdo chce data, tak se k jejich odběru přihlasí, nemusím manuálně propojovat přes IP adresy poskytovatele a příjemce dat. Řeší adresování, vyhledávání.
• Vlastnosti DDS, které nemusím řešit v aplikaci:
○ Protokol pro sdílení dat a navazování spojení, spolehlivost, správa konfigurace QoS, caching a persistance, bezpečnost, a další.
○ Tolerance k chybám – detekuje přítomnost aplikací, detekuje zpoždění zpráv, umožňuje automatické nahrazení aplikace poskytující data při jejím neodpovídání jinou aplikací,
○ Škálovatelnost použitím multicastu – sdílení dat není ovlivněno velikostí systému.
○ Není nutnost se starat o pořadí spouštěných aplikací.
○ Filtrování dat už na úrovni middlewaru – aplikace nedostanou data, která nepotřebují.
○ Usnadňuje přístup k datům – serializace a deserializace. Protože na základě schémutu jsou vygenerován kód pro přístup k datům (stejně jako se to řeší třeba u protocolbufferu).
• Externí konfigurace způsobu sdílení dat pomocí QoS
○ Čistší kód.
§ Konfigurace je oddělena od kódu
§ Konfiguraci můžu jendoduše sdílet mezi aplikacemi
○ Urychluje vývoj
§ Změnou QoS nemusím znovu sestavovat aplikaci
○ Flexibilita v nasazení
§ Mohu měnit QoS podle dostupnosti zdrojů v daném použití
○ Umožňuje přenositelnost mezi implementacemi
§ Nemusím mít kód závislý na rozšířeních dané implementace. Nehrozí pak tolik problém podobný jako u DB, kdy jsou v základu implementace interoperabilní (jako SQL u DB) ale každá má různé funkce, které interoperabilní nejsou (tzn. například přechod z komerční na opensource nemusí být lehký).
• Na druhou stranu, když QoS nastavíte špatně, tak se můžete dostat do problémů se zahlcením sítě. A když je nebudete mít nastaveny kompatibilně mezi aplikacemi (nabídka poptávka), tak se aplikace ani neuvidí. Ve složitých případech, kdy potřebujete ovlivňovat mnoho konfiguračních parametrů, které se vzájemně se ovlivňují, tak se do toho můžete zamotat.
Postup vytváření aplikací využívajících DDS pro komunikaci je pak následující:
• Vytvoření datového modelu pomocí IDL.
• Použití aplikace pro vygenerování datových tříd pro daný programovací jazyk.
• Vytvoření aplikaci.
• Přilinkování platformě závislých knihoven – Operační systém (Android, Windows, Linux), architektura (ARM, 64bit), compiler (GCC, MinGW, Visual Studio).
• Definice parametrů komunikace pomocí konfigurace QoS parametrů.
Z pohledu vytváření systémů je tak DDS díky svým vlastnostem velmi vhodná pro vytváření systémů založených na microslužbách.
Máte-li k vývoji DDS aplikací nějaké dotazy, tak pište co vás zajímá do komentářů nebo se přihlašte do skupiny DDS v Akci na Linkedinu https://www.linkedin.com/groups/13903384/.
Zajímá-li vás technologie Data Distribution Service™ (DDS) , tak se přihlaste to skupiny DDS v Akci (LinkedIn).