Net-Base Магазин

22.05.2026

Развој пословног софтвера за више закупаца: архитектура, модел података и експлоатација без изненађења

Мулти-тенантност одлучује о скалирању, оперативним трошковима и безбедности. Овај чланак показује како да планирате мулти-тенантски пословни софтвер тако да подаци буду јасно раздвојени, права приступа проверљива и ажурирања се могу применити без прекида рада.

22.05.2026

Ко жели да развија višenajamski poslovni softver, доноси ране архитектонске одлуке које се касније тешко могу „отконфигурисати“. Višenajamskost није само питање лиценци или корисничког интерфејса, већ утиче директно на модел података, овлашћења, интерфејсе, процесе ажурирања, подршку и не на последњем месту на доказе о безбедности. У пракси Multi-Tenant-пројекти ретко не успевају због самe пословне логике, већ због неодређених разграничења: Где тачно почиње један закупац? Како се подаци изолују? Које компоненте смеју да раде преко више закупаца (нпр. мониторинг, backup, слање е-поште) – и како се то ревидира?

Овај текст је намењен IT руководство, администраторима и технички одговорним у пројектима. Описује проверене шаблоне, типичне погрешне претпоставке и конкретна питања за одлучивање у вези са операцијом и даљим развојем. Фокус је свесно на утицајима у свакодневном раду: провизионисање нових закупаца, модели улога и права, миграција података, рад интерфејса, логовање, backup/RESTore и могућност ажурирања. Циљ је архитектура која остаје трајно одржива – без обзира да ли решење ради као интерни систем, у више пословних јединица или касније као хостована платформа.

Шта višenajamskost у пословном контексту заиста значи

Višenajamskost (често названа Multi-Tenancy) значи да софтвер у једној техничкој платформи мапира више организационо одвојених јединица („zakupac/зіakupac“). Један zakupac може бити предузеће, филијала, локација, купац или пословна јединица. Кључно је: zakupci не смеју да виде или утичу на податке или функције другог zakupca, осим ако то није експлицитно предвиђено и проверено (нпр. конзолидовани извештаји за концерн).

У пројектима је корисно дефинисати višenajamskost дуж три осе:

  • Изолација података: Како се обезбеђује да су подаци читљиви и записиви само у контексту правог zakupca?
  • Иденитет и овлашћења: Како се корисник повезује са zakupcem и како се проверавају улоге/скоупови?
  • Оперативна изолација: Колико се закупци требају међусобно утицати у погледу оптерећења, отказа, ажурирања и прозора за одржавање?

Ове осе воде ка различитим реализaцијама. Решење може, на пример, строго да раздвоји податке (посебне базе података), а опертивно да буде јако повезано (заједничка деплоја, заједничке редове задатака, заједнички индекси претраге). За одлучиваче је важно да višenajamskost није „прекидач“, већ спектар са импликацијама на трошкове и ризик.

Архитектонске одлуке за višenajamski пословни софтвер

Пре него што проширите табеле или корисничке интерфејсе учините „višenajamsким“, требa да разјасните границе система: које компоненте припадају платформи, које се конфигуришу по zakupcu, и који подаци смеју бити централно анализирани? У постојећим корпоративним пејзажима кључне су и интеграције са ERP, DMS, CRM или Identity Provider-има (IdP).

Single-Tenant vs. Multi-Tenant: функционално исто, технички веома различито

Single-Tenant значи: по zakupcu јединствена инстанца (барем сопствена база података, често и сопствени апликациони стек). Multi-Tenant значи: више zakupaca деле инстанце и инфраструктуру – уз логичку разделу. Multi-Tenant често смањује трошкове за roll-out и операцију, али повећава захтеве за изолацијом, тестном покрићем и observabilnosti (посматрање кроз логовање/metrike/tracing).

Често се примењује прагматичан приступ: „Multi-Tenant у коду, Single-Tenant у оперативном окruženју“ за критичне закупце. То значи: код доследно управља контекстима закупаца, али појединачни закупци могу опционално да се покрећу одвојено (нпр. из разлога усаглашености или перформанси). За то је потребно да конфигурација, Deployment и Monitoring од почетка буду припремљени за обе варијанте.

Кontekst zakupca као доследно архитектонско начело

Многе грешке настају јер се контекст закупца само на појединим местима „додатно убацује“ (нпр. филтри у SQL-у, додатни параметри у сервисима). Стабилније је ако контекст закупца постане доследно начело:

  • Сваки захтев има једнозначно утврђеног закупца (из token/SSO, поддомене, header-а, клијентског сертификата или конфигурисаног endpoint-а).
  • Контекст закупца се у serverskoj логици третира као обавезна информација (нема подразумеваних закупаца, нема „ако је празно, онда…“).
  • Слојеви приступа подацима и интерфејси наметају филтере по закупцу или везивање за закупца, уместо да их чине опционалним.
  • Logging и audit садрже закупца, корисника/сервисни налог и корелациони ID, како би операције и подршка могли да прате шта се десило.

Овај приступ „контекст закупца прво“ смањује класу грешака које се појављују тек у раду: погрешни извештаји, случајна мешавина података, тешко објашњиви случајеви дозвола и непотпуни audit‑трагови.

Модел података: Три уобичајена шаблона изолације и њихове последице

Најважнија техничка одлука за подршку закупаца односи се на чување података. Она обликује Backup/RESTore, миграције, перформансе и доказе о безбедности. У суштини постоје три шаблона, који се могу и комбиновати.

1) База података по закупцу

Сваки закупац има сопствену базу података (или сопствени кластер база). Предности: врло јасна изолација, једноставан RESTore по закупцу, добра основа за диференциране прозоре одржавања. Недостаци: већи напор око provisioninga, више веза, више миграција шема и већа сложеност у раду (нпр. мониторинг преко великог броја база података).

Типични случајеви употребе: веома строги захтеви по питању усаглашености, закупци са значајно различитим количинама података или сценарији у којима закупци захтевају различите циклусе издања. Администратвно важно: потребна је солидна аутоматизација за аžuriranja šeme, upravljanje indeksima, rezervne kopije и prava pristupa – иначе ће се напор експоненцијално повећавати са бројем закупаца.

2) Шема по закупцу

Један сервер базе података, али по закупцу сопствена шема (или namespace). То је средњи облик изолације: лакше раздвојиво од чистих филтера по редовима, али мање тешко него целокупне базе података. Backup/RESTore по закупцу је, у зависности од технологије базе података, могућ, али не увек тривијалан. Миграције је лакше координирати него код „DB по закупцу“, међутим број објеката остаје висок.

Важно за рад: проверите рано како алати за Monitoring, Backup и миграцију рукују великим бројем шема, и да ли стандардни извештаји и BI приступи могу schema‑overarching чисто да прикажу податке без слабљења безбедносног оквира.

3) Заједничке табеле са Tenant-ID (row‑базирана подела)

Сви закупци деле табеле; сваки ред носи Tenant‑ID. За многе случајеве употребе то је ефикасно, смањује број објеката и поједностављује глобалне миграције. Истовремено расте одговорност апликације и/или базе података да поуздано наметне раздвајање.

Aко примените раздвајање на нивоу редова, требало би да два аспекта посебно схватите озбиљно:

  • Техничко принуђивање: Не ослањајте се само на „ми свуда филтрирамо по Tenant-ID“. Користите, где је могуће, механизме базе података као што су Row-Level Security (RLS; филтрирање редова на страни базе података засновано на контексту сесије или улогама), Views или Security-Policies. Која опција одговара зависи од базе података.
  • Међумандантне нежељене последице: Велики манданти могу утицати на индексе, стопу погодка кеша и понашање закључавања. То није пресудни критеријум за одбацивање, али мора бити узето у обзир при планирању капацитета и у тестирању.

Хибридни модели: често реалнији од „или/или“

У пракси су хибридни модели уобичајени: основне трансакције у заједничким табелама (за једноставна ажурирања), посебно осетљиви подаци у одвојеним базама података или шемама, као и централно „Control Plane“ подручје за управљање мандантима, наплату, Feature-Flags и глобалну конфигурацију. Кључно је да су те границе документоване и технички обезбеђене.

Дозволе и идентитети: мандант, улога, Scope

Мандантска функционалност зависи од поузданог концепта овлашћења. За рад је важније не толико колико је модел елегантан, већ да ли је у пракси проверљив и погодан за дијагностику: Зашто је корисник X могао да изврши акцију Y? Која улога је коришћена? Која политика је донела одлуку?

SSO и додела манданта: SAML 2.0, OIDC и директоријуми

У корпоративним окружењима често се користи Single Sign-on (SSO). SSO значи да се пријава врши преко централног Identity Provider-а, а апликација само верификује токене/асерције. Уобичајено су SAML 2.0 (на бази асерција, често у класичним Enterprise-setup-овима) или OpenID Connect (OIDC; на бази токена, често у модернијим IdP-стековима). Важно је: Додела манданта мора бити јасна и заштићена од манипулације.

Проверене опције:

  • Мандант преко Issuer/IdP (један IdP по манданту) – врло јасно, али организационо захтевније.
  • Мандант преко Claim/Attribut (нпр. Tenant-ID у токену) – флексибилно, захтева чисту валидацију и мапирање.
  • Мандант преко Subdomain или одвојених Endpoints – добро за портале, смањује погрешну употребу, али мора се добро ускладити са SSO-редиректима.

Модел улога и администрација манданта без „Support-Tickets“

Чест извор трошкова је да свака измена у манданту (нови корисник, нова улога, нова додела локације) заврши као ручна интервенција. Циљ треба да буде: Манданти могу сами управљати својим корисницима и улогама у оквиру дефинисаних граница, без да централни администратори морају да дирају сваки детаљ.

У пракси су уобичајене вишестепене улоге:

  • Plattform-Admin (одржава окружење, види метаподатке манданта, не нужно податке манданта).
  • Mandanten-Admin (управља корисницима, улогама и конфигурацијом у манданту).
  • Fachrollen (нпр. руковање предметима, вођа тима, одобрење).
  • Technische Servicekonten (за интерфејсе, послове, аутоматизацију) са минималним правима.

Оперативно важно: улоге треба да буду верзионисане и подложне аудиту. Ако се права „на брзину“ мењају директним ажурирањем или неконтролисаном конфигурацијом, губи се пратљивост — а тиме и време при аудитима и отклањању погрешака.

Интерфејси и интеграција: мултитенантност не завршава на API-Gateway

Многе дигиталне корпоративне компоненте зависе од интеграција: ERP, DMS, CRM, Data Warehouse, партнерски портали, повезивање са машинама. Због тога мултитенантност мора бити доследно примењена и на интерфејсима. То обухвата REST-APIs (HTTP-базирани интерфејси), Eventing/Queues, фајл-интерфејсе и E-Mail-/Webhook-процесе.

REST-API: Tenant-Scoping као уговор

Код REST-APIs пресудно је како се тенант одређује у захтеву. Честа решења су субдомен/хост, тенант-хедер или claim у Access Token-у. Важно је да то не остане само конвенција, већ да буде документовано и као уговорни део API‑ја и примењено на серверској страни.

За операцију је такође важно: API треба јасне поруке о грешкама и лог податке који садрже тенанта, endpoint, корисника/клијента, Request‑ID и релевантне параметре — без непотребног бележења личних података. На тај начин администратори и подршка могу репродуковати и решити случајеве без додиривања података других тенаната.

Асинхрони процеси: Jobs, Queues и Scheduler — планирање са подршком за тенанте

Batch‑Jobs, увози, генерисање извештаја или ноћне синхронизације често се извршавају асинхроно. Управо овде се мешање тенаната најлакше јавља, јер worker „у позадини“ ради без активног корисничког контекста. Због тога планирајте:

  • Веза задатка са тенантом: Сваки задатак носи Tenant-ID и „изазивајући контекст“ (корисник или сервисни налог).
  • Ограничења ресурса: Велики тенанти не смеју потпуно доминирати обрадом задатака (поштено коришћење, квоте, приоритети).
  • Артефакти издвојени по тенанту: Привремене датотеке, експорти, S3‑bucket‑и/путеви за дељење, E‑Mail шаблони и Webhook‑секрети морају бити управљани по тенанту.

Операција и безбедност: шта администратори заиста требају

Мултитенантност у операцији делује као множилац: грешка, лош деплој или нејасан аларм може утицати на многе тенанте. Обратно, добро вођена платформа може брже и конзистентније применити ажурирања. Кључно је да операције и безбедност не буду „надограђивани“ накнадно, већ да буду саставни део архитектонског дизајна.

Логовање, аудит и пратљивост

За корпоративни софтвер треба разликовати две врсте логова:

  • Техничко логовање: грешке, перформансе, проблеми интеграције, тајм-аути. Мора да садржи тенанта и корелациони ID, како би се у расподељеним компонентама могла пронаћи транзакција.
  • Аудит-логовање: ко је извршио коју пословну радњу (нпр. промена основних података, покретање извоза, додела права)? Аудит‑логови су релевантни за безбедност и захтевају јасне политике чувања и приступа.

Важно: аудит није „још један лог“. Аудит мора бити отпоран на манипулације, пратљив и анализиран. Истовремено важе принципи минимизације података: не свака детаљна информација треба трајно ући у аудит, већ чињенице потребне за доказ и реконструкцију.

Backup/Restore: моћи селективно вратити тенанте

Питање рестаурације је лакмусов тест за ваш податковни модел. Глобални backup је брзо направити, али штета настаје када појединачни мандант пријави губитак података и ви можете вратити само „све или ништа“. У зависности од модела изолације, различите стратегије су смислене:

  • DB pro Mandant: Рестаурација је најјаснија, али захтева оркестрацију ако је потребно конзистентно вратити више база података (нпр. база података + индекс претраге + фајл-сторе).
  • Shared DB: Рестаурација по манданту је значајно сложенија. Овде помажу мандант-специфични механизми експорта/снепшота, приступи засновани на Event-Sourcing или додатне заштитне мере (логичко брисање, верзионисање, процеси одобравања).

За администраторе је пресудно постојање документоване процедуре: Колико времена траје ресторе? Који системи су укључени? Како се тестира да мандант поново ради „исправно“ (smoke тестови, интеграциони чекови)?

Patching und Update-Strategie: Schema-Migrationen ohne Stillstand

Централна предност платформи је способност да се апдејти усклађено примењују. То функционише само ако планирате миграције шеме (промене у структури базе података) и апликацијске апдејте као повезан процес. Добра пракса је:

  • Vorwärtskompatible Deployments: Нове верзије софтвера могу привремено радити са старом шемом и/или стара софтверска верзија може радити са новом шемом. То смањује прекид рада.
  • Migrationen in kleinen Schritten: Уместо „Big Bang“ интервенција: додајте нове колоне, податке постепено попуните (backfill), и тек касније уклоните старе структуре.
  • Feature-Flags pro Mandant: Функције се могу активирати за одабране манданте како би се ризици ограничили и ролоути контролисали.

За ИТ-руководство је битно: способност ажурирања је инвестиција. Она касније штеди време при безбедносним исправкама, променама оперативног система, надоградњама базе података и изменама интеграције – дакле управо у оним областима које дугорочно генеришу трошкове.

Provisionierung und Mandanten-Lifecycle: vom Onboarding bis zur Deaktivierung

Подршка за рад са мандантима је заокружена тек када се размишља о целом животном циклусу. У пракси се не рачунају само нове инстанце, већ и измене: додатне локације, нови Identity-Provider-и, промена уговора, извози података и деактивације.

Onboarding: Was automatisiert sein sollte

Технички исправан онбординг смањује грешке и оптерећење подршке. Типичне компоненте:

  • Креирати манданта (Tenant-ID, име, контакт, статус).
  • Поставити конфигурацију (регион, језик, временска зона, e‑mail домене, брендирање ако је предвиђено).
  • Конфигурисати повезивање идентитета (SSO метаподаци, сертификати, redirect-URL-ови).
  • Обезбедити почетне улоге и админ кориснике.
  • Провизионирати техничке ресурсе (база података/шема, складиште, индекс претраге, редови/queues).
  • Активирати мониторинг и алармирање за манданта.

Што је више тога репродуктивно аутоматизовано, то има мање „специјалних случајева“. То није само ефикасност, већ смањење ризика: ручни кораци су најчешћи извор неконзистентних конфигурација.

Datenexport und Offboarding: unterschätzt, aber sicherheitskritisch

Offboarding je bezbednosno i compliance pitanje: koji podaci moraju biti izvozivi (npr. za predaju), koji podaci moraju biti izbrisani ili anonimizovani, i kako se to dokazuje? Čak i bez specifičnog pravnog saveta važi tehnički: potrebne su jasne odgovornosti, definisani rokovi i proces koji je ponovljiv.

Ako se podaci nalaze u više sistema (baza podataka, skladište datoteka, pretraživački indeks, logovi, backup kopije), offboarding mora uzeti u obzir te slojeve. Posebno su backup kopije osetljive: potpuno brisanje iz istorijskih backup kopija često praktično nije moguće. Tim više je važno imati koncept koji to transparentno prikazuje (period čuvanja, kontrola pristupa, rotacija) i koji podatke zakupaca van produkcionih sistema ipak adekvatno štiti.

Tipični obrasci grešaka iz prakse – i kako ih izbeći

Višekorisničnost retko zakaže spektakularno, češće zbog mnogo malih dizajnerskih propusta. Sledeći obrasci grešaka se redovno javljaju u projektima:

  • Tenant-ID kao „opciona“: Pojedini endpointi, poslovi ili izveštaji zaborave filter. Rešenje: tehničko primenjivanje (Policies/RLS), testovi i konzistentna arhitektonska pravila.
  • Deljena konfiguracija bez verzionisanja: Izmene u modelu uloga ili u feature-flagovima kasnije se ne mogu pratiti. Rešenje: verzionisati konfiguraciju, auditovati izmene.
  • Keševi preko više zakupaca: Keširanje bez Tenant-Key dovodi do curenja podataka. Rešenje: Cache-Key uvek osetljiv na zakupca, osetljive podatke keširati kraće.
  • Podrška ne može da suzi problem: Nedostaje korelacija i metrike po zakupcima. Rešenje: korelacioni ID, tagovi zakupca u logovima/metrikama, jasni dashboardi.
  • Migracije traju predugo: Velike prepravke tabela blokiraju rad. Rešenje: inkrementalne migracije, pozadinski procesi, planiranje vremenskih prozora.

Ove tačke su manje „detalji za programere“, a više operativna realnost. Ko ih rano adresira, smanjuje kasnije troškove za hotfixove, prozore za hitne intervencije i nejasne odgovornosti.

Razvijanje poslovnog softvera podržavajućeg višekorisničnost: kontrolna lista za pouzdane odluke

Kada u projektu postavljate pravac, konkretna pitanja pomažu da se jasno ocene arhitektonska i operativna sposobnost:

  • Koja izolacija je potrebna: tehnička (podaci), organizaciona (pristupi), operativna (prozori održavanja/opterećenje)?
  • Kako se zakupac jednoznačno određuje (SSO-Claim, poddomen, sopstveni endpoint)?
  • Kako se izolacija nameće (mehanizmi baze podataka, centralni sloj za pristup, Policies)?
  • Kako izgleda slučaj RESTore-a: po zakupcu, sa kojim zavisnostima, u kom roku?
  • Kako se izvode update-i: migracija šeme, strategija rollback-a, Feature-Flags?
  • Koja observability postoji: metrike po zakupcu, audit, alarmiranje, Runbooks?
  • Kako se integracije vode za više zakupaca (servisni nalozi, Secrets, rate-limiti, Webhooks)?

Ova pitanja su namerno formulisana iz operativne perspektive. Ako na njih možete odgovoriti, obično ste i arhitektonski na stabilnom putu.

Fazit: Višekorisničnost ist ein Betriebsversprechen, kein UI-Feature

Podrška za više zakupaca odlučuje o tome da li se poslovni softver može godinama ekonomski održavati i bezbedno dalje razvijati. Suštinski rad leži u jasnim granicama: kontekst zakupca kao obaveza, pouzdana izolacija podataka, proverljive privilegije, interfejsi prilagođeni višezakupničkom režimu i životni ciklus koji obuhvata provisioniranje, ažuriranja i offboarding. Ko postavi ove osnove precizno, dobija u svakodnevnom radu: manje smetnji usled konfiguracione drifte, brža ažuriranja, jasniji procesi podrške i pouzdani dokazi prema internim i eksternim zahtevima.

Ako želite konkretno oceniti višezakupničku podršku za postojeće ili novo digitalno rešenje preduzeća ili izraditi koncept migracije i arhitekture, dozvolite da zajedno strukturirano prođemo kroz okvirne uslove:

U stručnom kontekstu važnu ulogu igraju i višezakupnička arhitektura i izolacija zakupaca, kada integracije, tokovi podataka i dalji razvoj moraju da deluju skladno.

Razgovarajte o projektu ili modernizacionom poduhvatu sa Net-Base.

Подели објаву

Поделите ову објаву директно

LinkedIn, X, XING, Facebook, WhatsApp и е-пошта су одмах доступни. За Instagram припремамо линк и кратак текст.

Е-пошта

Инстаграм се отвара у новој картици. Линк и кратак текст се претходно копирају у међуспремник.