Skip to main content

Architecture

Avatars have two main components:

  • The platform which can be used as a SaaS or deployed on your premises.
  • The client code which is installed locally.

Simplified architecture

A simplified view of the Avatars architecture

Client​

The Avatars platform exposes an OpenAPI-compliant HTTP API using JSON. Consequently it can be consumed from any HTTP client: curl, Python's requests library, etc.

We also provide the following language-specific clients:

  • Web client
  • Python

Platform components​

When deployed on-premise, the following components will be included:

  • Stateless components
    • An HTTP proxy (Nginx) providing HTTPS termination with TLS certificate management.
    • An API server exposing an HTTP/JSON interface.
    • A dask scheduler and workers running the anonymization jobs.
    • A web GUI that provides a simplified interface into the anonymization process.
    • An OpenIDProvider (authentik) to manage users, tenants, and Single-Sign-On.
    • Optional: a database connector that opens the source and target databases of database runs. It is the only component that carries database drivers. It is never exposed outside the cluster. It is off by default, and everything else works without it.
  • Stateful components
    • A PostgreSQL database to store metadata (datasets, jobs) and configuration (users). We recommend using a recent version (14 as of writing) although older versions will work just as well as we don't use recent PostgreSQL features.
    • A file storage component compatible with S3, we are currently using seaweedfs.

Dashed: the optional database connector, only needed for database runs. It is off by default.