Denne typen løsning omfatter delte ressursene for databehandling, nettverk, ustrukturert lagring og cache-lagring, mens ulike strategier for å sikre at lagring av data holdes separat. Det viktigste kjennetegnet ved denne tilnærmingen er at den plasserer hele segregeringslogikken innenfor applikasjonen selv, snarere enn i infrastrukturen. Det betyr at applikasjonen selv er ansvarlig for både å identifisere ressurser tilhørende en kunde og å håndheve tilgangskontroll for disse ressursene.
Det er imidlertid ulike måter å skille strukturerte data i databaser som tar hensyn til forskjellige scenarier. Nedenfor beskriver vi de forskjellige måtene dette gjøres på i våre applikasjoner:
- Alternativ 2A - Databasesegregering. Denne tilnærmingen bruker separate identiske databaser for hver kunde. Applikasjonen bruker kunde-ID for å velge riktig database.
- Alternativ 2B - Skjemasegregering. Denne tilnærmingen bruker den samme databasen for flere kunder, men oppretter separate tabeller for hver kunde. Applikasjonen bruker kunde-ID for å velge riktig tabell å bruke.
- Alternativ 2C - Radsegregering. Denne tilnærmingen bruker den samme databasen og de samme tabellene for flere kunder, men bruker i stedet en kunde-ID-kolonne i hver tabell for å tildele hver databasepost (eller "rad") til en spesifikk kunde. Applikasjonen bruker kunde-ID for å velge de riktige radene å bruke.
Valget mellom alternativene A, B og C avhenger hovedsakelig av nivået av interaksjon og samarbeid mellom forskjellige kunder (eng: tenants). Fordelen med alle disse tilnærmingene er en mye mer oversiktlig vedlikehold av nettverk og applikasjoner, som tillater samtidige applikasjonsoppgraderinger for alle kunder. Det sikrer også at ingen endringer i infrastrukturen er nødvendige når nye kunder legges til eller fjernes. Mye av det tunge arbeidet gjøres på forhånd, slik at når riktig håndhevelse av applikasjons- og kundekontekst er på plass, legger ikke nye kunder til kompleksitet.