// projekat ·
Cloud Resource Inventory
Napravio sam Spring Boot MVC aplikaciju za cloud resurse, vlasništvo, kataloge i planirane promene. Stack: Java 21, Thymeleaf, Spring MVC.
Uloga: Univerzitetski projekat · IT355 · Godina: 2026 · Status: isporučeno
ukratko: Serverski renderovan inventar cloud resursa i planiranih promena. Spring MVC i Thymeleaf vode web tok. Application-scoped skladište drži prvi projektni zadatak usmeren na domenska pravila, validaciju i testiranje bez dodavanja baze.
Problem
Podaci o resursima završe razbacani po konzolama provajdera, tabelama i beleškama tima. Ime i provajder nisu dovoljni za svakodnevni rad. Tim mora da zna ko je vlasnik resursa, gde radi, koji servis zavisi od njega i da li je planirana promena. Slobodna tekstualna polja otežavaju da te veze ostanu dosledne.
Ograničenja
- Zadatak je odredio obim. Trajno čuvanje u bazi, autentifikacija i REST API nisu bili deo PZ1, pa težište leži na domenskim pravilima, validaciji i testovima.
- Veze moraju da drže. Timovi, okruženja, tipovi resursa, cloud nalozi, upravljani servisi i tagovi su posebni katalozi. Resurs ih referencira po ID-ju i nijedan ne sme da nestane dok nešto još pokazuje na njega.
- Zahtevi za promenu imaju fiksnu putanju: nacrt, pregled, pa odobrenje ili odbijanje.
Odluke
- Spring MVC kontroleri vezuju forme i pripremaju model za prikaz. Poslovna pravila ostaju u servisnom sloju.
- Thymeleaf renderuje na serveru, pa nema posebnog frontend build-a ni stanja na klijentu.
InventoryStoredrži podatke u application scope-u uzConcurrentHashMapkolekcije iAtomicLongidentifikatore.- Servisi blokiraju brisanje kataloškog zapisa koji još referencira resurs, upravljani servis ili zahtev za promenu.
- Greške Bean Validation-a prikazuju se pored polja koje ih je izazvalo umesto sirovog odgovora servera.
Ishod
Finalni skup ima 162 testa kroz skladište, servise, validaciju, kontrolere i renderovani HTML. Pokriva i regresije koje je otkrilo testiranje u browser-u: neispravne URL-ove za izmenu, sirove 400 stranice i prelivanje tabela na uskim ekranima. Cena memorijskog skladišta je namerna i vidljiva. Restart aplikacije vraća sve izmene na demonstracioni skup podataka.