Le architetture layered permettono di stratificare servizi concentrando e delegando le responsabilità dei sottosistemi; al centro dell'architettura troviamo quindi il Domain Model, che definisce le entità gestite dal sistema ed il loro comportamento. Concentrare questo comportamento nei servizi impoverisce il Domain Model, di fatto "impoverendo" l'adesione della nostra architettura al paradigma object oriented.
Viceversa, affollare il Domain Model rischia di precludere caratteristiche strategiche quale la "persistence ignorance".
In questa sessione introdurremo i principi necessari ad operare una distribuzione delle funzionalità all'interno del sistema in modo da soddisfarne i requisiti.