Technical Architecture of Odoo and Deployment Structure at Server

Posted By : shivam sahu | December 19, 2019

Odoo Architecture

Odoo is a multitenant, three-tier architecture: application tier for processing, presentation tier for user interface and database tier for data storage. The applying tier itself is written as a core, multiple further modules may be put in to make a selected configuration of Odoo architecture. 

The core of Odoo architecture and its modules are written in Python. The practicality of a module is exposed through XML-RPC (and/or NET-RPC betting on the server’s configuration). Modules generally build use of Odoo’s ORM to persist their knowledge during an electronic information service (PostgreSQL). Modules will insert knowledge within the information throughout installation by providing XML, CSV, or YML files.

At Oodles ERP, we provide Odoo integration services using APIs to extend the functionalities of the existing ERP system. Our developers have more than 6 years of experience in implementing and customizing Odoo solutions to fulfill the unique requirements of businesses.

 

The Odoo server

Odoo provides an Associate in Nursing application server on that specific business applications may be engineered. it’s conjointly a whole development framework, providing a variety of options to write down those applications. The salient options are a versatile ORM, Associate in Nursing MVC design, protractile knowledge models and views, completely different report engines, all tied along during a coherent, network-accessible framework. 

Technology Stack

a) Server-side Programming Language: Python three

b) Client-side Programming Language: JavaScript

c) Markup Language: HTML5

d) Character Encoding: UTF-8

e) Image File Formats: PNG, JPEG, GIF, SVG

f) Site Elements: External CSS, Embedded CSS, Inline CSS, Session Cookies, protocol solely Cookies, Non-HttpOnly Cookies, Non-Secure Cookies, Gzip Compression, Default protocol https.

g) Traffic Analysis Tool: Google Analytics

h) Database: PostgreSQL information

 

Clients:

Clients will communicate with Associate in Nursing Odoo server victimization XML-RPC. A custom, quicker protocol referred to as NET-RPC is additionally provided however can shortly disappear, replaced by JSON-RPC. XML-RPC, as JSON-RPC within the future, makes it attainable to write down purchasers for Odoo during a kind of programming language. Odoo S.A. develops 2 completely different consumers: a desktop client, written with the wide used GTK+ graphical toolkit, and an online consumer that ought to run in any fashionable applications program. 

 

Odoo Architecture

Odoo Architecture
Odoo Architecture

Relational database server and ORM

The data tier of Odoo Architecture is provided by a PostgreSQL electronic information service.

The ORM is one in all the salient options mentioned on top of it. the info models are represented in Python and Odoo creates the underlying information tables. All the advantages of RDBMS (unique constraints, relative integrity, economical querying, …) are used once attainable and completed by Python flexibility. for example, impulsive constraints written in Python may be added to any model.

 

Models:

To outline knowledge models and otherwise pursue any work with the associated knowledge, Odoo as several ORMs uses the conception of ‘model’. A model is an Associate in Nursing authoritative specification of however some knowledge is structured, affected, and manipulated. I observe a model is written as a Python category. the category encapsulates something there’s to understand concerning the model: the various fields composing the model, default values to be used once making new records, constraints, and so on. It conjointly holds the dynamic side of the info it controls: strategies on the category may be written to implement any business wants (for instance, what to try to upon user action, or upon progress transitions).

There are 2 completely different models. One is solely referred to as ‘model’, and also the second is termed ‘transient model’. the 2 models give an equivalent capability with one difference: transient models are mechanically cleared from the information (they may be cleansed once some limit on the number of records is reached, or once they are untouched for a few times).

 

Modules:

Odoo architecture supports a standard approach each from a development perspective and a preparation purpose of reading. In essence, a module teams everything associated with one concern in one purposeful entity. it’s comprised of models, views, workflows, and wizards.

 

Module Structure:

Odoo Module Structure:
Odoo Module Structure:

Services and WSGI:

Everything in Odoo architecture and model strategies, especially, are exposed via the network and a security layer. Access to the info model is, in fact, a ‘service’ and it’s attainable to show new services. for example, a WebDAV service Associate in Nursing an FTP service is offered.

XML-RPC, JSON-RPC

The access to the models makes conjointly use of the WSGI stack. this could be done victimization the XML-RPC protocol, and JSON-RPC is going to be added presently.

Also Read: Migration Process and Standards of Migration in Odoo 13

 

Server – Base distribution:

We use a distributed communication mechanism within the Odoo server. Our engine supports most typically distributed patterns: request/reply, publish/subscribe, monitoring, triggers/callback, …

Different business objects may be in numerous computers or equivalent objects may be on multiple computers to perform load-balancing.

 

Server – Object relative Mapping (ORM):

This layer provides further object practicality on prime of PostgreSQL

 

* Consistency: powerful validity checks,

* Work with objects (methods, references, …)

* Row-level security (per user/group/role)

* Complex actions on a bunch of resources

* Inheritance

Server – Web-Services:

The web-service module offers a standard interface for all web-services

1.SOAP

2.XML-RPC

3.NET-RPC

 

Server – progress Engine:

Workflows are graphs portrayed by business objects that describe the dynamics of the corporate. Workflows are accustomed to tracking processes that evolve over time. 

Server – Report Engine:

Reports in Odoo architecture may be rendered in numerous ways:

Custom reports:

Those reports may be directly created via the consumer interface, no programming needed. Those reports are portrayed by business objects (ir.report.custom)

High-quality personalized reports victimization open report: no programming needed however you’ve got to write down two tiny XML files:

a model that indicates the info you intend to report

a) XSL: RML stylesheet

b) Hardcoded reports

c) Nearly all reports are created in PDF with the employment of wkhtmltopdf.

 

Client – Wizards:

Wizards are graphs of actions/windows that the user will perform throughout a session. 

 

Client – Widgets:

All common widgets are supported:

entries, textboxes, floating purpose numbers, dates (with calendar), checkboxes.

And conjointly all special widgets:

* Buttons that decision actions

* References widgets

* One2one

* Many2one

* Many2many

* One2many in list
 

Deployment Architecture:

Rules of thumb

Activate a multi-worker to use your fancy hardware!

Enforce limits

Recycle processes

Perform better

Sync changes

How many workers processes? 1 per CPU core, x2 for recycling

Min = 6

Max =

(typical browser keepalive pool size)

Dedicated RAM

Worker soft memory limit

RAM = 24GB

= 24 workers

e.g.

Soft limit = 1GB

How many requests/second? ~ 6-7 x Workers e.g. 24 workers = 160 r/s

How many users? ~ 5-10 per Worker

e.g. 24 active workers = 180 users

Scaling 1:

Scaling 2:

Odoo is a popular open-source ERP platform that enables businesses to streamline and automate their day-to-day tasks. Apart from its basic modules like accounting, point of sale, inventory, warehouse management, customer relationship management, and human resource, Odoo architecture has 14,000+ third-party apps/plugins available in its app store. Each plugin/app can be customized as per the user requirements. 

Apart from its basic modules, Odoo has more than 14,000 third party Apps/Plugins available in its app store.  Each of them is custom-built for different user needs. Today, Odoo is one of the widely used open-source ERP solutions in the market.

 

Get in touch with our ERP team to schedule a discussion!

To Read Next: Key Features of Accounting Module in Odoo 12

About Author

shivam sahu

Shivam is a versatile and creative software developer. He is currently working with Odoo 12, Python 3 and Spring Boot. One of his key strength building a strong bond with the team in order to deliver the best result in time.


No Comments Yet.


Leave a Comment

Name is required

Comment is required






Please remove URL from text

Comment is required

Sending message..
Connect with us