Dal punto di vista del codice, devono essere necessariamente separati, altrimenti non è possibile parlare genericamente di thier.
L'obiettivo di questa architettura, anche se non è indispensabile farlo, è quello di dislocare potenzialmente gli applicativi come servizi anche su diverse macchine. Va da se che, se un thier non comunica con l'altro ma accede direttamente al DB, e quest'ultimo è il compito associato a uno dei thier, possono sorgere dei problemi o comunque l'architettura non rispetta a pieno la separazione richiesta per i suoi livelli (layer).