Algunas consideraciones de performance para el e-commerce de Odoo

Gustavo Orrillo
- 16/11/2018

En el foro de Odoo Argentina hubo el día de hoy un post interesante en el que se empieza a discutir la performance de Odoo en ambientes de e-commerce una vez que la actividad de los usuarios empieza a crecer. Por ejemplo teniendo 20 o 30 usuarios trabajando en tareas administrativas conviviendo con las visitas de los usuarios web. Esto puede plantear algunos desafíos a nivel performance.

Lo primero a tener en cuenta es que Odoo escala a nivel performance, pero tiene sus límites. Dichas limitaciones tienen solución pero requieren trabajo. Por ejemplo, el ORM de Odoo es seguro y permite que la base de datos se encuentre en un estado consistente de modo constante. Pero tiene sus bemoles. Entre ellos como maneja los commits (que según las necesidades del negocio un puede llegar a cambiarlo, no es recomendable pero a veces no queda otra opción). O como maneja operaciones de datos masivas como por ejemplo la creación de miles de números de serie. Esta situación a veces requiere re-escribir parte del código salteando el ORM y actualizando la base de datos con SQL.

El otro punto a tener en cuenta es no tener en la misma máquina el e-commerce y el ERP. Por dos motivos. El primero es seguridad. Uno no quiere que si le hackean la web tengan acceso al sistema administrativo. Pero el segundo es performance. La visita constante de los usuarios al e-commerce tiene un impacto en la actividad de los usuarios que estan (por ejemplo) ingresando pedidos de venta. Ya separando el e-commerce en otra máquina va a tener un incremento en la performance. Y la sincronización entre el e-commerce y Odoo no va a ser tan complicada como resolver los problemas de performance que surgen de tener el ERP y el e-commerce en la misma máquina.

Teniendo el e-commerce en otra máquina tambien permite configurar PostgreSQL de manera diferente. La realidad es que en el e-commerce el PostgreSQL se debe optimizar para cachear los contenidos y optimizar las lecturas. Si bien se realizan escrituras, no ocurren con la frecuencia de un ERP. Por ende la configuración es diferente a la de un sistema de procesamiento de transacciones.

Por último, creo que es necesari tener en el e-commerce dos capas. La primera que permita la navegación anónima consultando el catálogo de productos. Esta capa podría trabajar con una base de datos NoSQL y actualizarse de forma periódica. Y otra capa (y que ahí intervenga Odoo) donde el usuario ya autenticado trabaje con el ERP en si mismo ingresando sus pedidos.