it-projects-llc / saas-addons

Odoo modules for SaaS Businesses. Sale and manage Odoo databases.
https://saas.it-projects.info
150 stars 173 forks source link

Architecture Design #39

Open aliencrash opened 5 years ago

aliencrash commented 5 years ago

I have being testing the Saas Addons and I would like to be discuss some of design concepts.

  1. When the build are created this database are created always based on a template database right?
  2. If 1. is the case, it means we are always restricted to a database template. How would this work for a Kubernetes operator? This design will always force you to have all databases in a single PostgreSQL Pod or server, while we can have each database and odoo in a Pod.
  3. This design also have an issue when we need to have a client with self-service portal like odoo. Because Build only install modules that come from template. I think what would be good is that the build have their own modules. So when the build is created it takes the template modules + their own modules. Template modules would be just a base to force specific modules like access.

My questions are just to understand what is you design concept for the future. We have being developed the kubernete and we are already able to create Pods from Odoo.

Regards

--- Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/79178155-architecture-design?utm_campaign=plugin&utm_content=tracker%2F109082179&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F109082179&utm_medium=issues&utm_source=github).
yelizariev commented 5 years ago
  1. yes
  2. More correct statement is as following: "SaaS Operators (not a K8s operator) may have the same postgresql scope. If you want to have different postgresql servers, you create different "SaaS Operators" that connect to specific postgresql server. Also, take a note, that Postgresql may be deployed in a separate cluster. So, are you not restricted on a capacity of postgresql.
  3. Are you talking about features similar to odoo.sh? To have custom modules, you can always create a separate "SaaS operator" with specific set of modules (repositories). So, similar features are possible, though it's not the main purpose of the system at the moment (it's saas, not paas).

Thanks for you interest

aliencrash commented 5 years ago

Thanks for your reply, I'm replying inline.

2. More correct statement is as following: "SaaS Operators (not a K8s operator) _may_ have the same postgresql scope. If you want to have different  postgresql servers, you create different "SaaS Operators" that connect to specific postgresql server.
   Also, take a note, that Postgresql may be deployed in a separate cluster.
   So, are you not restricted on a capacity  of postgresql.

With your experience what would be better a single postgresql cluster or for let say client Pod a database inside the pod.

  1. Are you talking about features similar to odoo.sh? To have custom modules, you can always create a separate "SaaS operator" with specific set of modules (repositories). So, similar features are possible, though it's not the main purpose of the system at the moment (it's saas, not paas).

Actually I'm not talking about odoo.sh but the self service concept were the user pick their on module and then the database is created with that modules. We already create a template from a sale order were each product that represents a app is mapped to a module. So what I wanted to avoid is to have a template for each client. my change would be to create build based on sales order where in the saas.db we add the base modules from the template plus the app the client picked up.

We are very interested in this module and we may contribute. that's why I'm questioning.

Thank you.

aliencrash commented 5 years ago

Is this module vision to be a manual SaaS or automated, like self service?

yelizariev commented 5 years ago

With your experience what would be better a single postgresql cluster or for let say client Pod a database inside the pod.

I'd prefer separate postgres cluster to have possibility to scale it separately from Odoo

So what I wanted to avoid is to have a template for each client. my change would be to create build based on sales order where in the saas.db we add the base modules from the template plus the app the client picked up.

Yes, that's possible. You create a template with base module, then saas make a build out of it and then "Post Init" code installs extra modules or makes any other kind of additional customization

yelizariev commented 5 years ago

Is this module vision to be a manual SaaS or automated, like self service?

We mostly focuse on self-service (saas_public module), but creating build by admin only is also possible (saas module).

yelizariev commented 5 years ago

You can start contribute with small tasks you can find in README files. The big task is described in #49