Druhy Architektur v AWS
S příchodem cloudu přicházejí i nové druhy architektur, se kterými se můžeme setkat. Různé druhy se hodí pro různé aplikace, a proto je správný výběr jedno z nejzásadnějších rozhodnutí které v cloudu musíme udělat. V tomto článku se společně podíváme, jaké druhy to jsou a na souvislosti mezi nimi.
Evoluce Architektur:
Provozování aplikací v cloudu má spoustu výhod. Abychom jich mohli co nejlépe využít, upouštíme od klasických monolitických aplikací a rozdělujeme aplikace do menších, od sebe oddělených částí.
Častý způsob, jak můžeme aplikaci v AWS rozdělit je užitím 3 – Tier Architektury. 3 – Tier Architektura rozděluje aplikaci na 3 vrstvy, kde každá vrstva plní svůj účel. 3 – Tier Architekturu lze implementovat jako klasický Monolit nebo jako Mikroslužby, které se používají čím dál častěji.
3 – Tier Architektura
3 – Tier je nejběžnější druh Architektury v AWS. Skládá se z prezentační, aplikační a datové vrstvy.
- Jednotlivé vrstvy lze škálovat jednotlivě
- Zvýšená integrita dat a zabezpečení
- Flexibilní ke změnám
Ačkoliv se výsledná podoba může lišit podle služeb které aplikace obsahuje, základ bývá velmi podobný. Následující diagram zobrazuje 3 – Tier aplikaci s EC2 a ELB:
3 – Tier aplikaci lze také implementovat například pomocí Kubernetes:
Základ je velmi podobný i v případě 3 – Tier aplikace pomocí Serverless:
Monolitická Architektura
V Monolitické Architektuře všechny procesy běží jako jediná služba. Využívá se v menších aplikacích kvůli její jednoduchosti. Nedokáže však plně využít potenciálu cloudu a má spoustu nevýhod:
- Nelze škálovat jednotlivé komponenty => $$$
- Jediný bod selhání
- Aplikace není flexibilní ke změnám:
- Při každé změně se musí postavit celá znovu
- Jakákoli změna ovlivní celou aplikaci => složitá inovace
Diagram níže zobrazuje vzorovou monolitickou aplikaci:
Mikroslužby
Mikroslužby jsou druh architektury, která se skládá z nezávislých služeb. Každá služba obsahuje jinou část celkového kódu a plní jiný účel. Skvěle se hodí pro provozování v cloudu.
- Služby lze nezávisle škálovat
- Selhání jedné služby neovlivní celou aplikaci
- Snadná inovace
- Znovu postavena musí být pouze služba, která podléhá změnám
Na diagramu níže lze vidět ukázkovou Architekturu Mikroslužeb se Serverless a EC2:
Synchronnost architektur
Synchronnost ovlivňuje, jak spolu jednotlivé části aplikace komunikují. Aplikace mohou komunikovat synchronně nebo asynchronně.
Synchronní Architektura
V Synchronní Architektuře služby, které odesílají data příjemcům čekají na odpověď.
- Všechny služby škálují společně -> vyšší náklady
- Během implementování změn je aplikace mimo provoz
- Vhodnější pro operace v reálném čase
Ukázková 3 – Tier Synchronní Architektura Mikroslužeb:
Asynchronní Architektura
V Asynchronní Architektuře služby, které odesílají data příjemcům nečekají na odpověď. Asynchronnosti lze docílit například užitím služby AWS SQS.
- Služby škálují nezávisle -> úspora nákladů
· Během implementování změn může aplikace zůstat v provozu
Vzorová 3 – Tier Asynchronní Architektura Mikroslužeb:
Event-Driven-Architektura (EDA)
EDA je další druh Asynchronní Architektury, kde spolu různé části aplikace komunikují odesíláním a příjímáním událostí. Na rozdíl od klasické asynchronní aplikace s AWS SQS, kde si příjemce získává data sám, v EDA příjemce reaguje na události.
- Sdílí vlastnosti asynchronní aplikace
Jakmile odesílatel zprávu odešle, už se nestará o to, jestli je zpracována ani nepotřebuje potvrzení o tom, jestli příjemce zprávu obdržel
V AWS existují 2 druhy událostí:
- S3 Event (Pouze pro S3)
- EventBridge (Pro všechny ostatní služby)
Následující diagram zobrazuje vzorové užití S3 Události, která volá AWS Lambda funkci:
- Služba S3 pomocí události reaguje na změnu stavu (např. vložení obrázku)
- S3 Událost spustí oddělenou Lambda funkci
- Lambda funkce obrázek zpracuje
Shrnutí:
V tomto článku jsme se podívali na některé druhy architektur, se kterými se můžeme v AWS setkat. Rozdělení aplikací na více částí nám umožňuje využít plného potenciálu cloudu a zvýšit spokojenost uživatelů. Základem většiny architektur v AWS je 3 – Tier Architektura, ke které můžeme přidávat další přizpůsobitelné architektury.