Odoo 15 vs Odoo 16

Panoramica generale dei cambiamenti

Odoo 16 ha introdotto importanti miglioramenti per quanto riguarda le performance del prodotto sia lato Back End che Front End.

 

Iniziamo dalle novità apportate al Front End che riguardano la migrazione verso il Framework OWL. Introdotto in Odoo 14,il porting verso OWL è stato completato e ora gestisce il 99% della codebase JS, lasciando solo l’1% al vecchio motore per il modulo PoS.(Point of Sale) che ha esigenze specifiche.

L’utilizzo di questa nuova versione del framework ha permesso di alleggerire del 30% la codebase JS e del 68% quella CSS.

Avendo completamente riscritto il motore grafico, adesso è disponibile anche la modalita’ di navigazione scura.

 

Passiamo ora alle modifiche apportate al Back End: 

  • Il Chatter non utilizza piu’ il long polling ma i websockets, 

  • Il consumo dei grandi file è stato ottimizzato e può essere gestito anche da Nginx, 

  • Meno chiamate RPC: questo permette una maggiore velocità nell’elaborazione delle relazioni One2Many all’interno delle viste 

  • Le barre di caricamento non effettuano più richieste HTTP ma vengono gestite tramite websocket.

Altre modifiche riguardano la velocità di esecuzione dei processi e l’interfacciamento con il database: 

Il metodo onchange è stato deprecato a favore di compute e precompute, le traduzioni non vengono più gestite dal database ma utilizzano Json DB e sono stati introdotti gli indici B Tree di PostgreSQL.

Caratteristiche dell’ambiente di test

Si utilizzano due server con prestazioni identiche, vediamo nel dettaglio i parametri relativi alla memoria e ai workers di Odoo come sono stati calcolati e impostati.

 

Numero di CPU: 2

Threads: 2

 

Supponiamo un numero di 12 utenti concorrenti

Workers: 3 (6 utenti per worker + 1 destinato ai cron)

 

Consideriamo che il 20% sono richieste pesanti e l’80% richieste semplici al server.

Eseguiamo il tuning del server impostando questi valori di configurazione:

workers = 3

max_cron_threads = 1

limit_time_cpu = 60

limit_time_real = 170

limit_memory_soft = 25273917440
limit_request = 8196

 

Odoo Enterprise offre uno strumento di profiling che utilizzeremo per alcuni dei test di comparazione.

Entrambi i database che verranno utilizzati sono prepopolati con il demo dataset fornito da Odoo.

Numero di richieste RPC eseguite

Durante la presentazione dei miglioramenti di performance rilasciati con l’ultima versione del prodotto, Odoo dichiara di aver ridotto il numero di chiamate HTTP (XML-RPC o JSON-RPC) effettuate al server, specie per quel che riguarda la gestione delle relazioni O2M (One2Many).

 

Lo scopo di questo test e’ quello di vedere quante richieste vengono effettuate verso il server in un determinato use-case, in questo caso: la creazione di un preventivo ed emissione di relativa fattura.

Odoo 15

 

Abbiamo creato un preventivo, aggiungendo dei prodotti e creato una fattura in circa 10 secondi. Durante tutta la navigazione, sono state profilate 294 richieste e contate 9705 entries.

Odoo 16

Lo stesso identico test effettuato su Odoo 16, porta un risultato davvero notevole.
Il tempo totale di utilizzo e’ di 6 secondi. Durante la navigazione, sono state profilate 71 richieste e contate 2217 entries. Notevole no? 

Differenza tra Long Polling e Web Sockets

Long polling e WebSockets sono entrambi metodi per la comunicazione in tempo reale tra un client e un server, ma differiscono nella loro implementazione e nelle loro caratteristiche di prestazione.

 

Long Polling:

  • Il client invia una richiesta al server e mantiene la connessione aperta finché non sono disponibili nuovi dati o si verifica un timeout.

  • Il client quindi ripete la richiesta e il processo continua, simulando una connessione continua.

  • Utilizza HTTP e può essere una soluzione semplice, ma porta a un aumento della latenza a causa degli handshakes ripetuti e della ri-stabilizzazione delle connessioni.

 

WebSockets:

  • Utilizza una connessione persistente tra il client e il server, permettendo una comunicazione bidirezionale in tempo reale.

  • La connessione viene stabilita solo una volta e rimane aperta per la durata della comunicazione.

  • Utilizza il protocollo WebSockets progettato appositamente per la comunicazione in tempo reale, con conseguente riduzione della latenza rispetto al long polling.

 

In sintesi, i WebSockets forniscono una soluzione di comunicazione in tempo reale più efficiente ed efficace rispetto al long polling, ma potrebbero richiedere un supporto e una configurazione supplementari lato server.

 

Confrontiamo i dati

 

Richieste

Entries

Tempo totale:

Odoo 16 è addirittura più veloce del 40% rispetto ad Odoo 15!

 

Conclusioni

Odoo nel tempo dimostra di essere un prodotto in costante crescita e aggiornamento. Di versione in versione sta progredendo per offrire strumenti sempre più ottimizzati e performanti.

Rispetto ai software concorrenti dimostra una facilità di utilizzo che permette un reale risparmio di tempi nelle operazioni di gestione del business. Permettendo a chi lo utilizza di focalizzarsi sempre di più sulle attività che permettono all’azienda di essere più profittevole.







Facebook
Twitter
LinkedIn