La tua fonte ti ha detto una strunzata per usare un eufemismo.
Dove gira una layer non è importante, pensa se fai girare odoo e postgress sulla stessa macchina e poi sempre dalla stessa macchina accedi tramite bowser allo stesso. Che diventa 1-layer? :d esempio forzato ovviamente.
Esistono 3 logiche distinte in odoo.
- quella implementata in javascript che viene eseguita sul browser. Questa logica, insieme al browser, si occupa di gestire il rendering dell'interfaccia, rispondere agli eventi utente etc etc
- quella implementata in python che gira sull'application server
- il DB server con, ma odoo non la usa, logica che potrebbe girare li.
Affinchè un'applicazione possa essere definita n-tier ogni layer deve poter girare in un ambiente a parte. Che poi lo faccia o meno non è importante.
Per farti un esempio, supponiamo di avere una applicazione implementata come una mega applet (ce ne stanno ti assicuro) e che questa acceda direttamente al DB. Il fatto che acceda al web server o che l'applet giri su di un browser non cambia nulla, l'architettura è 2-tier. L'applete si occupa dell'interfaccia e dell'esecuzione della business logic mentre il db è usato come dati.
Se in questa architettura (applet) stacco la business logic e la faccio girare sul "web server" l'applicazione diventa 3-tier (applet-business logic-db).
E fin qui le cose semplici perchè volendo andare oltre andrebbero scomodati design pattern, modelli MVC e via dicendo. Quando trattai questi argomenti il corso che tenevo era da 6 crediti mettere tutto in un post è abbastanza difficile
Posso solo farti notare questo, odoo in termini di pulizia è un po' incasinato. Il motivo principale sono le on_change. Questi metodi rispondono a cambiamenti nell'interfaccia e se vogliam essere puristi andrebbero eliminati dal modello (classe che rappresenta l'oggetto). Cio' non di meno odoo è 3 layer, puoi benissimo riscriverti tutta la parte di interfaccia tramite una app ad esempio ed invocare odoo solo ed esclusivamente tramite xml-rpc. Cosa perderesti, a meno di non farci attenzione? gli on_change