# Deploying on-site

Enterprise customers have the option to run the Atfinity application in their own infrastructure. This guide explains how to do this and what the necessary requirements are.

## General Architecture

Atfinity is a client-server web application. It broadly consists of a web server serving a web **frontend**, and an API **backend** with which the browser communicates. If you are running Atfinity headless, you will mostly communicate with our API, which is part of the backend.

Atfinity supports multiple infrastructure modes:

| Mode             | Servers                  | Description                                                               |
| ---------------- | ------------------------ | ------------------------------------------------------------------------- |
| **1-Tier**       | *CORE*                   | Backend, Frontend, Database, and File Storage all run on one server       |
| **2-Tier**       | *CORE* + *DATA*          | Backend and Frontend on *CORE*; Database and File Storage on *DATA*       |
| **3-Tier**       | *CORE* + *WEB* + *DATA*  | Backend on *CORE*; Frontend on *WEB*; Database and File Storage on *DATA* |
| **X-Tier + EUW** | Any of the above + *EUW* | Adds the End User Wizard (EUW) on a separate server to any tier setup     |

The EUW is always deployed on a separate server as it is typically the most exposed component.

You have two general deployment options:

1. [Kubernetes via helm chart](/deploying/deploying-on-site/kubernetes.md) (recommended)
2. [Single servers via docker-compose](/deploying/deploying-on-site/docker-compose.md)

## **CDN and Security Tools (e.g. CloudFlare)**

atfinity is able to handle a wide range of CDN and security tools in front of its components. Note, however, that atfinity works best if content is not cached, as almost no transferred data stays valid for more than a minute. We therefore recommend to disable all caches and only use security, not performance, tools of your infrastructure tooling in combination with atfinity.<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.atfinity.io/deploying/deploying-on-site.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
