Net-Base Časopis

10.04.2026

REST-Server-Arhitektura sa Delphi-om za preduzeća

APIs ostvaruju svoju vrijednost tek kada se poslovna logika, prava, model podataka i operativni rad zajednički planiraju.

10.04.2026

Od teme magazina do projektne prakse

Povezane stranice usluga i tehnologije za članak

Mnoge kompanije danas imaju sličnu polaznu tačku: razvijena strukturna aplikacija (često Delphi/VCL) pokriva ključne procese, ali iznenada treba da opslužuje nove kanale. Kundenportal treba podatke i tokove, mobilni korisnici očekuju sigurne pristupe, treće strane (ERP, DMS, CRM, BI) traže integracije. U toj situaciji REST-API djeluje kao logičan korak. U praksi, međutim, API-initiative rijetko zapnu na HTTP ili JSON — već na nejasnu raspodjelu odgovornosti između klijenta, servera i sloja za čuvanje podataka.

Održiv REST-Server arhitekturu s Delphi ne postiže se tako što ćete „nekoliko endpointa“ postaviti direktno prema postojećim tabelama baze podataka. Nastaje tek kada kompanija zajednički sagleda poslovna pravila, sigurnosne zahtjeve, suverenitet podataka, granice transakcija i operativne koncepte. REST-Server postaje stabilni ugovorni sloj između poslovne logike i potrošača: desktop-klijent, portal, servisi, integracioni partneri. Upravo tu Delphi pokazuje snagu: brzi razvoj, robusno runtime okruženje, performantan native kod, dobra povezanost s bazama podataka (npr. preko BDE-Ablösung mit nativer Anbindung) i mogućnost kontrolisanog kapsuliranja poslovne logike u biblioteke ili server-module.

Ovaj članak opisuje kako kompanije planiraju REST-Server s Delphi tako da ostanu konzistentni na poslovnom nivou, uklapaju se u postojeći sistemski pejzaž i ne postanu izvor grešaka u radu. Fokus je na arhitektonskim principima, tipičnim zamkama u projektima modernizacije i konkretnim komponentama za sigurnost, pristup podacima, verzioniranje i observabilnost.

Zašto je REST-API u kompaniji arhitektonska odluka

U klasičnom client–server svijetu mnoge su se kontrole implicitno razmještale u desktop-klijentu: validacije, promjene statusa, izračuni, dijelom i ovlaštenja. Dok je postojao samo jedan klijent, to nije bio kritičan problem — poslovno neprikladno, ali upravljivo. Kad više potrošača pristupa istim poslovnim objektima, model se urušava:

  • Portal ne može „ponovo koristiti“ validacije klijenta.
  • Mobilne aplikacije trebaju raditi offline, ali ne smiju duplicirati poslovna pravila.
  • Integracije trebaju stabilne, verzionirane ugovore i jasnu semantiku grešaka.
  • Compliance zahtijeva dokazive pristupe, modele uloga i audit mogućnosti.

API postaje mjesto gdje se spajaju poslovna logika, prava i pristup podacima. Njegova arhitektura odlučuje hoće li vaš sistem biti dugoročno proširiv — ili proizvesti novu tehničku dugove.

Delphi kao platforma za REST-Server: snage i tipični scenariji upotrebe

Delphi se u kompanijama često povezuje s desktop-aplikacijama. Za REST-Servere je Delphi također vrlo prikladan, naročito kad je riječ o ponovnoj upotrebi postojeće poslovne logike ili o performatnim servisima. Tipični B2B scenariji:

  • API-sloj za postojeći softver: postojeća Delphi-strukturna aplikacija ostaje UI, dok REST-Server kapsulira pristupe podacima i pravila za nove potrošače.
  • Backend za portal/klijentski dio: web-portal koristi REST-endpointe koji koriste isti regulativni kernel kao i internI procesi.
  • Integracioni i interfejsni server: povezivanje ERP/DMS/CRM, import/export, obrada događaja, vremenski kontrolirani jobovi.
  • Linux-Services ili Windows Services: dugotrajni procesi, queue-workeri, scheduleri, workflow za dokumente.

Presudno nije naziv frameworka, nego disciplina u slojevitosti, konkurentnosti, rukovanju greškama i deploymentu. Delphi omogućava oboje: brze iteracije isporuke i istovremeno urednu, modularnu arhitekturu — ako se planira svjesno.

Schichtenmodell: Layer-3 arhitektura kao osnova za trajne API-je

Za poslovni softver dokazao se jasan, tanak model slojeva. U Delphi-okruženju to se često opisuje kao Layer-3 arhitektura. Terminologija varira, ali odgovornosti trebaju biti jednoznačne:

1) API-/Transport-Layer (HTTP, Serialization, Routing)

Ovaj sloj rješava HTTP, autentifikaciju na protokolskom nivou, formate request/response, routing, status kodove, Content-Type, kompresiju. Ovdje ne smiju biti poslovna pravila. Cilj: zamjenjivost i testabilnost. Ako kasnije proširite REST-API drugim protokolima (npr. WebSocket, gRPC-slični patterni, Server-Sent Events), poslovni kernel mora ostati stabilan.

2) Domain-/Service-Layer (poslovna logika, Use Cases, prava, transakcije)

Ovdje prebiva poslovna istina: stanja, izračuni, provjere, pravila za više klijenata, provjere prava na poslovne akcije. Ovaj sloj treba biti nezavisan od UI-a i raditi bez poznavanja HTTP-a. Idealno implementirajte use case-e poput „Auftrag freigeben“, „Ticket schließen“, „Rechnung erzeugen“ umjesto puko CRUD-a nad tabelama.

3) Data-Access-Layer (Repositories, SQL, FireDAC, Mapping)

Ovaj sloj kapsulira persistenciju: SQL, stored procedure, kontrolu transakcija, mehanizme zaključavanja, connection-pooling, DB-specifičnosti. U Delphi-svijetu BDE-Ablosung mit nativer Anbindung je često pragmatičan izbor, posebno pri migracijama (BDE-Ablösung) i pri heterogenim bazama (SQL Server, PostgreSQL, MariaDB, Firebird). Bitno je da Data-Access-Layer ne sadrži HTTP-znanje i ne donosi poslovne odluke.

Ovaj model smanjuje kopling: promjene modela podataka ne prisiljavaju na prepisivanje API-ja, a novi klijenti nasljeđuju istu logiku. Posebno u Delphi Modernisierung to je temelj za postupno odvajanje razvijenih desktop-aplikacija bez prekida u radu.

API-dizajn za poslovni softver: ne CRUD, nego poslovni ugovori

Mnoge API-je započinju endpointima poput /customers, /orders, /documents i implementiraju CRUD. To je ponekad dovoljno za interne alate, ali u poslovnom softveru vrlo brzo postaje plitko. Poslovni procesi sastoje se od promjena stanja, pravila, sporednih efekata i ovlaštenja.

Resursi, akcije i stanja jasno modelirati

Bolji obrazac je kombinacija resursa i jasnih akcija, npr.:

  • Pročitati resurs: GET /orders/{id}
  • Pokrenuti akciju: POST /orders/{id}/release
  • Generisati dokument: POST /orders/{id}/documents/invoice
  • Provjeriti status: GET /orders/{id}/status

Na taj način u API-ugovoru postaje jasno da „Freigeben“ nije samo izmjena polja. Server tu centralno može provoditi validacije, provjere prava, transakcije, audit i sporedne procese.

Semantika grešaka i validacija: učinite ih planskim za klijente

Klijenti u poslovnom okruženju moraju razlikovati vrste grešaka: validacione greške (400), nedostatak autorizacije (403), konflikt zbog paralelne izmjene (409), poslovno odbijanje (često 409 ili 422), privremeni problemi backend-a (503). Važno je imati dosljednu strukturu greške, npr. kod greške, poruku, opcionalne informacije o poljima i korrelacioni ID. Tako portal može prikazati razumljivu poruku, a podrška i operacije efikasno pratiti problem.

Sigurnost: autentifikacija nije isto što i autorizacija

U B2B kontekstima sigurnost rijetko posrće zbog enkripcije, a češće zbog nedjeljive separacije identiteta, uloga i poslovnih ovlaštenja. REST-Server arhitektura stoga mora razlikovati dvije razine:

Autentifikacija (ko je?)

Uobičajeni pristupi su token-based rješenja (npr. JWT ili opaque tokeni), u kombinaciji s TLS-om i jasnom strategijom sesija. Ključno je razmotriti: životni vijek tokena, mehanizam za refresh, blokadu pri promjeni uloga te pitanje imate li različite identity providere za portale i interne sustave. Delphi-Serveri mogu djelovati kao resource-serveri, ali ovisno o postavkama i izdavati tokene. U mnogim okruženjima integracija s postojećim identity-sistemima (npr. AD/LDAP, SSO) je ključna.

Autorizacija (smije li?)

Autorizacija treba biti u Domain-/Service-Layeru. Uloge i prava rijetko su čisto tehnička; vezana su uz mandat, lokaciju, organizacijsku jedinicu, status ugovora ili fazu procesa. Dobra praksa:

  • Model uloga (npr. Admin, Sachbearbeitung, Auditor) kao osnova
  • Poslovne politike („smije generisati račun samo u statusu X“, „smije vidjeti samo vlastite tikete“)
  • Mandant-ability kao standard: svaki zahtjev treba tenant-kontekst
  • Audit: tko je koju akciju i kada izvršio

API ne bi trebao samo vratiti „pristup dozvoljen/odbijen“, već dosljedno spriječiti da preko trikova s parametrima postanu vidljivi podaci drugih tenanata. To zvuči očigledno, ali u naslijeđenim sustavima jedan od najčešćih arhitektonskih grešaka nastaje kad se „tabele na HTTP“ postave prerano.

Pristup podacima s FireDAC: transakcije, pooling i strategija baze podataka

U poslovnim aplikacijama pristup podacima je faktor stabilnosti: pikovi opterećenja, deadlockovi, dugotrajni izvještaji, paralelne izmjene, batch importi. FireDAC je u Delphi-ekosistemu provjeren element za jedinstveni pristup različitim bazama. Za REST-Server arhitekturu presudni su sljedeći aspekti:

Granice transakcija po Use Case-u

REST-API je tipično baziran na zahtjevima. To se dobro uklapa u „transakciju po use case-u“: unutar requesta otvara se transakcija, izvode se poslovne operacije pa commit/rollback. Važno: ne stavljati automatski svaki endpoint u transakciju, ali dosljedno postupati kod operacija pisanja. Endpointi za čitanje također mogu zahtijevati transakcije ovisno o nivou izolacije i potrebi konzistentnog pogleda.

Strategija konekcija i paralelizam

Server-paralelizam znači: mnogo istovremenih zahtjeva, svaki s DB-pristupom. Planirajte zato:

  • ograničene, nadzirane veličine pool-a
  • time-outove za upite i konekcije
  • jasna pravila za dugotrajne operacije (izdvojiti u jobove/worker-e)

Česta greška je puštanje skupih izvještaja ili masovnih exporta sinkrono preko iste API-instances koja servira interaktivne portal-zapise. Bolje je razdvojiti: interaktivno vs. batch/async.

Modernizacija baze kao dio planiranja API-ja

Ako u naslijeđu postoje starije metode pristupa podacima (npr. BDE), API postaje katalizator: prisiljava na jasne granice pristupa podacima. Kontrolisana zamjena prema FireDAC smanjuje rizike i povećava prenosivost (PostgreSQL, MariaDB, SQL Server). Važno je ne planirati „big bang“, već postupno: novi server-use-case-e već koriste novi Data-Access-Layer, dok se stari dijelovi postepeno migriraju.

Verzioniranje i kompatibilnost unazad: API-ugovori štite

Kompanije često podcijene koliko skupi mogu biti Breaking Changes. Jednom kad portal, partnerski sustav ili Windows-servis ovisi o vašem API-ju, ne možete „brzo“ preimenovati polja. Zato je čista strategija verzioniranja obavezna.

Pragmatična pravila za verzioniranje

  • Bez breaking changes bez verzije: ne preimenujte/uklanjajte polja, ne mijenjajte semantiku endpointa.
  • Proširivati, ne mijenjati: dodavati polja, stare označiti kao deprecated.
  • Kompatibilni defaulti: izbjegavati nova obavezna polja ili ih izvesti serverski.
  • Eksplicitno verzioniranje: npr. /v1/… ili preko headera; važnija je dosljednost nego metoda.

Za Delphi timove to znači i: držati DTO-e stabilnim i svjesno dizajnirati mapiranja, umjesto 1:1 serializacije domen-objekata. To inicijalno povećava napor, ali dugoročno smanjuje troškove podrške.

Observabilnost: logovi, metrike i traces planirati od početka

U produkcijskom poslovnom okruženju „radi mi“ nema vrijednost ako se greške ne mogu reproducirati. REST-Serveri koji opslužuju mnogo potrošača trebaju minimum observabilnosti:

Strukturirani logovi s korrelacionim ID-jem

Svaki request treba nositi korrelacioni ID (preuzeti ako je došao ili ga generisati) i on treba biti prisutan u logovima. Unosi u logovima trebaju biti strukturirani (npr. JSON) kako bi ih centralni sustavi mogli ingestirati. Naročito relevantno:

  • HTTP-metoda, ruta, status kod, trajanje
  • user/tenant kontekst (pseudonimiziran/u skladu s regulativom)
  • trajanje DB-operacija i klasa greške
  • korrelacioni ID za podršku

Metrike za kapacitet i trendove grešaka

Za skaliranje i stabilnost trebate metrike: zahtjevi po minuti, p95/p99 latencije, stope grešaka po endpointu, iskorištenost DB-poola, dužine redova. Ne mora biti „cloud-native overkill“, ali bez brojki rasprave o performansama postaju subjektivne.

Rukovanje greškama i izuzecima kao arhitektonski element

Delphi-exceptions ne smiju nekontrolisano izaći prema van. Centralna exception-middleware (ili globalni handler) treba izuzetke prevesti u dosljedne odgovorE o greškama, ukljućujući support-ID i smislen HTTP-kod. Interno stacktracce idu u sigurne logove, ne u odgovore klijentu.

Sinkrono vs. asinkrono: izbacite dugotrajne procese iz REST-odgovora

Mnogi poslovni procesi nisu „request/response u 200 ms“: generisanje PDF-a, import podataka, interfejsni pokreti, usklađivanja, masovne promjene, arhiviranje. Ti workloadovi rijetko trebaju raditi sinkrono u REST-endpointu jer vezuju threadove, pokreću timeoutove i blokiraju korisnike.

Job-Pattern

Dobar pristup je: endpoint pokrene job i server odmah vrati job-ID. Drugi endpoint vraća status/rezultat. Opcionalno callback/webhook obavještava klijenta. U Delphi se to implementira worker-servisima, job-tabelom i jasnom strojem stanja. Prednost: stabilnost i planirano skaliranje.

Queue-i i servisi

Ovisno o okruženju, message queue može biti koristan, ali nije uvijek potreban. Bitan je princip: interaktivni API-jevi ostaju responzivni, batch-procesi rade kontrolisano, ponovljivo i promatrano — kao Windows servisi ili Linux-servisi, ovisno o načinu deploymenta.

Deployment u kompanijama: Windows, Linux, containeri, on-prem

REST-Server arhitektura je „kompletna“ tek kad je upravljiva u radu. Kompanije se međusobno značajno razlikuju: klasični Windows-serveri, virtualizirani Linux hostovi, container platforme, stroge mrežne zone, proxy i certifikatske politike. Delphi je ovdje fleksibilan, pod uslovom da se ovisnosti kontroliraju.

Konfiguracija i secrets

Konfiguracija mora biti ovisna o okruženju (Dev/Test/Prod). Kredencijali ne pripadaju u EXE ili repozitorij. Koristite sigurnu pohranu (npr. secrets-management platforme) i odvojite konfiguracijske vrijednosti od code-release-a. Planirajte rotacije (DB-lozinke, API-ključevI) bez potrebe za ponovnim buildom sustava.

Strategije release-a i rollback-a

Ako više potrošača ovisi o API-ju, trebate kontrolirane release-e: migracione skripte za DB-promjene, feature-toggle-ove za postepeno uključivanje, jasne putanje za rollback. Posebno promjene u bazi moraju biti kompatibilne unazad ako rollback verzije servera treba ostati moguć.

Integracija s postojećim softverom: postupna modernizacija umjesto Big Bang-a

U mnogim Delphi okruženjima poslovni kernel je vrijedan, ali tehnički „zalijepljen“: pristupi bliski UI-u, globalna stanja, pomiješane odgovornosti. REST-API ovdje može biti i rizik i prilika. Cilj treba biti put koji uz prihvatljiv napor donosi mjerljive koristi.

Strangler-pristup za API-je

Umjesto potpunog pregradjivanja, definirajte poslovne točke koje donose stvarnu vrijednost: npr. „status naloga i dokumenti za kundenportal“, „lookup master-podataka za mobilne korisnike“, „interfejs za ERP-knjigovodstvo“. Ti use case-e implementirate kao nove API-funkcije, uključujući Domain-Layer i Data-Access. Stari klijent se može postepeno preusmjeriti na iste server-use-case-e bez potrebe za trenutnim redizajnom UI-a.

Zajednička poslovna logika: smisleno, ali kontrolisano

Delphi omogućava da poslovne biblioteke koriste i server i postojeće aplikacije. To može biti most, ali nosi i opasnosti: ako UI-ovisnosti prožmu zajedničku logiku, gubi se odvajanje. Jasno pravilo pomaže: zajednički koristi samo logiku bez UI-a, bez globalnih stanja, s jasnim interfejsima i testabilnim jedinicama. Sve drugo ostaje odvojeno.

Tipične greške u REST-Server projektima — i kako ih izbjeći

„Samo objavimo tabele“

Ako endpointi direktno odražavaju tabele, nastaje nestabilan sistem: svaki DB-refactoring postaje breaking change za API, poslovna pravila se dupliciraju u klijentima, a sigurnosne rupe zbog neprovjerenih parametara postaju vjerojatnije. Bolje: domain-use-case-i i DTO-i koji stabiliziraju ugovor.

Poslovna ovlaštenja samo u klijentu

Klijenti su zamjenjivi i manipulativni. Autorizacija treba biti na serveru i mora uzimati u obzir poslovna pravila, ne samo tehničke uloge.

Nema jasne strategije za konkurentnost

Paralelne izmjene se događaju: dva službenika, portal i interni klijent, ili import-job. Bez optimistic lockinga (npr. RowVersion/Timestamp), conflict-kodova (409) i jasnih pravila spajanja nastaju gubici podataka ili „posljednji zapis pobeđuje“ greške.

Dugotrajni procesi blokiraju interaktivne endpoint-e

Sinkrono generisanje PDF-a ili exporti vode do timeouta i iskustva „zaglavljivanja“. Bolji je job-pattern sa status-endpointima.

Observabilnost se naknadno zakači

Bez korrelacionog ID-ja, strukturiranih logova i metrika, svaka incident-analiza postane lov na iglu u plastu sijena. Promatljivost nije luksuz, već operativni preduvjet.

KonkretnA kontrolna lista za vašu REST-Server arhitekturu s Delphi

  • Jasno odvojiti slojeve: transport (HTTP), domena (use case-e), data access (FireDAC/SQL).
  • API shvatiti kao ugovor: držati DTO-e stabilnim, planirati verzioniranje, izbjegavati breaking changes.
  • Sigurnost u dva koraka: autentifikacija (token) plus autorizacija (poslovne politike, tenant).
  • Transakcije svjesno postaviti: po use case-u, time-outovi, strategija za konflikte.
  • Dugotrajne procese asinkronizirati: jobovi/worker-i, Windows- ili Linux-servisi.
  • Ugraditi observabilnost: korrelacioni ID, strukturirani logovi, metrike, centralno rukovanje greškama.
  • Realno planirati deployment: konfiguracija/secrets, rollback, migracije baze podataka.
  • Modernizacija iterativno: najprije vrijedni use case-evi, stari dijelovi postupno odvajati.

Zaključak: REST-Serveri daju vrijednost tek kao operativna i poslovna arhitektura

REST-Server arhitektura s Delphi posebno je efektivna kad se ne shvata samo kao „tehnička površina“, već kao povezujuće jezgro između procesa, podataka i kanala. Presudni su čisti slojevi (Layer-3 arhitektura), poslovno modelirani endpointi, dosljedna sigurnosna i tenantska logika te operativni model s verzioniranjem, monitoringom i kontrolisanom konkurentnošću. Tako API postaje stabilna platforma: za portale, integracije, servise i postupnu Delphi Modernisierung — bez ugrožavanja poslovne suštine razvijenog sustava.

Ako želite provjeriti kako postaviti robusnu REST-API na vašu postojeću Delphi-landskapu (uključujući strategiju baze podataka, FireDAC, servise i operacije), kontaktirajte nas ovdje: https://net-base-software-gmbh.de/kontakt/

Sljedeći korak

Kada se tema pretvori u stvarni projekat, arhitektura, postojeći sistem i operacije trebaju se rano sagledati zajedno.

Pružamo podršku ne samo pri pojedinačnim pitanjima, već i kada iz fragmenata izvornog koda, naslijeđenih sistema ili ideja za portal treba nastati robustan poslovni projekat.

  • Postojeće stanje, ciljno stanje i tehnički rizici procjenjuju se zajedno.
  • REST, pristup podacima, portali i Rollout se ne odgađaju kao naknadne posljedice.
  • Vi rano vidite koji je put ekonomski i operativno održiv.

Podijeli objavu

Ovu objavu direktno proslijediti

LinkedIn, X, XING, Facebook, WhatsApp i E-Mail su odmah dostupni. Za Instagram pripremamo link i kratak tekst.

E-pošta

Instagram se otvara u novom tabu. Link i kratak tekst se prethodno kopiraju u međuspremnik.