

# Application layer
<a name="application-layer"></a>

 The application layer is a collection of services and business logic that interacts with the streaming media layer to deliver functions like authentication, authorization, search, recommendations, or interactivity. This layer exposes a set of application programming interfaces (APIs) and serves data in response to requests from clients. Though your application will have a unique set of endpoints, there are a common set of services deployed alongside streaming media applications. 
+  **Subscriber Management** — A method for user authentication and media playback authorization is necessary for transnational or subscription services. Services like **Amazon Cognito**, when combined with URL tokenization and content encryption, can be used to secure access to content. 
+  **Content Management** — A purpose-built database for indexing content and associated metadata. AWS Database Services like **Amazon DynamoDB** or **Amazon Relational Database Service** are common backend services used for Content Management state. 
+  **Analytics** — A system for ingesting client analytics regarding playback behaviors (content preference, play-through, skip, pause, re-watch) and extracting business insights for decision-making. In the streaming media layer, telemetry data (error rates, buffer rates, latency etc) is used to maintain quality of experience during playback, but services like **Kinesis Data Streams** can also be used to populate data warehouses with **Amazon Redshift** or **Amazon S3**. These long-term warehouses can be examined by business stakeholders to make strategic decisions regarding feature enhancements to the service or to produce content relevant to viewer interests. 
+  **Interactivity** — A service, commonly aligned with video playback using embedded metadata, that provides audience engagement through interactions with the host, audience members, or metadata to enrich the experience. **Amazon IVS** and **AWS Elemental Live** provide timed metadata interfaces that are used to embed data directly within the video stream and initiate events to call application APIs to render relevant features. 