Projekt

Obecné

Profil

Architektura » Historie » Verze 3

Marek Lovčí, 2020-04-07 09:43

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
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
15
h2. Reprezentace
16
17
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
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
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.
47
Jedná se o:
48
49
* PHP >= 7.2.5
50
* BCMath PHP Extension
51
* Ctype PHP Extension
52
* Fileinfo PHP extension
53
* JSON PHP Extension
54
* Mbstring PHP Extension
55
* OpenSSL PHP Extension
56
* PDO PHP Extension
57
* Tokenizer PHP Extension
58
* XML PHP Extension
59
60
h3. Databáze
61
62 3 Marek Lovčí
Aplikace na produkčním prostředí využívá databázového systému MySQL ve verzi 8.0.x.
63 2 Marek Lovčí
64
h2. Deployment
65
66
O specifikaci nasazení systému se jedná. Produkční servery poskytne UPM.
67
68
h2. Velikost a výkon
69
70
Očekávaná zátěž je cca 1000 uživatelů/den a nejvýše 200 uživatelů současně.
71
72
h3. Aplikační server
73
74
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.
75
76
* 2 CPU jádra
77
* 2 GB RAM
78
* HDD 5 GB
79
80
h4. Výpočet velikosti požadovaného diskového místa
81
82
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ě.
83
84
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.
85
86
*Výpočet 1*
87
88
Počet artefaktů: 300
89
Počet metadat na artefakt: 10
90
Velikost obrázku: 8.7 MB
91
92
8.7 MB * 300 + 8.7MB * 300 * 10 = 28.71 GB
93
94
*Výpočet 2*
95
96
Obrázky budeme ukládat ve velikosti o 50 % menší - cca 1150x1700 px
97
98
Počet artefaktů: 300
99
Počet metadat na artefakt: 10
100
Velikost obrázku: 2 MB
101
102
2 MB * 300 + 2 MB * 300 * 10 = 6.6 GB
103
104
*Výpočet 3*
105
106
Náhledová velikost.
107
108
Počet artefaktů: 300
109
Počet metadat na artefakt: 10
110
Velikost obrázku: 500 kB
111
112
500 kB * 300 + 500 kB * 300 * 10 = 1.65 GB
113
114
*Celkový výpočet*
115
116
Originální velikost obrázku: 2 MB
117
Náhledová velikost obrázku: 500 kB
118
119
Velikost aplikace: 500 MB
120
121
6.6 GB + 1.65 GB + 500 MB = 8.75 GB
122
123
Požadovaná velikost diskového místa: 10 GB.
124
125
h3. Další požadavky
126
127
*Předpokládaný IOPS (max):* 200
128
*Počet lan LAN:* 1
129
*Požadovaná latence sítě:* 100 ms
130
*Předpokládaný počet souběžně pracujících uživatelů (max):* 200
131
132
h4. Účel serveru
133
134
PHP webová aplikace pro prezentaci trvalé muzejní expozice.
135
136
h3. Databázový server
137
138
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.
139
140
h4. Minimální požadavky na hardware
141
142
* 2 CPU jádra
143
* 2 GB RAM
144
145
h4. Doporučené požadavky na hardware
146
147
* 4 CPU jádra
148
* 8 GB RAM
149
150
Tato konfigurace vzhledem k datové nenáročnosti aplikace nebude potřeba.
151
152 1 Marek Lovčí
h2. Kvalita
153 3 Marek Lovčí
154
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".
155
156
Dostupnost je požadována hlavně v návštěvních hodinách: úterý-neděle 10-20 hodin.
157
158
Upgrade aplikace by měl probíhat pokud možno automaticky pomocí Gitlab CI/CD.