Concetti chiave key-concepts
Comprendere i concetti fondamentali del monitoraggio della concorrenza è essenziale per una corretta implementazione. Questa guida illustra gli elementi di base e il modo in cui funzionano insieme.
Concetti di base core-concepts
Sessioni
Una sessione rappresenta un'istanza di streaming video attiva. Consideralo come un "ticket" che consente a un utente di guardare i contenuti.
Ciclo di vita della sessione
- Creazione - Quando l'utente inizia a guardare il contenuto
- Attivo - Mentre l'utente sta guardando (gestito da heartbeat)
- Terminazione - Quando l'utente smette di guardare o la sessione scade
Proprietà sessione
{
"sessionId": "unique-session-identifier",
"idp": "identity-provider",
"subject": "user-identifier",
"startTime": "2024-01-15T10:30:00Z",
"expiresAt": "2024-01-15T10:40:00Z",
"metadata": {
"deviceId": "device-123",
"channel": "Channel1",
"contentType": "live"
}
}
Criteri
I criteri sono regole aziendali che definiscono limiti e restrizioni per lo streaming simultaneo. Essi determinano quando gli utenti possono avviare nuovi flussi.
Componenti dei criteri
- Regole - Limiti e condizioni specifici
- Requisiti metadati - Quali dati sono necessari
- Logica di valutazione - Modalità di applicazione del criterio
Esempio di criterio
{
"name": "basic_stream_limit",
"description": "Maximum 3 concurrent streams per user",
"rules": [
{
"type": "maxstreams",
"limit": 3,
"message": "You have reached your maximum of 3 concurrent streams"
}
]
}
Metadati
I metadati forniscono il contesto di ogni sessione. Include informazioni sul dispositivo, sul contenuto, sull’utente e sull’applicazione.
Categorie metadati
deviceId, deviceType, osNamechannel, contentType, assetIdsubject, subscriptionTierapplicationName, applicationPlatformcountry, hbaMetadati obbligatori e facoltativi
- Metadati richiesti - Devono essere forniti per la creazione di sessioni
- Metadati facoltativi - Possono essere forniti per i criteri avanzati
- Metadati standard - Campi predefiniti disponibili per tutte le applicazioni
- Metadati personalizzati - Campi specifici dell'applicazione definiti
Identità e autenticazione identity-and-authentication
Provider di identità (IdP)
Un provider di identità è il servizio che autentica gli utenti e fornisce le relative informazioni di identità. Nell’integrazione di Adobe Pass, in genere si tratta di un MVPD.
Esempi di IdP
- Società via cavo (Comcast, Charter, ecc.)
- Fornitori satellitari (DirecTV, Dish)
- Servizi di streaming (Netflix, Hulu)
- Operatori mobili (Verizon, AT&T)
Oggetto
Un oggetto è l'identificatore univoco di un utente all'interno di un provider di identità. In genere si tratta dell’ID account o dell’ID dell’abbonato dell’utente.
Gestione delle sessioni session-management
Heartbeats
Gli heartbeat sono chiamate API periodiche che mantengono attive le sessioni. Dicono al sistema che "l'utente sta ancora guardando".
Requisiti Heartbeat
- Frequenza - Ogni 60 secondi (consigliato)
- Scopo - Mantenere attiva la sessione, aggiornare i metadati
- Terminazione - La sessione scade se gli heartbeat si arrestano
Terminazione sessione
Le sessioni possono essere terminate in diversi modi:
- L'utente non guarda più - L'applicazione chiama l'endpoint DELETE
- Scadenza sessione - Nessun heartbeat ricevuto entro il timeout
- Violazione dei criteri - La nuova sessione termina la precedente (FIFO)
- Terminazione remota - Un altro dispositivo termina la sessione
Valutazione dei criteri policy-evaluation
Funzionamento dei criteri
- Richieste utente nuovo flusso
- Il sistema valuta i criteri in base all'utilizzo corrente
- Decisione effettuata - Consenti o nega
- Risposta inviata - Informazioni sull'esito positivo o negativo
Risoluzione dei conflitti conflict-resolution
Che cos'è un conflitto?
Un conflitto si verifica quando un utente tenta di avviare un nuovo flusso ma supera i propri limiti.
Risposta al conflitto
Quando si verifica un conflitto, il sistema restituisce una risposta di conflitto 409 con informazioni dettagliate:
{
"status": "error",
"error": {
"code": "POLICY_VIOLATION",
"message": "Concurrent usage limit exceeded"
},
"evaluationResult": {
"decision": "DENY",
"associatedAdvice": [
{
"adviceType": "rule-violation",
"attributes": {
"rule": "max_streams",
"threshold": 3,
"current": 4,
"conflicts": [
{
"sessionId": "session-123",
"terminationCode": "term-456",
"metadata": {...}
}
]
}
}
]
}
}
Strategie di risoluzione
LIFO (ultimo ingresso, primo uscita)
- Le sessioni precedenti sono protette
- Nuova sessione bloccata
- Interfaccia utente più semplice
- Migliore per la visualizzazione estesa
FIFO (primo ingresso, primo uscita)
- La nuova sessione termina una sessione esistente
- L'utente sceglie la sessione da interrompere
- È richiesta un'interfaccia utente più complessa
- Migliore per cambio contenuto
Applicazioni e tenant applications-and-tenants
Applicazione
Un'applicazione application è un programma software che si integra con il monitoraggio della concorrenza. Ogni applicazione ha un ID univoco e può avere i propri criteri.
Esempi di applicazioni
- App mobile (iOS/Android)
- Applicazione web
- App Smart TV
- Applicazione set-top box
Tenant
Un tenant è un'organizzazione proprietaria di una o più applicazioni. I tenant possono condividere i criteri tra le applicazioni.
Struttura tenant
Tenant: "Streaming Company"
├── Application: "Mobile App"
├── Application: "Web App"
└── Application: "TV App"
Ambienti environments
Ambiente di staging
- Finalità - Sviluppo e test
- URL -
https://streams-stage.adobeprimetime.com/v2/ - Credenziali - Verifica ID applicazione
- Dati - Solo dati di prova
Ambiente di produzione
- Scopo - Traffico utente live
- URL -
https://streams.adobeprimetime.com/v2/ - Credenziali - ID applicazione di produzione
- Dati - Dati utente reali
Flusso di integrazione integration-flow
Flusso di base
- Autenticazione utente - Autenticazione con Adobe Pass
- Creazione sessione - Crea sessione CM con metadati utente
- Gestione heartbeat - Invia heartbeat periodici
- Terminazione sessione - Termina quando l'utente smette di guardare
Gestione degli errori
- 404 non trovato - Gestisce le richieste con ID sessione non generato dal servizio CM
- 409 Conflitti - Gestisce le violazioni dei criteri
- 410 non più disponibile - Gestisce la chiusura della sessione
- Errori di rete - Gestione dei problemi di connettività
- Errori di autenticazione - Gestione dei problemi relativi alle credenziali