#
Gateway
Gataway je zariadenie nachádzajúce sa vo velebnej miestnosti. V miestnosti sa nachádza vždy len jeden gateway. Zabezpečuje komunikáciu medzi volebnými terminálmi a serverom. Gateway obsahuje lokálnu databázu pre hlasy aj tokeny, takže dokáže fungovať aj bez pripojenia k internetu a vie urobiť synchronizáciu na inom mieste, kde je internet dostupný.
Gataway sa má nachádzať na chránenom mieste a pristupovať k nemu smú iba členovia volebnej komisie napríklad pri spustení alebo zastavení volieb alebo nahrávaní autorizačných tokenov na NFC tagy.
#
Architektúra
Systém je rozdelený na niekoľko mikroslužieb. Konkrétne sú všetky realizované ako Docker kontajnery a orchestrované pomocou Docker Compose. Každá služba by mala mať na starosti jeden logický celok vo volebnom procese. Na obrázku je znázornená softvérová architektúra gateway-u s prepojeniami medzi mikroslužbami a popisom ich hlavných funkcií.
Nad tým všetkým je nasadený jeden NGINX reverse proxy, cez ktorý prichádza všetka komunikácia na gateway. Iba 3 služby sú volané mimo gateway-u a to voting service pre prijímanie hlasov z volebných terminálov, voting process manager pre obslužnú komunikáciu s volebnými terminálmi a admin frontend bežiaci priamo na dotykovom displeji gateway-u. Cez internet so serverom komunikujú iba synchornization service pre odosielanie hlasov a report manager pre odosielanie zápisnice. Token writer priamo komunikuje s USB NFC zapisovačkou, pomocou ktorej zapisuje nové tokeny na NFC tagy. O tieto tokeny sa pritom stará token manager. Statevector je trochu atypická služba, ktorá iba uchováva stav niekoľkých atribútov a poskytuje ich ostatným službám. Voting porcess manager je síce jeden kontajner, ale dali by sa z neho ešte oddeliť local keys manager, ktorý registruje a spravuje kľúče k terminálom v miestnosti, a report manager, ktorý má na starosti generovanie a distribúciu zápisnice. Gateway DB je kontajner MongoDB, v ktorom beží niekoľko databáz.
#
Mikroslužby a ich smerovanie
V nasledujúcej tabuľke uvádzame zoznam mikroslužieb a statických súborv na gateway-i a ich smerovanie za spomínaným reverse proxy.