Just looking to confirm what I’m seeing on my end. In the old OpenPype setup, was MongoDB the DB that was used? It seems like Postgres is used now in the AYON Pipeline Beta but I just wanted to confirm.
Also, if this is the case, are there any details on why the switch was made?
That is correct, AYON stack on the backend has changed completely and looks like this now
- Dockerized (python3.9) FastAPI/uvicorn stateless API server
- Pydantic models everywhere - for requests, responses, db records validation…
- GraphQL, REST and python APIs
Some of the reasons for the switch were that it provides document and relation approaches to database at the same time and is seems to be better supported on various cloud providers with very robust scaling options. Since we made the decision we also got a lot more traction specifically due to the new stack from larger studios, where speed and scalability is super important.
Some particular choices on how it’s structured can be seen here in an old brainstorm board Miro | Online Whiteboard for Visual Collaboration
I’m sure @martin.wacker and @antirotor can provide more detailed insight.
Thank you for the info that’s very helpful.
Also, I appreciate the Miro link this is great info and provides tons of insight.
I did want to note: it seems some of the descriptions of entities in this Miro are using out of date terminology (for example: in the “Entity details” frame, the new “Product” term is defined as the “Subset” replacement term, however the word “Subset” is still used is that section).
Just hoping to make a helpful prod to someone to clean that up for clarity’s sake
Is the tech stack of OpenPype documented somewhere? I was curious what exactly it was before you guys swapped over to this new setup.
just a little correction, python on server is now 3.11 I think.
With OpenPype, some of it is described here:
but in short:
OpenPype is based on mongodb server and python 3.9 decentralized code - every artist machine is running its own instance, that is connected to common mongodb.
Running OpenPype means executing Igniter code - bootstrapping logic that is updating OpenPype if needed from central version repository and handling versioning of OpenPype itself, setting of basic environments, etc. In interactive mode, Tray is then launched, Qt based application running in system tray and other local services are then executed. Tray is wrapping various tools like Setting or Launcher. When DCC is launched in selected context environments are passed there and python host inside that DCC is then used. If DCC doesn’t have python, we use websocket communication with code implemented in native DCC language (like QtScript in case of Harmony for example) - but that logic is the same as in AYON.
Additional pieces of OpenPype are external services like ftrack event server - standalone service running from OpenPype codebase that handles synchronization of data.
OpenPype is written in python 3.9, UIs are using PySide2 (and 6 on mac), dependencies are handled by Poetry and build is done with our own script utilizing CX_Freeze.