Architektura » Historie » Verze 8
Marek Lovčí, 2020-04-30 06:57
1 | 1 | Marek Lovčí | h1. Architektura |
---|---|---|---|
2 | 2 | Marek Lovčí | |
3 | {{toc}} |
||
4 | |||
5 | h2. Úvod |
||
6 | |||
7 | h3. Účel |
||
8 | |||
9 | 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. |
||
10 | |||
11 | h3. Rozsah |
||
12 | |||
13 | 4 | Lucie Tauchenová | 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 architekta Jana Kaplického. |
14 | 2 | Marek Lovčí | |
15 | h2. Reprezentace |
||
16 | |||
17 | 6 | Marek Lovčí | 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í. |
18 | 2 | Marek Lovčí | |
19 | h2. Architektonické cíle a omezení |
||
20 | |||
21 | *Cíle* |
||
22 | |||
23 | * Přehlednost kódu |
||
24 | * Možnost rozšiřitelnosti pro aplikace z této aplikace odvozené |
||
25 | |||
26 | *Omezení* |
||
27 | |||
28 | Vyvíjíme zcela nový systém, jednoznačná architektonická omezení v našem případě ze zadání nevyplývají. |
||
29 | |||
30 | h2. Use-Case View |
||
31 | |||
32 | Viz dokument [[Model užití]] |
||
33 | |||
34 | h2. Technologie |
||
35 | |||
36 | h3. Jazyk |
||
37 | |||
38 | Jelikož se jedná o webovou aplikaci a šlo nám o snadnost nasazení, tak jsme se rozhodli pro jazyk PHP. |
||
39 | |||
40 | h3. Framework |
||
41 | |||
42 | 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. |
||
43 | |||
44 | Laravel používá 3 vrstvou architekturu MVC, bez výrazných jazykových nebo frameworkových specifik. |
||
45 | |||
46 | 7 | Marek Lovčí | !kaplicky-system-mvc.png! |
47 | |||
48 | 2 | Marek Lovčí | 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. |
49 | Jedná se o: |
||
50 | |||
51 | * PHP >= 7.2.5 |
||
52 | * BCMath PHP Extension |
||
53 | * Ctype PHP Extension |
||
54 | * Fileinfo PHP extension |
||
55 | * JSON PHP Extension |
||
56 | * Mbstring PHP Extension |
||
57 | * OpenSSL PHP Extension |
||
58 | * PDO PHP Extension |
||
59 | * Tokenizer PHP Extension |
||
60 | * XML PHP Extension |
||
61 | |||
62 | h3. Databáze |
||
63 | |||
64 | 3 | Marek Lovčí | Aplikace na produkčním prostředí využívá databázového systému MySQL ve verzi 8.0.x. |
65 | 1 | Marek Lovčí | |
66 | 6 | Marek Lovčí | h2. Struktura aplikace |
67 | |||
68 | !kaplicky-system-overview.png! |
||
69 | |||
70 | |||
71 | |||
72 | 2 | Marek Lovčí | h2. Deployment |
73 | |||
74 | O specifikaci nasazení systému se jedná. Produkční servery poskytne UPM. |
||
75 | |||
76 | h2. Velikost a výkon |
||
77 | |||
78 | Očekávaná zátěž je cca 1000 uživatelů/den a nejvýše 200 uživatelů současně. |
||
79 | |||
80 | h3. Aplikační server |
||
81 | |||
82 | 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. |
||
83 | |||
84 | * 2 CPU jádra |
||
85 | * 2 GB RAM |
||
86 | * HDD 5 GB |
||
87 | |||
88 | h4. Výpočet velikosti požadovaného diskového místa |
||
89 | |||
90 | 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ě. |
||
91 | |||
92 | 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. |
||
93 | |||
94 | *Výpočet 1* |
||
95 | |||
96 | Počet artefaktů: 300 |
||
97 | Počet metadat na artefakt: 10 |
||
98 | Velikost obrázku: 8.7 MB |
||
99 | |||
100 | 8.7 MB * 300 + 8.7MB * 300 * 10 = 28.71 GB |
||
101 | |||
102 | *Výpočet 2* |
||
103 | |||
104 | Obrázky budeme ukládat ve velikosti o 50 % menší - cca 1150x1700 px |
||
105 | |||
106 | Počet artefaktů: 300 |
||
107 | Počet metadat na artefakt: 10 |
||
108 | Velikost obrázku: 2 MB |
||
109 | |||
110 | 2 MB * 300 + 2 MB * 300 * 10 = 6.6 GB |
||
111 | |||
112 | *Výpočet 3* |
||
113 | |||
114 | Náhledová velikost. |
||
115 | |||
116 | Počet artefaktů: 300 |
||
117 | Počet metadat na artefakt: 10 |
||
118 | Velikost obrázku: 500 kB |
||
119 | |||
120 | 500 kB * 300 + 500 kB * 300 * 10 = 1.65 GB |
||
121 | |||
122 | *Celkový výpočet* |
||
123 | |||
124 | Originální velikost obrázku: 2 MB |
||
125 | Náhledová velikost obrázku: 500 kB |
||
126 | |||
127 | Velikost aplikace: 500 MB |
||
128 | |||
129 | 6.6 GB + 1.65 GB + 500 MB = 8.75 GB |
||
130 | |||
131 | Požadovaná velikost diskového místa: 10 GB. |
||
132 | |||
133 | h3. Další požadavky |
||
134 | |||
135 | *Předpokládaný IOPS (max):* 200 |
||
136 | *Počet lan LAN:* 1 |
||
137 | *Požadovaná latence sítě:* 100 ms |
||
138 | *Předpokládaný počet souběžně pracujících uživatelů (max):* 200 |
||
139 | |||
140 | h4. Účel serveru |
||
141 | |||
142 | PHP webová aplikace pro prezentaci trvalé muzejní expozice. |
||
143 | |||
144 | h3. Databázový server |
||
145 | |||
146 | 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. |
||
147 | |||
148 | h4. Minimální požadavky na hardware |
||
149 | |||
150 | * 2 CPU jádra |
||
151 | * 2 GB RAM |
||
152 | |||
153 | h4. Doporučené požadavky na hardware |
||
154 | |||
155 | * 4 CPU jádra |
||
156 | * 8 GB RAM |
||
157 | |||
158 | 5 | Marek Lovčí | Tato konfigurace vzhledem k datové nenáročnosti aplikace nebude potřeba. |
159 | 8 | Marek Lovčí | |
160 | h2. Popis uživatelského rozhraní |
||
161 | |||
162 | Uživatelské rozhraní je dodáno grafikem ze strany zákazníka. |
||
163 | |||
164 | !APLIKACE_UPM_kompletní.png! |