# Introduction

The Inrupt Enterprise Solid Server (ESS) is a Solid Pod Server. Its microservices architecture enables simple scaling, high performance, and support for highly available deployment configurations.

<figure><img src="https://github.com/inrupt/docs-gitbook/blob/main/ess/.gitbook/assets/inrupt%20ess%20pod%20server.png" alt=""><figcaption></figcaption></figure>

## Features

### Pod Management

The Pod Provisioning Service creates [Pods](https://docs.inrupt.com/reference/glossary#pod). Pods are where users store their data. With ESS’ support for the [Solid Protocol specification](https://solidproject.org/TR/protocol), navigating, creating, deleting and editing Solid Resources within a Pod is directly supported via the standard HTTP interfaces.

### Identity

**WebID**

The [WebID Service](https://docs.inrupt.com/ess/2.5/services/service-webid) issues and manages [WebIDs](https://docs.inrupt.com/reference/glossary#webid). A WebID is a [URI](https://docs.inrupt.com/reference/glossary#uri) that uniquely identifies an [agent](https://docs.inrupt.com/reference/glossary#agent) (a person, organization, etc).

In ESS, Pods and WebIDs are created independently of each other and WebID profiles are not hosted on the Pods. This allows for multiple Pods per WebID, prevents users from locking themselves out of their Pods, and allows users to obtain their WebID or Pods from alternative providers.

For more information, see [service-webid](https://docs.inrupt.com/ess/2.5/services/service-webid "mention")

**Client ID**

An application identifies itself using a [client identifier (Client ID)](https://docs.inrupt.com/reference/glossary#client-identifier). ESS supports the following Client ID types:

* a [URL](https://docs.inrupt.com/reference/glossary#uri) that dereferences to a Client ID Document, or
* a registered value (either through [OIDC dynamic or static registration](https://solid.github.io/solid-oidc/#clientids-oidc)).

For more information, see:

* [the-client-id-document](https://docs.inrupt.com/guides/identity-in-solid/the-client-id-document "mention")
* [#authorization-and-clients](https://docs.inrupt.com/security/authorization#authorization-and-clients "mention")

### Security

ESS’ security features include:

* [Authentication](https://docs.inrupt.com/security/authentication) to support login with any existing OIDC-compliant identity provider
* Support for [User Managed Access Grant 2.0 (UMA)](https://docs.inrupt.com/ess/2.5/services/service-uma)
* Support for [Access Control Policies (ACP)](https://docs.inrupt.com/security/authorization/acp)
* Support for [Access Requests and Grants](https://docs.inrupt.com/security/authorization/access-requests-grants)
* Support for [Auditing](https://docs.inrupt.com/security/auditing)

For more information, see [https://github.com/inrupt/docs-gitbook/blob/main/ess/2.5/broken-reference/README.md](https://github.com/inrupt/docs-gitbook/blob/main/ess/2.5/broken-reference/README.md "mention")

### Notifications

ESS provides a secure implementation of a WebSocket notification protocol. [ESS WebSocket service](https://docs.inrupt.com/ess/2.5/services/service-notification/service-websocket) sends asynchronous notifications upon changes to Resources. Applications can subscribe to a particular Resource, including a Container, and receive notifications upon changes to the subscribed Resource(s).

For more information, see [service-websocket](https://docs.inrupt.com/ess/2.5/services/service-notification/service-websocket "mention")

### Administrative Operations

You can set up a [centralized logging system](https://docs.inrupt.com/ess/2.5/administration/logging) to a backend logging system.

For more information, see [Administration](https://docs.inrupt.com/ess/2.5/administration).

### ESS Architecture

ESS’ microservices architecture:

* Enables support for [highly available deployment configurations](https://docs.inrupt.com/ess/2.5/installation/architecture).
* Enables [simple scaling](https://docs.inrupt.com/ess/2.5/administration/scaling).

The following table lists the microservices:

| Category       | Microservices                                                                                                                                                                                                                                                                                                              |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Authentication | [Solid OIDC Broker Service](https://docs.inrupt.com/ess/2.5/services/service-oidc)                                                                                                                                                                                                                                         |
| Access Control | <p><a href="services/service-authorization">Authorization Service</a><br><a href="services/service-uma">User Managed Access (UMA) Service</a><br><a href="services/service-access-grant">Access Grant Service</a></p>                                                                                                      |
| Purger         | <p><a href="services/service-purger/purger-service">Purger Service</a><br><a href="services/service-purger/purger-application">Purger Application</a></p>                                                                                                                                                                  |
| Storage        | <p><a href="services/service-pod-management/service-pod-provision">Pod Provision Service</a><br><a href="services/service-pod-management/service-pod-storage">Pod Storage Service</a></p>                                                                                                                                  |
| Entry/Landing  | [Start Service](https://docs.inrupt.com/ess/2.5/services/service-start)                                                                                                                                                                                                                                                    |
| Identity       | [WebID Service](https://docs.inrupt.com/ess/2.5/services/service-webid)                                                                                                                                                                                                                                                    |
| Events         | <p><a href="services/service-notification/notification-delivery-service">Notification Delivery Service</a></p><p><a href="services/service-notification/service-notification-gateway">Notification Gateway Service</a><br><a href="services/service-notification/service-websocket">WebSocket Notification Service</a></p> |
| Query          | [Query Service](https://docs.inrupt.com/ess/2.5/services/service-query)                                                                                                                                                                                                                                                    |

### Support

Inrupt offers up to 24/7 support for operators and developers with a commercial license for ESS.

See [Inrupt Support Center](https://inrupt.atlassian.net/servicedesk/customer/portals).

### Additional Information on Solid

The [Solid specification](https://solidproject.org/TR/) defines various Solid server/Pod behaviors, such as those related to:

* [WebID](https://solidproject.org/TR/protocol#webid)
* [Resources](https://solidproject.org/TR/protocol#resources)
* [Reading and Writing Resources](https://solidproject.org/TR/protocol#reading-writing-resources)
* [Authentication](https://solidproject.org/TR/protocol#authentication)
* [Authorization](https://solidproject.org/TR/protocol#authorization)
