Net-Base Časopis

10.04.2026

REST-poslužiteljska arhitektura s Delphijem za poduzeća

APIs ostvaruju svoju vrijednost tek kada se poslovna logika, prava, model podataka i operacije zajedno planiraju.

10.04.2026

Od teme magazina do projektne prakse

Povezane stranice usluga i tehnologije za članak

Mnoge tvrtke danas se nalaze u sličnoj početnoj situaciji: postojeća strukturna aplikacija (često Delphi/VCL) pokriva ključne procese, ali odjednom mora podržati nove kanale. Korisnički portal treba podatke i tijekove, mobilni korisnici očekuju sigurne pristupe, sustavi trećih strana (ERP, DMS, CRM, BI) traže integracije. U toj situaciji REST-API djeluje kao očit korak. U praksi inicijative za API rijetko padnu zbog HTTP-a ili JSON-a – obično zakažu zbog nejasne raspodjele odgovornosti između klijenta, servera i sloja za pohranu podataka.

Održiva REST-Server-architektura s Delphi ne nastaje tako što se „par krajnjih točaka“ položi preko postojećih tablica baze podataka. Nastaje kada tvrtka zajednički sagleda poslovna pravila, sigurnosne zahtjeve, suverenitet podataka, granice transakcija i koncepte za operativni rad. REST-Server tako postaje stabilni ugovorni sloj između poslovne logike i konzumenata: desktop-klijent, portal, servisi, partneri preko sučelja. Upravo tu Delphi pokazuje svoje prednosti: brzi razvoj, robustno izvođenje, performantni nativni kod, dobra povezanost s bazom podataka (npr. pri BDE-ablösung mit nativer Anbindung) i mogućnost kontroliranog kapsuliranja poslovne logike u biblioteke ili server-module.

Ovaj članak opisuje kako tvrtke planiraju REST-Server s Delphi tako da ostanu poslovno konzistentni, uklapaju se u postojeći sustav i ne postanu izvor pogrešaka u radu. U fokusu su arhitektonski principi, tipične zamke u projektima modernizacije i konkretni elementi za sigurnost, pristup podacima, verzioniranje i observability.

Zašto je REST-API u poduzeću arhitekturna odluka

U klasičnom client-server svijetu mnoge su se odgovornosti implicitno raspodijelile u desktop-klijentu: validacije, promjene statusa, izračuni pa čak i autorizacija. Dok je postojao samo jedan klijent, to nije bio kritičan problem – poslovno nezgrapno, ali upravljivo. Kad više konzumenata pristupa istim poslovnim objektima, model se urušava:

  • Portal ne može „ponovno iskoristiti“ validacije koje su u klijentu.
  • Mobilne aplikacije trebaju offline mogućnosti, ali ne smiju duplicirati poslovna pravila.
  • Integracije traže stabilne, verzirane ugovore i jasnu semantiku pogrešaka.
  • Compliance zahtijeva praćenje pristupa, modele uloga i auditabilnost.

API postaje mjesto gdje se poslovna logika, prava i pristup podacima susreću. Njegova arhitektura odlučuje hoće li vaš sustav dugo ostati proširiv – ili ćete samo stvoriti nove tehničke dugove.

Delphi kao platforma za REST-Server: prednosti i tipični scenariji primjene

Delphi se u poduzećima često povezuje s desktop-aplikacijama. Za REST-Servere je Delphi također vrlo prikladan, posebno kada je riječ o ponovnoj upotrebi postojeće poslovne logike ili performantnim servisima. Tipični scenariji u B2B okruženjima:

  • API-sloj za postojeći softver: postojeća Delphi-poslovna aplikacija ostaje kao UI, dok REST-Server kapsulira pristup podacima i pravila za nove konzumente.
  • Backend za portal/korisnički dio: web-portal koristi REST-endpointe koji koriste isti skup pravila kao i interni procesi.
  • Integracijski i sučeljski server: povezivanje ERP/DMS/CRM, import/export, obrada događaja, vremenski zadani poslovi.
  • Linux-Services ili Windows Services: dugotrajni procesi, queue-workeri, scheduleri, workflows dokumenata.

Presudno nije ime frameworka, nego disciplina u slojevitosti, konkurentnosti, obradi pogrešaka i deploymentu. Delphi omogućava oboje: brzo isporučive iteracije i istovremeno čistu, modularnu arhitekturu – ako se planira namjerno.

Schichtenmodell: Layer-3 arhitektura kao temelj za dugotrajne API-je

Za poslovni softver dokazao se jasan, tanak model slojeva. U kontekstu Delphi to se često opisuje kao Layer-3 arhitektura. Nazivi variraju, ali odgovornosti trebaju biti nedvosmislene:

1) API-/Transport-sloj (HTTP, serializacija, routing)

Ovaj sloj se bavi HTTP-om, autentikacijom na razini protokola, formatima zahtjeva/odgovora, routingom, status kodovima, Content-Typeom, kompresijom. Poslovna pravila ovdje ne pripadaju. Cilj: zamjenjivost i testabilnost. Ako kasnije želite proširiti REST-API dodatnim protokolima (npr. WebSocket, gRPC-slični obrasci, Server-Sent Events), poslovni kernel mora ostati stabilan.

2) Domain-/Service-sloj (poslovna logika, use case, prava, transakcije)

Ovdje živi poslovna istina: stanja, izračuni, provjere, pravila za mandate, provjere prava na poslovne akcije. Ovaj sloj treba biti neovisan od UI-a i po mogućnosti bez poznavanja HTTP-a. Idealno je implementirati use case-e poput „odobriti nalog“, „zatvoriti ticket“, „generirati fakturu“ umjesto pukog CRUD-a nad tablicama.

3) Data-Access-sloj (repositories, SQL, FireDAC, mapiranje)

Ovaj sloj kapsulira persistenciju: SQL, stored procedure, upravljanje transakcijama, koncepti blokiranja, connection-pooling, specifičnosti DB-a. U Delphi-okruženju BDE-Ablosung mit nativer Anbindung je često pragmatičan izbor, osobito pri migracijama (npr. BDE-ablösung) i kod heterogenih baza (SQL Server, PostgreSQL, MariaDB, Firebird). Važno je da Data-Access-sloj nema znanje o HTTP-u i ne donosi poslovne odluke.

Ovaj model smanjuje povezanost: promjene u modelu podataka ne zahtijevaju ponovno pisanje API-ja, a novi klijenti automatski nasljeđuju istu logiku. Posebno pri Delphi modernizaciji to je temelj za postupno odvajanje rasta desktop-aplikacija bez prekida rada.

API-dizajn za poslovni softver: ne CRUD, već poslovni ugovori

Mnogi API-ji počnu s endpointima poput /customers, /orders, /documents i implementiraju CRUD. To je za interne alate ponekad dovoljno, ali u poslovnom softveru brzo postane plitko. Poslovni procesi sastoje se od prijelaza stanja, pravila, nuspojava i ovlasti.

Resursi, akcije i stanja jasno modelirati

Bolji obrazac je kombinacija resursa i jasno definiranih akcija, npr.:

  • Čitanje resursa: GET /orders/{id}
  • Pokretanje akcije: POST /orders/{id}/release
  • Generiranje dokumenta: POST /orders/{id}/documents/invoice
  • Provjera statusa: GET /orders/{id}/status

To u ugovoru API-ja čini vidljivim da „odobriti“ nije puko ažuriranje polja. Server može centralno provoditi validacije, pravo, transakcije, audit i prateće procese.

Semantika pogrešaka i validacija: učinite ih planabilnim za klijente

Poslovni klijenti moraju moći razlikovati pogreške: validacijske pogreške (400), nedostatak ovlasti (403), konflikt zbog paralelne promjene (409), poslovno odbijanje (često 409 ili 422), privremeni problemi backend-a (503). Važno je konzistentna struktura pogreške, npr. s kodom pogreške, porukom, opcionalnim naznakama polja i korrelacijskom ID-om. Tako portal može prikazati razumljive poruke, a istovremeno podrška i operacije učinkovito pratiti problem.

Sigurnost: autentikacija nije jednako autorizaciji

U B2B kontekstu sigurnost rijetko pada zbog enkripcije, češće zbog nedvojbene odvojenosti identiteta, uloga i poslovnih ovlasti. REST-Server arhitektura mora stoga razlikovati dvije razine:

Autentikacija (tko 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: životni vijek tokena, mehanizam osvježavanja, onemogućavanje pri promjeni uloga te pitanje koristite li različite Identity-Providere za portale i interne sustave. Delphi-Serveri mogu ovdje djelovati i kao resource-serveri, ali ovisno o postavu mogu i izdavati tokene. U mnogim poslovnim okruženjima integracija u postojeće identity-sustave (npr. AD/LDAP, SSO) je ključna.

Autorizacija (smije li to?)

Autorizacija treba biti u Domain-/Service-sloju. Uloge i prava rijetko su isključivo tehnička; ovise o tenant-u, lokaciji, organizacijskoj jedinici, statusu ugovora ili fazi procesa. Dobra praksa:

  • Model uloga (npr. Admin, Referent, Auditor) kao osnova
  • Poslovne politike („može generirati fakturu samo u statusu X“, „može vidjeti samo vlastite tikete“)
  • Mandantnost kao standard: svaki zahtjev treba tenant-kontekst
  • Auditing: tko je koju akciju i kada pokrenuo

API ne bi trebao samo vraćati „pristup dozvoljen/odbijen“, već dosljedno spriječiti da manipulacijom parametara podaci drugih tenant-a postanu vidljivi. To zvuči očito, ali u rastućim sustavima jedan je od najčešćih arhitektonskih propusta ako se „tablice stave na HTTP“ previše brzo.

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

U poslovnim aplikacijama pristup podacima je faktor stabilnosti: vršne opterećenja, deadlockovi, dugi izvještaji, paralelna ažuriranja, batch-importi. FireDAC je u Delphi-ekosustavu dokazan element za ujednačen pristup različitim bazama. Za REST-Server arhitekturu posebno su važni sljedeći aspekti:

Granice transakcija po use case-u

REST-API je tipično request-baziran. To odgovara konceptu „transakcija po use case-u“: unutar zahtjeva otvara se transakcija, obavljaju se poslovne operacije, zatim commit/rollback. Važno: ne stavljati automatski svaki endpoint u transakciju, ali biti konzistentan kod pisanih operacija. Endpointi za čitanje mogu također trebati transakcije ovisno o razini izolacije ako su konzistentni pogledi bitni.

Strategija konekcija i paralelizam

Server-paralelizam znači: mnogo istovremenih zahtjeva, svaki s pristupom DB-u. Zato planirajte:

  • ograničene, nadzirane veličine poolova
  • timeouts za upite i veze
  • jasna pravila za dugotrajne operacije (premjestiti u poslove/worker-e)

Čest je propust pokretati teške izvještaje ili masovne exporte sinkrono preko iste API-instance koja služi interaktivnim portal zahtjevima. Bolje je razdvajanje: interaktivno vs. batch/async.

Modernizacija baze podataka kao dio planiranja API-ja

Ako u postavci postoje stariji pristupi podacima (npr. BDE), API postaje katalizator: prisiljava na jasne granice pristupa podacima. Kontrolirano premještanje prema FireDAC smanjuje rizike i povećava portabilnost (PostgreSQL, MariaDB, SQL Server). Važno je ne planirati to kao „Big Bang“, već postepeno: novi server-use-case-ovi koriste već novi Data-Access-sloj, dok ostali dijelovi sustava naknadno prate.

Verzioniranje i unatrag kompatibilnost: ugovori API-ja štite

Tvrtke često podcjenjuju koliko su skupe breaking promjene. Kad portal kupca, partnerski sustav ili Windows-servis ovise o vašem API-ju, ne možete više „brzo“ preimenovati polja. Čista strategija verzioniranja je stoga obavezna.

Pragmatična pravila za verzioniranje

  • Bez breaking promjena bez verzije: ne preimenovati/uklanjati polja, ne mijenjati semantiku endpointa.
  • Proširivati umjesto mijenjati: dodavati nova polja, starima dodijeliti deprecated status.
  • Kompaktni defaulti: izbjegavati nova obavezna polja ili ih izvesti server-side.
  • Eksplcitno verzioniranje: npr. /v1/… ili preko headera; važnija je dosljednost nego metoda.

Za Delphi-timove to također znači: držati DTO-e stabilnima i svjesno postaviti mapiranja umjesto serijalizacije domain-objekata 1:1. To početno povećava napor, ali dugoročno smanjuje troškove podrške.

Observability: logovi, metrike i trace-ovi od početka

U produkcijskom poslovnom radu „meni radi“ nema vrijednosti ako se pogreške ne mogu reproducirati. Posebno REST-Serveri koji služe mnogim konzumentima trebaju minimum observability-a:

Strukturirani logging s korrelacijskom ID-om

Svaki zahtjev treba imati korrelacijsku ID (preuzetu iz dolaznog zahtjeva ili generiranu) i ona treba biti prisutna u logovima. Zapisi bi trebali biti strukturirani (npr. JSON-log) kako bi se mogli ingestirati u centralne sustave. Najmanje relevantno:

  • metoda zahtjeva, ruta, status kod, trajanje
  • user-/tenant-kontekst (pseudonimizirano/u skladu s pravilima)
  • trajanje DB-a i klasa pogreške
  • korrelacijska ID za podršku

Metrike za kapacitet i trendove pogrešaka

Za skaliranje i stabilnost trebaju vam metrike: zahtjevi po minuti, p95/p99 latencije, stope pogrešaka po endpointu, iskorištenost DB-pool-a, duljine queue-a. Ne treba biti „cloud-native overkill“, ali bez brojki rasprave o performansama postaju puko mišljenje.

Rukovanje pogreškama i iznimkama kao arhitektonski element

Delphi-Exceptions ne smiju ne kontrolirano curiti prema klijentu. Centralna exception-middleware (ili globalni handler) treba prevoditi iznimke u konzistentne odgovore o pogrešci, uključujući Support-ID i odgovarajući HTTP-code. Interno pripadaju stacktraceovi sigurnim logovima, a ne odgovorima klijentu.

Sinkrono vs. asinkrono: izbacite dugotrajne operacije iz odgovora REST

Mnogi poslovni procesi nisu „request/response u 200 ms“: generiranje PDF-a, import podataka, pokretanje sučelja, usklađivanja, masovne izmjene, arhiviranje. Takvi workloadi rijetko pripadaju sinkronom REST-endpointu jer vežu threadove, izazivaju timeoute i blokiraju korisnike.

Job-pattern

Iskusan pristup je: endpoint pokreće posao, server odmah vraća Job-ID. Drugi endpoint vraća status/rezultat. Opcionalno callback/webhook obavještava klijenta. U Delphi se to može realizirati worker-servisima, tablicom poslova i jasnom statusnom mašinom. Prednost: stabilnost i planabilno skaliranje.

Redovi poruka i servisi

Ovisno o okolini message queue može imati smisla, ali ne mora biti nužna. Bitan je princip: interaktivni API-ji ostaju responzivni, batch-procesi se pokreću kontrolirano, ponovljivo i promatrano – kao Windows servisi ili Linux servisi, ovisno o deploymentu.

Deployment u poduzećima: Windows, Linux, containeri, on-prem

REST-Server arhitektura je „kompletna“ tek kada je upravljiva u radu. Tvrtke se vrlo razlikuju: klasični Windows-serveri, virtualizirani Linux-hostovi, container platforme, stroge mrežne zone, proxy i certifikacijski zahtjevi. Delphi je ovdje fleksibilan, pod uvjetom da se ovisnosti čisto kontroliraju.

Konfiguracija i tajne

Konfiguracija mora ovisiti o okolini (Dev/Test/Prod). Pristupni podaci ne smiju biti u EXE-u ili repozitoriju. Koristite sigurno skladištenje (npr. secrets-management platforme) i odvojite konfiguracijske vrijednosti od izdanja koda. Planirajte i rotacije (DB-lozinke, API-ključevе) bez potrebe za ponovnom gradnjom sustava.

Strategije izdanja i povrata

Kada više konzumenata koristi API, trebate kontrolirana izdanja: migracijske skripte za promjene u DB-u, feature-toggle za postupnu aktivaciju, jasne putanje za rollback. Posebno promjene u bazi moraju biti unatrag kompatibilne ako povratak verzije servera treba ostati moguć.

Integracija s postojećim softverom: postepena modernizacija umjesto Big Bang

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

Strangler-pristup za API-je

Umjesto potpunog preuređenja definirajte poslovne točke koje donose stvarnu vrijednost: npr. „status naloga i dokumenti za korisnički portal“, „lookup master-podataka za mobilne korisnike“, „sučelje za ERP knjiženja“. Ti use case-ovi implementiraju se kao nove API-funkcije, uključujući Domain-Layer i Data-Access. Stari klijent se može postupno prebacivati na iste server-use-case-e bez potrebe za istovremenim redizajnom UI-a.

Zajednička poslovna logika: smisleno, ali kontrolirano

Delphi dopušta upotrebu poslovnih biblioteka i u serveru i u postojećim aplikacijama. To može biti most, ali nosi rizike: ako se ovisnosti o UI-u uvuku u zajedničku logiku, gubi se odvajanje. Jasno pravilo pomaže: zajednički upotrebljiva logika mora biti bez UI-a, bez globalnih stanja, s jasnim sučeljima i testabilnim jedinicama. Sve ostalo ostaje odvojeno.

Tipične pogreške u REST-Server projektima – i kako ih izbjeći

„Jednostavno objavimo tablice“

Ako endpointi direktno preslikavaju tablice, nastaje nestabilan sustav: svaki DB-refactoring postaje breaking change API-ja, poslovna pravila se dupliciraju po klijentima, a sigurnosne rupe zbog neprovjerenih parametara vjerojatne su. Bolje: poslovni use case-i i DTO-i koji stabiliziraju ugovor.

Poslovna prava samo u klijentu

Klijenti su zamjenjivi i manipulativni. Autorizacija pripada serveru i mora uzeti u obzir poslovna pravila, a ne samo tehničke uloge.

Nema jasne strategije za konkurentnost

Paralelna ažuriranja se događaju: dva referenta, portal i interni klijent, ili import-job. Bez Optimistic Locking-a (npr. RowVersion/Timestamp), kodova konflikta (409) i jasnih pravila za merge nastaju gubici podataka ili greška „posljednji upis pobjeđuje“.

Dugotrajne operacije blokiraju interaktivne endpoint-e

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

Observability se naknadno nadodaje

Bez korrelacijske ID, strukturiranih logova i metrika svaka smetnja postane potraga. Promatljivost nije luksuz, već pretpostavka za rad.

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

  • Jasno razdvojiti slojeve: transport (HTTP), domena (use case-i), data access (FireDAC/SQL).
  • Razumjeti API kao ugovor: držite DTO-e stabilnima, planirajte verzioniranje, izbjegavajte breaking promjene.
  • Sigurnost u dvije razine: autentikacija (token) plus autorizacija (poslovne politike, tenant).
  • Transakcije svjesno postaviti: po use case-u, timeouts, strategija za konflikte.
  • Dugotrajnim operacijama pristupiti asinkrono: poslovi/worker-i, Windows- ili Linux-servisi.
  • Ugraditi observability: korrelacijska ID, strukturirani logovi, metrike, centralizirano rukovanje pogreškama.
  • Realno planirati deployment: konfiguracija/tajne, rollback, migracije baze podataka.
  • Modernizaciju provoditi iterativno: najprije vrijedni use case-ovi, stari dijelovi postupno odvojiti.

Zaključak: REST-Serveri pokažu vrijednost tek kao operativna i poslovna arhitektura

REST-Server arhitektura s Delphi posebno je učinkovita za tvrtke ako se ne shvati kao „tehnička površina“, već kao povezivo središte između procesa, podataka i kanala. Presudno su čisti slojevi (Layer-3 arhitektura), poslovno modelirani endpointi, dosljedna sigurnosna i tenant-logika te operativni model s verzioniranjem, monitoringom i kontroliranom konkurentnošću. Tako API postaje stabilna platforma: za portale, integracije, servise i postupnu Delphi modernizaciju – bez izlaganja poslovne suštine rastućeg sustava.

Ako želite provjeriti kako se robusni REST-API može uspostaviti nad vašom postojećom Delphi-landskom (uključujući strategiju baze podataka, FireDAC, servise i operacije), kontaktirajte nas ovdje: https://net-base-software-gmbh.de/kontakt/

sljedeći korak

Ako se tema pretvori u stvarni projekt, arhitekturu, postojeće sustave i operacije trebalo bi rano zajednički razmotriti.

Podržavamo vas ne samo u pojedinačnim pitanjima, već i kada iz isječaka izvornog koda, naslijeđenih sustava ili ideja za portale treba nastati pouzdan poslovni projekt.

  • Postojeće stanje, ciljna slika i tehnički rizici procjenjuju se zajedno.
  • REST, pristup podacima, portali i rollout neće biti odgođeni kao naknadne posljedice.
  • Rano prepoznajete koji je put ekonomski i operativno održiv.

Podijeli objavu

Izravno proslijedite ovu objavu

LinkedIn, X, XING, Facebook, WhatsApp i e-pošta su odmah dostupni. Za Instagram odmah pripremamo poveznicu i kratak tekst.

E-pošta

Instagram se otvara u novoj kartici. Link i kratki tekst se prethodno kopiraju u međuspremnik.