• Nebyly nalezeny žádné výsledky

Architektura platformy Docker (Docker Inc. 2021a)

34 Docker využívá symboliky kontejnerů převážených na nákladních lodích. Obsah těchto lodních kontejnerů je též izolován od obsahu ostatních kontejnerů.

35 Hostitel, respektive počítač, na kterém je Docker provozován.

Dále jsou popsány jednotlivé prvky architektury platformy Docker, která je ilustrována na obrázku (viz Obrázek 16) výše.

Docker host

Host je hostitelské zařízení, tedy například osobní počítač či server s nainstalovaným operačním systémem. Docker lze nainstalovat na operační systémy Windows 10, Windows server 2016 a 2019, macOS 10.14 a vyšší, Linux distribuce CentOS, Debian, Fedora, Raspbian, Ubuntu a další. Na zařízeních s operačním systémem Windows lze provozovat Windows a Linux kontejnery. Na zařízeních s Linuxem či macOS lze provozovat pouze Linux kontejnery. V této práci tedy bude využito Linux kompatibilních kontejnerů k maximalizaci znovupoužitelnosti řešení. (Docker Inc. 2021a; Programming with Mosh 2021)

Docker daemon

Docker je postavený na architektuře klient-server. Docker daemon je součást této architektury, jež komunikuje s klientem, vykonává požadované příkazy a spravuje objekty jako například níže zmíněný image či container. Komunikace probíhá prostřednictvím REST API. (Docker Inc. 2021a)

Docker client

Jedná se o klienta, prostřednictvím kterého uživatel komunikuje s výše zmíněným daemonem. Klienta uživatel ovládá skrze příkazovou řádku či grafické desktopové rozhraní.

Klient může komunikovat s více daemony. (Docker Inc. 2021a)

Docker registry

Docker registry je úložiště, kde jsou ukládány images, česky obrazy, popsané níže, které jsou následně distribuovány. K účelům distribuce slouží Docker Hub36. Zde mají uživatelé přístup ke zveřejněným obrazům. Ke stažení obrazu slouží příkaz docker pull. Následně lze obraz spustit příkazem docker run. Uživatelé mohou také do registru nahrávat své obrazy příkazem docker push. (Docker Inc. 2021a)

Image

Image, dále česky obraz, je v podstatě soubor obsahující instrukce k vytváření kontejneru.

Tyto obrazy lze vytvářet či stahovat připravené z registru. Typicky je obraz složením několika dalších obrazů. Pro lepší představu je dále uveden příklad. Základem technologické architektury může být Linuxová OS distribuce Ubuntu, ale pro spuštění skriptů dále

36 https://hub.docker.com/

využijeme obrazu NodeJS a pro uložení dat obraz MongoDB. Nové obrazy se definují jednoduchou syntaxí uvnitř souboru nazývaného Dockerfile. (Docker Inc. 2021a)

Container

Kontejner je instancí obrazu. Lze ho spouštět, pozastavit, přesunout, smazat, připojit k síti či úložišti. Spuštěný kontejner je počítačový proces. Defaultně jsou kontejnery izolovány od ostatních kontejnerů. Tato vlastnost umožňuje využívat různé verze softwaru v jednotlivých kontejnerech. Řeší to problémy, kdy například jedna aplikace vyžaduje NodeJS verze 14 a jiná aplikace NodeJS verze 10. Na jednom hostitelském počítači tak můžeme provozovat obě verze NodeJS v kontejnerech současně. Obdobou kontejnerů pro tyto případy užití jsou virtuální stroje. Oproti virtuálním strojům však mají Docker kontejnery výhody.

Provozování virtuálního stroje vyžaduje kompletní instalaci operačního systému, což má za následek vysoké požadavky na úložiště a výkon hardwaru. Na rozdíl od toho kontejnery zabírají výrazně méně místa na disku, vyžadují méně výpočetního výkonu a nevyžadují kompletní instalaci OS, jelikož využívají OS hostitele. (Docker Inc. 2021a; Programming with Mosh 2021)

4.2.2 Elastic Stack

Elastic Stack nebo také jinak ELK Stack, je souborem tří open-source projektů Elasticsearch, Logstash a Kibana. Níže jsou popsány nástroje Elasticsearch a Kibana, které jsou komponentami výsledného navrhovaného systému.

Elasticsearch

Elasticsearch je vyhledávací a analytický engine určený pro všechny typy dat, tedy jak pro strukturovaná, tak i nestrukturovaná data. Data lze ukládat, indexovat a následně provádět dotazování a analyzování nad těmito daty v téměř reálném čase. Ačkoliv se jedná o vyhledávací engine, Elasticksearch nabízí širokou škálu případů užití. Může být využit jako vyhledávač na webové stránce, systém pro ukládání a reportování logů, analytický nástroj, úložiště a mnoho dalších. V této práci bude Elasticsearch využit jako úložiště a analytický nástroj. V případě ukládání dat se jedná o NoSQL databázi, kde jsou data uložena ve formě dokumentů, jež mají strukturu formátu JSON. Díky struktuře fulltextového indexu jsou dotazy prováděny velice rychle během jedné sekundy. Dotazy mohou mít strukturovanou podobu obdobnou dotazům jazyka SQL či podobu fulltextových dotazů. Analýzy lze provádět prostřednictvím agregačních dotazů, které jsou díky datové struktuře stejně rychlé jako dotazy vyhledávací. Elasticsearch podporuje český jazyk a díky tomu může být využit k analýze česky psaných textů. (Elasticsearch B.V. 2021a) Vzhledem k tomu, že je tento nástroj designován k fulltextovému vyhledávání, je vhodný pro případ užití v této práci, tedy ke zpracování a analýze textů smluv a dalších dokumentů.

Kibana

Kibana je nástroj, který mimo jiné ostatní funkce umožňuje provádět analýzy a vizualizace nad daty uloženými v nástroji Elasticsearch viz výše. Může se jednat o data libovolného typu. Zpracovat lze strukturovaná či nestrukturovaná textová data, numerická data, časové řady, geografická data a další. Kibana je uzpůsobena pro vyhledávání napříč velkými objemy dat. Vizualizace uživatel vytváří v drag and drop37 rozhraní. Tvořit lze nejrůznější grafy, tabulky, metriky a další vizualizační prvky. Výsledná prezentace dat může mít podobu dashboardu, kde se nachází grafy, tabulky atd. na jednom přehledném místě. (Elasticsearch B.V. 2021b)

4.2.3 Python

Python je interpretovaný, objektově orientovaný, vysokoúrovňový a dynamicky typovaný programovací jazyk. Disponuje jednoduchou syntaxí a je vhodný k rychlému vývoji aplikací, skriptování či jako prvek, který propojuje jednotlivé komponenty systému. Všechny verze Pythonu jsou vydávány pod open-source licencemi. Vývoj aplikací v Pythonu lze navíc zefektivnit použitím komunitou vytvořených knihoven, kterých nalezneme stovky tisíc v oficiálním balíčkovém indexu. (Python Software Foundation 2021) Tyto vlastnosti činí Python ideální volbou pro potřeby vývoje ETL skriptu v této diplomové práci.

4.2.4 MySQL

MySQL je open-source systém řízení báze dat, který zajišťuje práci s relačními databázemi.

(Oracle Corporation 2021) V této práci je MySQL využito za účelem tvorby číselníku dodavatelů.

37 Z angličtiny přeloženo jako „chytit a pustit“. Tzn. klikem a podržením levého tlačítka myši uživatel prvek uchopí a uvolněním tlačítka myši prvek umístí.

5 Implementované řešení

Druhým a posledním krokem k naplnění dílčího cíle DC4 je implementace systému navrženého v kapitole Návrh řešení výše. Obsahem této kapitoly je popis implementace celého systému, včetně ETL scriptu a postupů určených pro uživatele, kde se dočte, jakým způsobem systém nasadit a používat. Pro lepší představu fungování procesů v systému je kapitola doprovázena procesními modely tvořenými dle specifikace (Object Management Group, Inc. 2011) jazyka BPMN verze 2.0. Některé konkrétní popisy implementace navíc doprovází ukázky zdrojových kódů.

Na obrázku (viz Obrázek 17) níže je znázorněn model procesu od získání dat po jejich analýzu. Proces popisuje průchod celým systémem v souladu s tím, jak byl implementován.

Prvním krokem, respektive činností v procesu, je příprava prostředí uživatelem. V moment, kdy je prostředí připraveno, může uživatel spustit ETL script, který automatizovaně stahuje a indexuje smlouvy. Následně uživatel může vytěžená data zpracovat a tvořit nad nimi reporty. Pokud však již systém obsahuje stažená data vyhovující uživateli, lze předešlý krok stahování smluv vynechat. Tyto jednotlivé procesní kroky jsou detailně popsány v následujících podkapitolách.

Obrázek 17: Pohled na implementovaný Proces od získání dat po jejich analýzu popsaný jazykem