Deployment
To deploy a Neos application in production, you need a containerized environnement such as Docker.
Warning
Deployment is currently only maintained for use in a Kubernetes cluster using Helm. The kubernetes cluster must use INGRESS Nginx as its ingress controller. The kubernetes cluster must have Dapr deployed.
Getting started
To get started with Neos deployment, you can follow the deployment guide to deploy a Neos application in a Kubernetes cluster using Helm.
Architecture
Components
Neos ecosystem consist of several components working together to provides all the functionalities of the framework.
Gateway
The gateway is the main entry point for every HTTP request coming from the outside (Web browser, API call, ...).
This component is responsible of :
- the authentication process
- the tenant resolution process for multitenant clusters
- the CORS policy configuration for cross-origin browser and mobile calls (see Gateway CORS configuration)
- redirecting the http traffic to the other components
The gateway needs a Redis instance as its distributed cache for handshake requests.
Reporting
This is the reporting server, handling neos report generation / viewer using Stimulsoft. See this article for more details.
Tenant Management
Tenant Management is a Neos cluster for tenant administration of a Kubernetes namespace. See this article for more details.
License Management
License Management is a Neos cluster handling licensing. See this article for more details.
Task Scheduler
Task Scheduler is a Neos cluster that you can use to manage tasks, schedule jobs, and ensure that tasks are executed at the right time. See this article for more details.
Neos AI
Neos AI is a Neos cluster that you can use to monitor the artificial intelligence agents. See this article for more details.
Support Center
Support Center is a Neos cluster that you can use to view errors reported by users.
Neos cluster
In a kubernetes namespace, you can deploy several Neos clusters. A Neos cluster can run the following components.
Frontend
This is a webserver serving all the frontend application (Html, Javascript, CSS, ...) to the client. See this article for more details.
Backend
This is a webserver handling most of the API calls made from the client or other clusters. See this article for more details.
Task runner
This is a webserver handling background server methods. See this article for more details.
Redis
Redis is a key-value database that Neos ecosystem use for :
- distributed cache for gateway handshake requests
- dapr workflow actor for orchestrating Neos background tasks (see this article)
- distributed cache for SignalR notification hub
- SignalR backplane for notification hub replicas (see SignalR with a Redis backplane)
- dapr state store (see this article)
RabbitMQ
RabbitMQ is a message broker which is used by Neos for pub/sub communication (see this article).
Tracing
Inter cluster communication traces can be sent external tools (see this article).
Thus, it will potentially create the following kubernetes pods :
Open telemetry collector
This pod is responsible to collect Dapr traces and send them to the external tracing server (ex: Application Insights) with the right format.
Zipkin
This pod is a Zipkin client server that can be used to see inter cluster communication traces on a web interface (see this article).