Osnovni servisi

LOBE servis je modularizovan u više posebnih sub-servisa koji komuniciraju preko definisanih interfejsa i koriste docker sistem kontejnera i orkestratora za kreiranje, proviziju i pokretanje radnih okruženja. Ovim se postiže:

  • brza i laka konfiguracija
  • skalabilnost
  • failover i automatski recovery
  • izolovan rad na sub-servisima od strane nezavisnih timova
  • nezavisno testiranje i deployment

Database model

LOBE koristi kombinovani Database model, pri čemu se security domen i šema čuvaju u Postgres bazi, dok se poslovna logika kao i izveštajni domen mapiraju na PostgreSQL bazu podataka. Dodatno, PostgreSQL je infrastrukturalno organizovan kao failover klaster, pri čemu dodatni nodovi omogućavaju kako rezilijentnost i recovery, tako i prebacivanje opterećenja poslovnog izveštavanja sa glavne instance.

Gateway servis

Gateway servis predstavlja polaznu tačku ka backend infrastrukturi i servisima poslovne logike. Pored routing-a upita ka odgovarajućem servisu, gateway uključuje i kompletnu funkcionalnost autentikacije i autorizacije korisnika, kao i sigurnosne protokole koji sprečavaju zloupotrebu servisa. Takođe, servis obezbeđuje menadžment korisnika i organizacija, kao menadžment i odobravanje registracija pravnih lica.

Backend servis

U okviru backend REST web servisa implementirane su sve ključne funkcionalnosti KIBJLS servisa - učitavanje i pregled budžeta, rebalansa i izmena aproprijacija, menadžment projektnih struktura, kao i pregled i rad sa prinudnom naplatom i neprepoznatim plaćanjima korisnika.

Ovaj servis karakteriše:

  • direktan pristup KIBJLS bazi podataka
  • HTTP pristup preko REST arhitekturnog stila, komunikacija sa konzumerima putem JSON fajlova u klijent-server maniru
  • implementacija u .NET Core3 tehnologiji (cross_platform, FOSS)

REST servise generalno karakterišu značajano veće mrežne performanse (bandwith) u odnosu na alternativne tehnologije (npr. SOAP) zbog minimalnog broja dodatnih atributa na HTTP protokol, mogućnost upotrebe HTTP cache-a i lakše skaliranje.

Backend servis je najosnovnija komponenta KIBJLS i preko njega se mogu upotrebiti sve funkcionalnosti kroz odgovarajući klijent. Komunikacija sa REST interfejsom je generalno veoma laka za implementaciju i integraciju. SDK za komunikaciju sa servisima ovog tipa je deo osnovnih biblioteka svih savremenih programskih jezika dok svi moderni operativni sistemi već dolaze sa odgovarajućim alatima out of the box - npr. na Windows platformama može se koristiti Powershell cmdlet Invoke-RestMethod1, dok se na Unix-like sistemima standardno koristi curl2.

Frontend servis

U okviru frontend servisa implementirana je web aplikacija koja predstavlja standardni grafički interfejs nad KIBJLS REST servisom korišćenjem Internet browser-a. Omogućava učitavanje i pregled budžeta, rebalansa i izmena aproprijacija, menadžment projektnih struktura, kao i pregled i rad sa prinudnom naplatom i neprepoznatim plaćanjima korisnika. Uključuje i generisanje izveštaja, pregled i izmenu korisničkih profila i autorizacionih prava, promenu kredencijala i druge opcije vezane za menadžment korisnika i organizacija.

Web servis je implementiran kao statički sajt što mu daje najbolje moguće performanse i mali broj vektora za napade.

Implementiran je korišćenjem Javascript framework-a Vue.js4 kao single-page web application (cross-platform, cross-browser, FOSS). Nakon inicijalnog učitavanja u Web browser-u aplikacija funkcioniše bez fizičke komunikacije sa web serverom - sve operacije se izvode direktnom komunikacijom sa backend serverom preko asinhronih poziva. Zbog ovoga je opterećenje servera koji hostuje ovaj web servis veoma nisko i gotovo ga je nemoguće preopteretiti. Bilo koji moderni web server (nginx, apache, IIS itd.) može da služi ovaj servis.

Izveštajni servis

Nezavisni DotNet.Core REST servis koji, koristeći bazu podataka sa poslovnom logikom backend servisa, generiše Excel izveštaje koji sadrže odabarane aproprijacije kao i detalje pojedinačnih aproprijacija.

Frontend koristi ovaj servis da omogući korisniku download izveštaja.

Dokumentacioni servis

Korisnička i tehnička dokumentacija svih komponenti servisa razvija se kao git projekat i u osnovi koristi Markdown5 jezik za tekstualne delove dokumentacije i PlantUml6 jezik za grafičke delove. Dokumentacija se razvija kao source code (verzionira se) te postoji build i deployment procedura. U dokumentaciji se ne koriste propriatery i binarni fajlovi (osim screenshot-ova ekrana).

Dokumentacioni sistem se kompajlira u statički sajt koga može služiti bilo koji web server koji je predviđen za konzumaciju od strane krajnjih korisnika CRF servisa i tehničkog kadra naručioca. Odlikuju ga sledeće funkcionalnosti:

  • mogućnost ažuriranja stranica korišćenjem Gitlab web interfejsa bez posebnih preduslova (uz odgovarajuća ovlašćenja)
  • mogućnost eksportovanja dokumentacije u bilo koji popularni format (Word, PDF, epub itd.)
  • kreiranje različitih stilova dokumentacije (prezentacija) nezavisno od sadržaja
  • prilagođavanje vidljivosti sekcija u odnosu na ciljnu grupu
  • mogućnost paralelnog kolaborativnog rada na dokumentaciji od strane više ljudi
  • nezavisni deploy dokumentacije u produkciju u odnosu na druge komponente sistema

Dokumentacioni servis je implementiran korišćenjem mkdocs 7 sistema uz material design8 temu.

Integracioni servisi

Integracioni servisi povezuju KIBJKS sa platnim prometom Uprave za trezor.

Todo

Sekcija je u fazi izrade

Dijagram okruženja

design.puml.svg