Predmetni projekat iz naprednih tehnika programiranja - Romana Erdelji, sw58/2017
Rešavanje Nurse Scheduling Problem-a (NSP) adaptiran na problem organizacije rasporeda nastave u odnosu na zahteve fakulteta i želje (koji dani bi im više odgovarali u odnosu na druge) profesora i asistenata (hard and soft constraints).
Za rešavanje problema bi se koristio genetski algoritam.
Algoritam bi bio implementiran u programskom jeziku Go i u programskom jeziku Rust, kako bi se poredile performanse i težina implementacije.
U schedule aplikaciji postoje dve vrste role - admin i staff.
Admin ima sledeće mogućnosti:
Staff ima sledeće mogućnosti:
Arhitektura sistema prestavlja dva backend-a sa deljenim client side.
Go backend koristi MongoDB za skladištenje podataka dok Rust koristi Postgres.
Za svaki deo je namešten docker image.
Note: rust je rađen kao mikroservisna arhitektura radi diplomskog rada
Monolitna aplikacija koja predstavlja backend side, implementira CRUD operacije za sledeće entitete: fakultet, smene, predavanja/vežbe, profesore/asistente, hard i soft constraints, i genetski algoritam za generisanje rasporeda nastave.
Mikroservisna aplikacija koja predstavlja backend side. Sastoji se iz sledećih mikroservisa:
Mikroservis schedule-service takođe komunicira sa faculty-service, lecture-service i staff-service radi dobavljanja potrebnih podataka za rad algoritma.
Predstavlja client side aplikacije, služi za manipulisanje CRUD operacijama nad entitetima i prikaz rasporeda nastave u tabelarnom prikazu.
Deljan opis algoritma, kao i poređenje performansi i težina implementacije se nalazi u fajlu "Izveštaj".
U folderu "docker-compose files" se nalaze compose fajlovi koji će napraviti potrebne container-e. Rust compose fajl pokreće Rust + Angular, dok go pokreće Go + Angular.
Pre puštanja compose fajlova potrebno je pokrenuti skriptu "LogMaker"/"linuxLogMaker" za kreiranje neophodnih log fajlova.
Bitno je da se folderi "go" i "rust" nalaze na istoj putanji kao i skripta, i da se docker-compose fajlovi nalaze u tim folderima kao što je u "docker-compose files" folderu.
Napomena: go i rust containter-i ne mogu biti u isto vreme pokrenuti jer api-gateway i go slušaju na istom portu.