Návrh architektury moderních aplikací je tvrdá práce a návrh solidního datového modelu pro moderní aplikace je jedna z nejobtížnějších – ale jde o nejdůležitější část architektury moderních aplikací.
Chyba při vytváření vhodné datové architektury může způsobit selhávání aplikací mnoha nešťastnými způsoby – počínaje problémy s výkonem, přes problémy s integritou dat, nezávislostí dat a bezpečností dat až po problémy se škálovatelností. Špatná architektura dat může být pro vaši aplikaci (i vaši firmu) pohromou.
Vytvoření vhodné datové architektury je kriticky důležité pro dlouhodobý úspěch všech moderních architektur. Při návrhu architektury dat vaší aplikace i jejím přepracování vám může pomoci pět následujících pravidel pro moderní aplikace.
Použijte vhodný typ databáze
První a nejdůležitější rozhodnutí při návrhu architektury vašich dat je volba vhodného typu databáze potřebné k ukládání a přístupu k datům. Budete tedy potřebovat:
- Ukládání vysoce strukturovaných dat, nebo dat s prostou hodnotou?
- Trvalé uchování dat, nebo jen uchování po krátkou dobu?
- Přístup k datům náhodně, nebo sekvenčně?
- Použití pevného schématu, flexibilního schématu, nebo jednoduchý plochý soubor?
- Použití relační databáze podporující dotazy SQL?
Odpovědi na uvedené otázky jsou nezbytné při rozhodování o vhodném typu databáze. Podle odpovědi na uvedené otázky si vyberete typ databáze – databázi SQL, úložiště pro ukládání prostých hodnot, mezipaměť cache umístěnou v paměti, úložiště jednoduchých objektů nebo úložiště vysoce strukturovaných dat.
Typ vybrané databáze pak určí rozsah schopností, které může databáze mít, a jak dobře bude podporovat fungování vaší aplikace. Věci tak neoddělitelné od vaší aplikace jako stanovení požadavků na škálovatelnost a dostupnost jsou významně ovlivněny právě volbou databáze.
Ukládejte data na vhodném místě
Ošidně jednoduchá, ale důležitá otázka je, kde by měla data ukládat. V závislosti na datech a aplikaci potřebujete ukládat data prostřednictvím uživatelského rozhraní aplikace, nebo back-endu? Můžete ukládat data místně vzhledem ke spotřebiteli, nebo je sdílet s mnoha dalšími spotřebiteli?
Většina dat je uložena v backendu. Některá data se však musí uchovávat v prostředí edge či u klienta. Uložení dat v místě uživatelského rozhraní je často potřebné k optimalizaci výkonu, dostupnosti, spolehlivosti a škálovatelnosti.
Škálování už od počátku
Moderní aplikace musí umožňovat škálování, aby se dokázaly přizpůsobit rostoucím potřebám. Platí to pro všechny firmy a pro všechny aplikace.
Absolutně nejtěžší částí tvorby aplikace, která umožňuje škálování podle rostoucích potřeb, je škálování úložiště dat. Ať už je to ve smyslu množství ukládaných dat pro rostoucí zákaznickou základnu, nebo umožňující současné využití aplikace větším počtem lidí bez snížení výkonu, je to obtížný úkol, pokud ho neplánujete již od počátku.
Přesto se však zdá, že většina aplikačních architektur považuje škálování dat za vedlejší požadavek, který lze řešit později. Vývojáři aplikací se tím zabývají až po navržení architektury hlavní aplikace.
Nucená pozdější integrace škálování do datové architektury je ale extrémně obtížnou úlohou a její obtížnost roste s rostoucím objemem dat.
Zdaleka nejsnadnější je vestavět škálovatelnost již na počátku, tedy dříve, než začne být škálovatelnost aplikace potřebná. Odkládání může zvýšit náročnost škálování nebo jej dokonce zcela znemožnit, pokud nedojde k významnému refaktoringu dat.
Distribuce dat napříč službami
Řada cloudových odborníků doporučuje centralizaci dat aplikace jako vhodný model pro správu velkého objemu dat pro velké aplikace. Centralizací dat, jak argumentují, se usnadňuje použití strojového učení a další pokročilé analýzy, aby bylo možné získávat z dat více užitečných informací.
Tato strategie je však mylná. Centralizovaná data totiž neumožňují snadné škálování. Nejefektivnějším způsobem, jak umožnit škálování dat, je jejich decentralizace a ukládání v jednotlivých službách, ke kterým data patří.
Vaše aplikace, pokud se skládá z desítek nebo stovek distribuovaných služeb, uloží údaje v desítkách nebo stovkách distribuovaných míst.
To umožňuje snadnější škálování a podporuje úplný model vlastnictví služby, který umožňuje vývojovým týmům pracovat více nezávisle a podporuje i robustnější SLA mezi službami. To podporuje služby s vyšší kvalitou, zvyšuje to bezpečnost provádění změn a efektivitu prostřednictvím rozmístění.
Ale co když vaše firma potřebuje dělat analýzy nebo využít strojové učení pro všechna taková data? I v takovém případě se doporučuje zde popsaný model distribuovaných dat. Aby však byla data využitelná pro analýzy a strojové učení, bude potřeba odeslat kopii relevantních dat do backendového systému datového skladu.
V tomto systému datového skladu je pak nutné data strukturovat způsobem vhodným pro vaše analytické záměry a využít tuto jejich verzi pro analýzy a algoritmy strojového učení. Tato verze v datovém skladu je oddělená a odlišná od vašich aplikačních dat, která jsou stále uložena v rámci jednotlivých služeb.
Distribuujte data geograficky
Nakonec stanovte, kdo bude data využívat a kde budou geograficky rozmístěná. Narůstá důležitost určení míst dat a uživatelů, protože globální podnikání vytváří zvýšenou příležitost, zatímco restrikce pro správu regionálních dat ztěžují správu globálních dat.
Před vytvořením datové architektury je potřeba zodpovědět následující klíčové otázky:
- Je důležité, aby byla data dostupná globálně, nebo bude pro vaši firmu důležitější regionální verze? Chcete například stejná, nebo různá data pro USA a pro Německo? U mnoha aplikací je důležité využívat kombinaci obou modelů a taková odpověď je přijatelná, pokud víte, jaká data mají být globální a jaká mají být regionální.
- Existují regionální omezení týkající se toho, jaká data můžete ukládat a kde je můžete ukládat? Některé lokality mají omezení, která nedovolují přenos dat zákazníků do jiné země, než kde se nachází zákazník. Jiné zase mají omezení, jaká data je povoleno přenášet přes hranice země či regionu. Některé oblasti mají přísnější omezení pro ochranu osobních údajů. Jaká omezení pro data platí pro jaké části vašich dat?
- Pro data, která jsou sdílená pro více regionů, jak důležité je, aby se v každém regionu používala stejná data? Jinými slovy, je potřebné, aby se data mezi regiony přesně synchronizovala? Různé modely vytvářejí pro vaše data různé požadavky. Model závislé konzistence má velmi odlišné výkonnostní charakteristiky, než model ACID, model s transakční integritou.
Odpovědi na tyto otázky budou určovat, zda budete poskytovat globální nebo regionální data, kdy mohou být data použita a kdy ne, a kdy a jak synchronizovat data mezi regiony.
Datová architektura je důležitou součástí návrhu vysoce škálovatelné, vysoce dostupné a globálně dostupné moderní aplikace. Chyby ve vaší datové architektuře mohou způsobit problémy se škálováním, dostupností a dokonce s nedodržením předpisů.