Abstrakt
Během školení si ukážeme tvorbu jednoduché DB aplikace coby extenze (něco jako nfiesta_pg) a její napojení na gitlab CI/CD (zejména spouštění regresních testů v dockeru).
Prezentovaná aplikace se nebude omezovat jen na "funkční část" ale bude obsahovat i nějaká data (tj. podíváme se na rozdíly mezi tabulkami a konfiguračními tabulkami). Pokud zbude čas, zkusíme si extenzi rozšířit o něco málo s geodaty a PostGISem.
Posluchači by asi měli mít základní představu o PG, gitu, dockeru.
Poděkování
Prerekvizity
Vyplňte prosím krátký dotazník s preferencemi k obsahu školení a dovednostmi účastníků.
Požadavky na SW:
- funkční prostředí Docker
- Windows 10 build 18917 nebo vyšší (nemám odzkoušeno): WSL2 (viz blog)
- Windows 10 ostatní: viz https://docs.docker.com/docker-for-windows/install/ (budeme používat linuxové kontejnery)
- Linux: viz https://docs.docker.com/install/linux/docker-ce/ubuntu/
- jiné Windows: prosím kontaktujte mě předem, nejlepší je asi Linux ve VirtualBoxu
- pgAdmin IV (pokud nebudete používat pouze psql): https://www.pgadmin.org/download/pgadmin-4-windows/
- QGIS (pokud bude školení obsahovat práci s geodaty): https://www.qgis.org/en/site/forusers/download.html
Obsah školení (návrh p2d2 2020)
Obsah školení bude přizpůsoben podle výsledků dotazníku.
1) Seznámení s technologiemi (1.5 h)
Posluchač se seznámí se základními technologiemi. Výsledkem je funkční "individualizované" vývojové prostředí a nastavéné spouštění regresních testů na straně gitlabu.
1a) Prostředí Dockeru (30 min)
- Dockerfile
- způsob "baremetal instalace" vs. Postgres image
- perzistentní data – nepoužijeme
- "zabydlení" v Docker kontejneru: připojení, sdílení adresáře, mapování portů, git
- spuštění PostgreSQL
- manuální spouštění testů a práce v DB (psql)
- připojení zevnějšku kontejneru pomocí pgAdmin4 / QGIS
1b) PostgreSQL extenze (45 min)
- PostgreSQL extenze a metodika Evolutionary Database Design (viz martiflower.com, wiki)
- updatescripty, makefile a controlfile
- statická (configuration tables) a dynamická data
- select * from pg_catalog.pg_extension;
- regresní testy (30 min)
1c) Propojení s GitLab CI/CD (15 min)
- https://about.gitlab.com/pricing/
- upload Docker image do prostředí GitLab
- konfigurační soubor .gitlab-ci.yml
- lokální spouštění testů pomocí nástroje gitlab runner (je možné vynechat)
- speciality gitlab – webový editor (je možné vynechat)
- deploy výsledku na statické stránky (je možné vynechat)
2) Otázky / rezerva (0.5 h) – je možné zařadit úplně na konec
3) Praktické cvičení (1.5 h)
Ukázka vývoje DB aplikace cca metodikou EDD: issues, git větvě, merge, preprodukce, produkce.
3a) Data
https://gitlab.com/jurafejfar/edd_workshop/-/wikis/data
3b) Zadání úkolu
Vytvoříme jednoduchou databázi zákazníků seskupených do skupin podle obchodníků, kteří je mají na starost. Z adres zákazníků vytvoříme geografickou polohu a zhodnotíme efektivnost rozčlenění zákazníků mezi obchodníky z hlediska polohy. Volitelně je možné implementovat funkce hledající optimální cestu mezi zákazníky atp. (geo-aplikace). Volitelně je možné sledovat kupříkladu tržby od zákazníků a dávat je do souvislosti s obchodníky (statistika – plpythonu / plr).
3c) Způsob řešení
- aktivní účastnící si zvolí svoje issue, které řeší, výsledkem je updatescript
- tabulka zákazníků
- tabulka obchodníků
- přidání sloupce s geometrií
- funkce pro převod adresy na geometrii
- průběžně je možné monitorovat ve větvích postup a dále hodnotit kvalitu updateskriptů při mergerequestu
- účastníci kteří se nechtějí aktivně zapojit mohou sledovat celý postup případně na lokálním prostředí experimentovat
Zpětná vazba & kontakt
Vyplňte prosím krátký dotazník týkající se spokojenosti se školením, připomínek a návrhů.
Jiří Fejfar