Architektura » Historie » Revize 4
Revize 3 (Marek Lovčí, 2020-04-07 09:43) → Revize 4/13 (Lucie Tauchenová, 2020-04-24 11:44)
h1. Architektura {{toc}} h2. Úvod h3. Účel Tento dokument poskytuje komplexní architektonický přehled o systému a pomocí řady různých architektonických pohledů zobrazuje různé aspekty systému. Jeho cílem je zachytit a předat významná architektonická rozhodnutí, která byla v systému učiněna. h3. Rozsah Tento dokument softwarové architektury poskytuje architektonický přehled o webové aplikaci pro Uměleckoprůmyslové museum v Praze (UPM). Webová aplikace je vyvýjena týmem MERLOT na předmětu KIV/ASWI na KIV FAV ZČU za účelem zatraktivnění a zpřístupnění knižního fondu z pozůstalosti pozústalosti architekta Jana Kaplického. h2. Reprezentace v tomto dokumentu není popsána žádná konkrétní implementace. Jedná se převážně o soubor pohledů na architektonické řešení; "Use case", logický model, datový model a model nasazení. h2. Architektonické cíle a omezení *Cíle* * Přehlednost kódu * Možnost rozšiřitelnosti pro aplikace z této aplikace odvozené *Omezení* Vyvíjíme zcela nový systém, jednoznačná architektonická omezení v našem případě ze zadání nevyplývají. h2. Use-Case View Viz dokument [[Model užití]] h2. Technologie h3. Jazyk Jelikož se jedná o webovou aplikaci a šlo nám o snadnost nasazení, tak jsme se rozhodli pro jazyk PHP. h3. Framework Dále jsme se rozhodli pro standard v oblasti vývoje webových aplikací - framework Laravel ve verzi 7.x, dokumentace je dostupná na adrese https://laravel.com/docs/7.x. Laravel používá 3 vrstvou architekturu MVC, bez výrazných jazykových nebo frameworkových specifik. Použitím frameworku vznikají kriteriální omezení na PHP server. Jejich výčet je dostupný na adrese https://laravel.com/docs/7.x#server-requirements. Jedná se o: * PHP >= 7.2.5 * BCMath PHP Extension * Ctype PHP Extension * Fileinfo PHP extension * JSON PHP Extension * Mbstring PHP Extension * OpenSSL PHP Extension * PDO PHP Extension * Tokenizer PHP Extension * XML PHP Extension h3. Databáze Aplikace na produkčním prostředí využívá databázového systému MySQL ve verzi 8.0.x. h2. Deployment O specifikaci nasazení systému se jedná. Produkční servery poskytne UPM. h2. Velikost a výkon Očekávaná zátěž je cca 1000 uživatelů/den a nejvýše 200 uživatelů současně. h3. Aplikační server Vycházíme z Quora odpovědi na minimální požadavky frameworku Laravel https://www.quora.com/What-is-the-minimum-memory-to-host-Laravel-Project. * 2 CPU jádra * 2 GB RAM * HDD 5 GB h4. Výpočet velikosti požadovaného diskového místa Nedílnou součástí aplikace je veliké množství obrázků, které je nutné držet na aplikačním serveru. Ty budou komprimované, musíme však počítat s tím, že je bude nutné uchovávat ve vysoké kvalitě. Jako ukázkovou sadu jsme dostali 14 obrázků v celkové velikosti 123 MB. Tedy přibližně 8.7 MB na obrázek ve velikosti 2300x3400 px. *Výpočet 1* Počet artefaktů: 300 Počet metadat na artefakt: 10 Velikost obrázku: 8.7 MB 8.7 MB * 300 + 8.7MB * 300 * 10 = 28.71 GB *Výpočet 2* Obrázky budeme ukládat ve velikosti o 50 % menší - cca 1150x1700 px Počet artefaktů: 300 Počet metadat na artefakt: 10 Velikost obrázku: 2 MB 2 MB * 300 + 2 MB * 300 * 10 = 6.6 GB *Výpočet 3* Náhledová velikost. Počet artefaktů: 300 Počet metadat na artefakt: 10 Velikost obrázku: 500 kB 500 kB * 300 + 500 kB * 300 * 10 = 1.65 GB *Celkový výpočet* Originální velikost obrázku: 2 MB Náhledová velikost obrázku: 500 kB Velikost aplikace: 500 MB 6.6 GB + 1.65 GB + 500 MB = 8.75 GB Požadovaná velikost diskového místa: 10 GB. h3. Další požadavky *Předpokládaný IOPS (max):* 200 *Počet lan LAN:* 1 *Požadovaná latence sítě:* 100 ms *Předpokládaný počet souběžně pracujících uživatelů (max):* 200 h4. Účel serveru PHP webová aplikace pro prezentaci trvalé muzejní expozice. h3. Databázový server Vycházíme z minimálních požadavků databáze MySQL dostupných na adrese https://dev.mysql.com/doc/mysql-monitor/4.0/en/system-prereqs-reference.html. h4. Minimální požadavky na hardware * 2 CPU jádra * 2 GB RAM h4. Doporučené požadavky na hardware * 4 CPU jádra * 8 GB RAM Tato konfigurace vzhledem k datové nenáročnosti aplikace nebude potřeba. h2. Kvalita Ze strany architektury nejsou kladeny žádné zvláštní požadavky na kvalitu aplikace. Aplikace není infrastrukturně kritická, nejsou tedy požadavky ani z hlediska "high availability". Dostupnost je požadována hlavně v návštěvních hodinách: úterý-neděle 10-20 hodin. Upgrade aplikace by měl probíhat pokud možno automaticky pomocí Gitlab CI/CD.