============== Backend Basics ============== .. image:: /images/overview_architecture_diagram.png The AcceleratXR backend platform utilizes a `micro-services `_ based architecture composed of more than two dozen unique services. Each of these services provides a singularly focused set of functionality within the platform. Functionality such as user account management (`acount-services `_), player achievements (`achievement-services `_), virtual economy (`economy-services `_), matchmaking (`matchmaking-services `_) and more. True to micro-service principles each service within the platform maintains strict database access isolation and uses a post/push methodology for performing write operations and delivering changes. As a result, no two services will have access to the same database content. All write operations must be performed through a service's REST API. Data changes are then distributed either via REST API polling or via push messaging. Push data is sent to other services via a common messaging bus such as `redis `_ while clients can optionally register for notifications to be delivered via a secured `websocket `_ connection. Authentication is managed using a distributed `JSON Web Token `_ with each service having the capability to decode and verify any given access token. The JWT access token contains all relevant information for a service to be able to perform work on behalf of a given user including any relevant permissions and roles. While the platform can be deployed using a variety of different methods `Kubernetes `_ has been selected as the preferred orchestration system due to its powerful features, simplicity and ability to run in virtually any environment. In order to provide a unified set of endpoints for communicating with the platform `nginx `_ is utilized as the primary load balancer and reverse proxy for all of AcceleratXR's backend services. Lastly, the `Prometheus `_ server is leveraged for gathering real-time statistics as well as providing Kubernetes with the necessary metrics for performing automatic scaling of individual services.