Tato kapitola popisuje funkční požadavky ("co to vlastně umí?") datové platformy Golemio, co se týče softwarového nástroje (aplikačního setu).
Funkční požadavky
Integrace dat z externích systémů měst a městských společností
Systém bude zpracovávat real time data
Vystavené push API schopné zpracovat
JSON data
XML data
Plaintext data
Binární data
Data na vstupním API budou validována
Vstupní API bude autorizováno
Na úrovni API klíče (v hlavičkách nebo těle)
Na úrovni IP whitelistu
Jednotlivé druhy a úrovně autorizace budou nastavitelné pro každý API endpoint (data z jednoho zdroje) zvlášť
Systém bude umět oboustranně komunikovat s připojenými zařízeními
Volání externího ovládacího API
Napojení přes websocket
Systém bude zpracovávat statická data a data z API / DB
Pull API
JSON REST API
XML/SOAP API
Proprietární HTTP/S API
Externí FTP úložiště
Stahování dat v intervalu 1 min až 1 rok
Nastavitelné konfigurací (definice CRON)
Přijatá data budou validována a kontrolována jejich správnost, s možností nastavení operativních alertů v případě chyby
Systém bude zpracovávat ruční vstupy (mapové podklady, číselníky) - přímým nahráním do databáze
Formát GeoJSON, JSON, CSV
Systém bude umožňovat automatické nahrávání do katalogu OD
Týdenní, denní frekvence
Nad přijatými daty budou prováděny výpočty
Geoprocessing, výpočet zpoždění, predikce, obohacení dat
Úložiště dat
V systému budou použity SQL a NoSQL databáze s možným přímým přístupem pro datové analytiky
Systém bude ukládat aktuální data (aktuální poloha, aktuální obsazenost)
Systém bude ukládat historická data (historie obsazenosti, historie polohy, historie stavu)
Datová analýza
Možnosti připojení nástrojů pro datovou analýzu (Grafana, PowerBI, R studio, ArcGIS Desktop, popř. jiné standardní nástroje)
Systém bude uchovávat přijatá raw data po různou dobu dle potřeb projektu
Webové aplikace
Webová aplikace interních dashboardů, dispečinku (operativního monitoringu) a administračního panelu DP, popř. využití webu Golemio pro veřejné dashboardy
Zobrazení dashboardů pro veřejnost
Zobrazení interních dashboardů
Možnost ovládání připojených zařízení přes aplikaci dispečinku
Přístup skrze přihlašovací údaje k webové aplikaci určené k zobrazování specifických dashboardů
Přihlašování a rozdělení přístupů k jednotlivým dashboardům dle rolí
Rozdělení přístupů k jednotlivým datům na dashboardech (např. Dashboard lampy, některý uživatel vidí pouze lampy s parametrem “městská část: Praha 7”, některý uživatel všechny)
Přístup na základě městské části
Přístup na základě povolených ID jednotlivých záznamů
Aktualizace dat (nejmenší možná doba aktualizace)
Pro veřejné dashboardy od 30 min
Interní dashboard od 1 min
Dispečerský panel od 10s
Webová aplikace pro administrační panel pro správu uživatelů a práv
Správa uživatelů, uživatelský skupin, API přístupů (více definováno v kapitole Open API)
Webová aplikace pro správu API klíčů pro veřejnost
Možnost zaregistrovat se
Možnost vygenerovat svůj API klíč
Možnost smazání API klíče
Aplikace v české a anglické lokalizaci
Open API
Implementace výstupní gateway pro zpřístupnění dat z DP pro třetí strany (mobilní vývojáři, externí systémy)
Jednotné REST API
API nad relačními i dokumentovými daty
Dokumentace výstupního API, vč. popisu endpointů, popisu HTTP metod a parametrů, struktury návratových dat a ukázkových dat
Výstupní API bude podporovat stránkování, limitaci počtu vrácených záznamů
Výstupní API bude podporovat dotaz pomocí lokace (geolokační dotaz) a řazení výsledků dle vzdálenosti od bodu
Výstupní API bude podporovat filtrování výsledků dle městské části či dalších specifikovaných filtrů
Výstupní API bude poskytovat historická data s parametry Od-Do (datum a čas) pro filtrování výsledků
Výstupní API bude používat cachování (každý dotaz nebude znamenat dotaz do databáze)
Nastavení request limitů, role a oprávnění přístupu, logování přístupů
Administrační panel s přehledem přístupů/využití
Logování všech přístupů a generování statistik
Blokace dříve poskytnutého přístupu
Bude možné určovat celkový rate limit pro uživatele
Nastavení oprávnění přístupů bude možné jak za základě datové sady (endpoint) tak i podle atributů v datech
Nastavitelné přístupy
Přístup k jednotlivým API endpointům
Přístup na základě městské části
Přístup na základě povolených ID jednotlivých záznamů
Přístup s maximálním limitem (velikosti) dotazu
Automatické generování API klíčů
Uživatelé musí mít možnost si sami vygenerovat svůj klíč, který bude mít výchozí hodnotu rate limitu
Ověří se emailem - posílání verifikačního emailu pro aktivaci klíče
Alerting a monitoring
Kontrola dat
V daném časovém úseku musí přijít dávka dat, jinak se odešle upozornění
Periodické provolání externích zdrojů a validace schématu
Ověřování hodnot vůči stanoveným pravidlům
Monitoring
Všechny služby budou monitorované přes heartbeat
Bude logováno a monitorováno počet přijatých dat (jak přijatá push data na input API, tak pull z externích API)
Bude probíhat pravidelná kontrola datových zdrojů a reporting
Budou sbírány logy a nastaven alerting na jakékoliv závažné chyby v aplikacích
Výše zmíněné požadavky na monitoring budou mít GUI
Nefunkční požadavky
Dispečink a dashboardy budou dostupné jako webová aplikace s řízením přístupů
Administrační panel bude dostupný jako webová aplikace s řízením přístupů
Jednotlivé moduly řešení budou horizontálně škálovatelné - vrstva pro integraci dat, vrstva pro výstupní rozhraní, databázová vrstva, napojení na senzory
Moduly umožní navýšení výkonu a počtu zpracovávaných požadavků/kapacity úložiště pomocí horizontálního škálování bez zásahu do zdrojových kódů řešení
Jednotlivé moduly/vrstvy budou jednotlivě nahraditelné - integrace dat, výstupní rozhraní, databázová vrstva, napojení na senzory (vstupní rozhraní)
Řešení bude využívat systému queue (fronty) pro zajištění perzistence a synchronizace přijímaných dat/zpráv
Celé řešení bude možné nasadit na virtualizované architektuře VMWare
Jednotlivé moduly budou k nasazení využívat technologii linuxových kontejnerů (Docker)
Zdrojový kód jednotlivých částí řešení bude udržován v git repozitáři, nebude obsahovat citlivá data a bude připraven k publikaci jako open-source
Zdrojové kódy budou pokryty jednotkovými testy, které se budou automaticky spouštět před nasazením nové verze
Modul výstupního rozhraní a integračního rozhraní s databázovou vrstvou bude možno plnohodnotně zprovoznit samostatně bez závislosti na ostatních modulech
Celé řešení bude monitorovatelné standardními monitoring nástroji
Předpokládaný objem dat je 1 TB za dobu 3 měsíců, řešení bude dimenzováno minimálně na tento objem
Systém bude dimenzován na vstup 200 datových zpráv za 1s
Řešení bude robustní k výpadku jakéhokoliv jednoho modulu (vrstvy) aplikace po omezený čas
Celé řešení bude nasazené v režimu vysoké dostupnosti, odolné vůči výpadku jakéhokoliv z virtuálních strojů:
Systém bude provádět automatické zálohy dat z datového úložiště a ostatních modulů
Dostupnost služeb bude:
Výstupní API: 99,5
Databázová vrstva: 99,5
Dispečink: 99,5
Monitoring: 99,5
Alerting: 99,5
Součástí řešení je i návrh řešení Disaster recovery a kritických scénářů
Součástí řešení je návrh automatického zálohování, export dat pro migraci dat