Capsuleers.app logo CAPSULEERS.APP
Banner

EVE Evolved: il futuro dell'API di EVE

EVE Online Team
Archive Data Feed

EVE Online è sempre stato più di un semplice gioco: è un vasto ecosistema in cui prospera l'ingegno dei giocatori. Una parte cruciale di questo ecosistema è EVE Swagger Interface (ESI), l'API RESTful ufficiale che consente agli sviluppatori di terze parti di creare strumenti, app e servizi che migliorano l'esperienza EVE. Che si tratti di analisi di mercato, gestione della flotta, logistica industriale o raccolta di informazioni, ESI gioca un ruolo chiave nel modo in cui i giocatori interagiscono con il gioco, sia all'interno che all'esterno di New Eden.

Cos'è l'ESI?

ESI è un'API RESTful scalabile con autenticazione SSO e funzionalità di lettura/scrittura. In pratica, alimenta migliaia di applicazioni, fungendo da spina dorsale dell’ampio ecosistema di terze parti di EVE.

La comunità di sviluppo di terze parti ha creato una potente suite di strumenti che estendono il gameplay di EVE, promuovono l'innovazione e persino modellano le economie di gioco. Strumenti di mercato e commerciali come EVE Market Browser e Janice aiutano i trader a monitorare le tendenze del mercato, ottimizzare la logistica, e confrontare gli ordini di acquisto/vendita in tempo reale. Le piattaforme di gestione di società e alleanze come Alliance Auth automatizzano il reclutamento, le autorizzazioni e il controllo degli accessi per le organizzazioni di giocatori, garantendo funzionalità fluide per massicce alleanze. Intel e strumenti di mappatura come DOTLAN e RIFT supportano i movimenti strategici e il tracciamento dei nemici, mentre strumenti di settore come Fuzzworks e Adam4EVE assistono con progetti, gestione delle risorse e catene di produzione. Anche oltre le applicazioni autonome, ESI supporta integrazioni come il componente aggiuntivo EVE Online Excel, che fornisce accesso diretto ai dati di gioco per la pianificazione e l'analisi.

L’ESI ha dimensioni enormi. Oltre 2.350 applicazioni attive di terze parti si affidano ad essa, con il 42% dei giocatori EVE attivi che hanno almeno un personaggio autorizzato in un'app basata su ESI. L'API gestisce oltre 350.000 richieste al minuto, alimentando innumerevoli risorse e dashboard create dai giocatori. L'enorme volume di traffico verso i siti web basati su ESI è incommensurabile: se hai mai utilizzato uno strumento di community per informazioni, scambi o pianificazione, probabilmente hai interagito con ESI. Dagli hub commerciali ai consigli di guerra, dagli industriali solitari alle massicce coalizioni, ESI è una parte essenziale del metagioco di EVE Online.

Questo blog di sviluppo esamina più da vicino l'ESI oggi, le sfide che deve affrontare e le misure adottate per garantire un futuro migliore agli sviluppatori di terze parti e ai giocatori che fanno affidamento sui loro strumenti.

Lezione di storia

Le API sono parte integrante di EVE Online da oltre un decennio, consentendo ai giocatori di estendere il gioco oltre il client e in un vasto ecosistema di strumenti di terze parti. L'EVE Swagger Interface (ESI) è l'ultima evoluzione, che sostituisce i suoi predecessori, l'API XML e CREST. ESI fornisce endpoint sia pubblici che autenticati, con questi ultimi che richiedono l'accesso tramite EVE Single Sign-On (SSO) per accedere a dati specifici del personaggio o dell'azienda.

Il lancio dell'API XML è stato rivoluzionario. All'epoca, nessun altro gioco offriva un livello così profondo di accesso programmatico ai propri dati. I giocatori lo hanno utilizzato per creare alcuni dei primi strumenti di terze parti di EVE, dai pianificatori di personaggi agli aggregatori di mercato. Tuttavia c'erano limitazioni significative. Era di sola lettura, lento da aggiornare e mancava la documentazione.

Per risolvere questi problemi è stato introdotto CREST, che offre un'interfaccia RESTful e un accesso più rapido ai dati di simulazione in tempo reale. Tuttavia, CREST mancava di coerenza e scalabilità, rendendo chiaro che era necessaria una soluzione più solida.

Enter ESI

Basato su Swagger (ora OpenAPI), ESI aggrega le specifiche API di più servizi Kubernetes in un'API unificata, gestendo routing, autenticazione, convalida di input/output e altro ancora.

L’introduzione di ESI è coincisa con il Progetto Sanguine e la prima iterazione di EVE Portal alla fine del 2016. Questi progetti hanno gettato le basi per un’architettura server più avanzata all’interno di EVE Online e hanno introdotto un paradigma del bus di messaggi che ha migliorato il flusso di dati in tempo reale tra i servizi. Con l'evoluzione dell'utilizzo, si è reso necessario un protocollo con prestazioni più elevate, che abbia portato all'integrazione di gRPC per una serializzazione e una comunicazione più rapide.

Questo cambiamento ha aperto la strada a Quasar, una tecnologia progettata per modernizza ulteriormente il backend di EVE con gRPC, messaggistica basata sugli eventi e microservizi. Dagli albori delle API XML fino all'era moderna di ESI, Kubernetes e Quasar, EVE Online rimane in prima linea nelle API integrate nei giochi.

Il supporto per lo sviluppo di terze parti continua ad evolversi e, come vedrai in seguito, c'è ancora del lavoro da fare per garantire che ESI rimanga robusto, affidabile e a prova di futuro.

Sviluppi recenti nell'ESI

Come puoi immaginare, c'è un lungo elenco di miglioramenti pianificati per ESI. Tuttavia, prima di implementare le modifiche, è necessaria una valutazione approfondita dello stato attuale della piattaforma, non solo in termini di come è stata progettata per funzionare, ma di come funziona effettivamente oggi e di dove è in ritardo nell’ecosistema EVE.

FUTURE of EVE-s API

Il primo passo: integrazione Quasar

L’ESI è antecedente a Quasar e, sebbene esista una comunicazione tra loro, un’integrazione più profonda potrebbe sbloccare miglioramenti significativi. Attualmente, ESI si affida a RabbitMQ, che lo limita a gestire solo le richieste anziché elaborare i dati di gioco in tempo reale. Ad esempio, le richieste di dati sulla posizione ("Dov'è il carattere X?") vengono memorizzate nella cache per cinque secondi per consentire agli strumenti di mappatura di tracciare il movimento. Se ESI potesse ricevere notifiche in tempo reale quando un personaggio cambia sistema solare, potrebbe invalidare la cache in modo dinamico invece di fare affidamento su intervalli fissi.

Tuttavia, l’integrazione di Quasar in modo più completo presenta delle sfide. La transizione richiede la migrazione delle restanti richieste ESI alle richieste Quasar Protocol Buffer (protobuf), un'impresa importante che prevede la rimodellazione di parti dell'universo EVE in messaggi protobuf. Parte di questo lavoro è già stato completato come parte dei miglioramenti delle funzionalità, ma sono necessari ulteriori progressi per garantire la piena compatibilità.

Segnalibri ESI: il blackout non così temporaneo

Quando il nuovo sistema di segnalibri è stato lanciato nel 2019, ha introdotto un sistema di condivisione basato su ACL che era in conflitto con ESI. Di conseguenza, i segnalibri esi sono stati "temporaneamente" disabilitati.

Dopo un'ulteriore revisione, è diventato chiaro che esi-bookmarks avrebbe avuto bisogno di una ricostruzione completa per funzionare all'interno del sistema aggiornato. Data la portata di questo impegno, è stata presa una decisione di chiudi permanentemente gli endpoint dei segnalibri ESI. La futura reimplementazione rimane una possibilità, ma questa è sicuramente una decisione a lungo termine.

Storia del mercato e suo impatto sul monolite

ESI gestisce un immenso volume di traffico, che in genere è gestibile. Tuttavia, l’endpoint della cronologia di mercato rappresentava una sfida unica.

L'endpoint fornisce una cronologia di 500 giorni per un singolo elemento in una singola regione, memorizzata nella cache da un tempo di inattività all'altro. Se i dati non sono disponibili nella cache, vengono estratti direttamente dai nodi di mercato in Tranquility (TQ), creando ulteriore tensione.

Quando originariamente progettato, lo scopo dell’endpoint era quello di imitare il grafico della cronologia del mercato del gioco.

FUTURE of EVE-s API - 2

Tuttavia, a causa dell’enorme numero di richieste non memorizzate nella cache (in 70 regioni e migliaia di elementi), il carico del server è diventato eccessivo. Ad aggravare il problema, richieste non corrette (come "Qual è la cronologia del mercato di Fedos in Abyssal Space?") hanno causato ricerche non necessarie nel database, aumentando ulteriormente il carico.

Gli sforzi per bloccare le richieste abusive si sono trasformati in un continuo gioco del gatto e del topo, con alcuni utenti che aggirano le restrizioni utilizzando AWS e Tor. Verso la fine del 2022, la tensione aveva raggiunto un punto di rottura, costringendo a una rimozione temporanea dell’endpoint mentre venivano affrontate alcune delle questioni sottostanti.

Per mitigare l'impatto mantenendo la funzionalità, sono stati introdotti limiti di velocità, consentendo l'accesso continuo e fornendo tempo per esplorare soluzioni a lungo termine.

Scheda del personaggio ed endpoint della storia dell'azienda

Oltre agli endpoint della cronologia di mercato, elevati volumi di richieste hanno interessato anche la scheda del personaggio e il personaggio cronologia aziendale.

Per l'endpoint della cronologia aziendale è stata implementata una soluzione simile alla correzione della cronologia del mercato. Poiché la maggior parte dei risultati erano il risultato dello scraping dei dati da parte di applicazioni di terze parti, è stato applicato un limite di velocità basso per facilitare il carico del server.

Per l'endpoint della scheda del personaggio era necessario un approccio diverso. Questo endpoint viene utilizzato da molte applicazioni per l'autenticazione degli utenti, rendendo la limitazione della velocità una soluzione poco pratica. Sono state invece apportate modifiche alla memorizzazione nella cache per ridurre le query dirette sul backend.

La memorizzazione nella cache funziona in modo simile alla limitazione della velocità riducendo le richieste non necessarie, ma anziché bloccare le query eccessive, aumenta la probabilità che i dati precedentemente richiesti vengano forniti dalla cache. Poiché i giocatori spesso accedono a più applicazioni, aumentando la durata della cache aumenta la possibilità che più sistemi riutilizzino gli stessi dati archiviati, riducendo significativamente il carico sul backend.

Verso il futuro

L'obiettivo è reintegrare ESI nel ciclo di sviluppo ed espansione di EVE Online, pertanto sono previsti numerosi miglioramenti chiave per garantire migliori prestazioni, affidabilità e scalabilità.

Miglioramenti dell'osservabilità

Il backend di EVE Online utilizza Honeycomb, uno strumento di monitoraggio che fornisce visibilità in tempo reale sulle richieste in arrivo, sia dal client EVE che ESI. Questo sistema tiene traccia della durata della richiesta, dell'impatto del sistema (Quasar o Monolith) e dei metadati, offrendo informazioni preziose sui colli di bottiglia delle prestazioni.

In precedenza, il tracciamento iniziava solo dopo che una richiesta entrava in Quasar o Monolith, lasciando un punto cieco sulle stesse richieste HTTP. Un recente aggiornamento consente ora di avviare la tracciabilità nel momento in cui una richiesta entra nell'ESI, fornendo dati cruciali su:

  • Quali applicazioni effettuano richieste esattamente a intervalli di cinque minuti.
  • Quanto è efficace la memorizzazione nella cache, incluso se le risposte memorizzate nella cache vengono utilizzate in modo efficiente.

Sebbene le informazioni fossero disponibili prima, era difficile correlarle. Questi miglioramenti contribuiscono a rendere le richieste più utili, a ottimizzare le prestazioni e a prevenire sforzi inutili sul back-end. In altre parole, impostare il tuo User-Agent ora sarà utile!

Miglioramenti all'esportazione dei dati statici

Circa una volta al mese viene creata un'esportazione di dati statici (SDE), contenente dati di gioco essenziali che cambiano raramente, come tipi di navi, sistemi solari, stazioni NPC, posizioni degli agenti, ecc. Sebbene alcune di queste informazioni siano disponibili tramite ESI, molti sviluppatori preferiscono utilizzare SDE per efficienza.

Attualmente, la generazione dell'SDE è un processo manuale che, per una serie di motivi, porta a ritardi e incoerenze tra l'SDE e i dati di gioco live su Tranquility. Per risolvere questo problema, sono in corso lavori per automatizzare gli aggiornamenti e garantire che i dati esportati rimangano aggiornati.

Sono allo studio diversi approcci, tra cui:

  • Generazione di un nuovo SDE dopo ogni aggiornamento di Tranquility.
  • Aggiornamento dell'SDE ogni martedì, in linea con la manutenzione settimanale.

È necessario tenere in considerazione molteplici considerazioni, ad esempio il fatto che gli sviluppatori utilizzino le conversioni dell'SDE e così via. Inoltre, alcuni file attesi mancano dall'SDE, richiedendo agli sviluppatori di reperirli da posizioni alternative e anche colmare queste lacune è sul radar.

Transizione all'hub dati

Molte richieste ESI vengono ancora inviate direttamente al Monolito, il che può creare colli di bottiglia nelle prestazioni e avere un impatto su Tranquility. L'obiettivo a lungo termine è trasferire la maggior parte delle richieste di lettura al Data Hub, un sistema interno progettato per archiviare tutta l'attività di gioco a scopo di analisi e monitoraggio. È importante sottolineare che contiene le informazioni che ESI interroga frequentemente. Spostando le richieste di lettura di ESI da Monolith e Quasar e verso Data Hub, la stabilità del sistema migliorerà, poiché il carico di applicazioni di terze parti non influirà più sull'infrastruttura principale del gioco. In altre parole, anche se ESI mandasse in crash il Data Hub (il che non è da intendersi come una sfida!), non ci sarebbe alcun impatto sul gioco stesso. Questa separazione consentirebbe una maggiore flessibilità e scalabilità poiché sempre più applicazioni di terze parti continuano a fare affidamento su ESI.

Inoltre, sempre più dati di gioco stanno diventando disponibili tramite il launcher EVE e servizi basati sul web come Frontlines, che è stato recentemente aggiornato con il monitoraggio dettagliato di Pirate Insurgency. Collegare ESI a queste fonti aggiuntive fornirebbe maggiore flessibilità nel modo in cui si accede ai dati di gioco in tempo reale.

Per implementare pienamente questa transizione, saranno necessarie modifiche estese al backend e i test avranno luogo con endpoint selezionati prima di un’implementazione più ampia.

FUTURE of EVE-s API - 3

Limiti di velocità e miglioramenti nella gestione degli errori

Esistono limiti di velocità ESI per prevenire un carico eccessivo su Tranquility, ma il sistema attuale manca di trasparenza e fornisce poco feedback agli sviluppatori. Attualmente, la limitazione della velocità viene applicata dal Monolith, il che significa che gli sviluppatori vengono a conoscenza dei propri limiti di richiesta solo una volta superati. Questa mancanza di visibilità rende difficile per le applicazioni modificare il proprio comportamento in modo proattivo.

Per risolvere questo problema, si sta esplorando un limitatore di velocità basato su token. Secondo questo modello, ogni richiesta ESI consumerebbe un numero diverso di token in base al tipo di risposta ricevuta:

  • Le risposte riuscite con i dati consumerebbero due token.
  • Le risposte riuscite senza nuovi dati (304 Not Modified) consumerebbero un token.
  • Gli errori dell'utente (codici di risposta 400-499) consumerebbero dieci token.
  • Gli errori del server (codici di risposta 500-599) consumerebbero zero token, eliminando le penalità per gli errori di backend.

Ogni endpoint avrebbe un determinato numero di token, che verrebbero reintegrati a intervalli regolari. Questo sistema fornirebbe feedback in tempo reale, consentendo agli sviluppatori di monitorare il proprio utilizzo e adeguarsi di conseguenza.

Un'altra sfida con l'attuale sistema è che i limiti del tasso di errore a volte possono penalizzare gli utenti per problemi che esulano dal loro controllo. Al momento, ogni richiesta non riuscita, indipendentemente dal fatto che il problema risieda sul lato client o sia il risultato di un problema di backend, viene conteggiata nel limite di un utente. Con il nuovo sistema, solo gli errori lato client (codici di risposta della serie 400) avrebbero un impatto sull'utilizzo dei token, mentre gli errori lato server no.

Queste idee sono ambiziose e per arrivarci è necessario molto lavoro, ma vale sicuramente la pena esplorarle. Questo approccio creerebbe un’esperienza più giusta e prevedibile per gli sviluppatori di terze parti, pur proteggendo la stabilità di Tranquility.

Revisione dell'infrastruttura e nuovi endpoint

L’infrastruttura ESI è in fase di modernizzazione per allinearsi agli standard di codifica aggiornati di EVE e per facilitare lo sviluppo e l’implementazione di nuovi endpoint.

L'obiettivo è rendere ESI più resiliente, migliorare i tempi di attività delle applicazioni di terze parti e consentire un'iterazione più rapida sui nuovi endpoint.

Diversi nuovi endpoint sono in fase di sviluppo come parte dei continui miglioramenti all'ESI, tra cui.

  • Progetti aziendali: un nuovo endpoint che fornisce una panoramica dei progetti gestiti dall'azienda, inclusi contributi, logistica e monitoraggio finanziario. Ciò consentirà alle aziende di gestire meglio i propri obiettivi interni e premiare i migliori contributori.
  • Supporto del sistema di sovranità – Aggiornamenti al monitoraggio della sovranità, inclusi hub di sovranità, uffici doganali, skyhook e covi di mercenari. Queste aggiunte supporteranno i cambiamenti di sovranità recenti e imminenti e forniranno informazioni più dettagliate sul controllo del territorio.
  • Paragon Hub e integrazione SKINR: nuovi endpoint per il monitoraggio degli elenchi di Paragon Hub, dell'utilizzo dei materiali SKINR e delle richieste di licenza SKIN. Questi forniranno tutti gli strumenti necessari per gli SKINdustrialist in erba.

Inizialmente, questi endpoint saranno di sola lettura. Gli endpoint con funzionalità di scrittura dovranno attendere, poiché sono più complessi nell'esecuzione.

Oltre a questi, nel corso del tempo verranno introdotti ulteriori endpoint, incluso il supporto per le prossime espansioni e funzionalità di gioco entro la fine dell'anno. Continuerà inoltre il lavoro per migrare gli endpoint più vecchi sull'infrastruttura aggiornata per migliorare le prestazioni e la manutenibilità.

Conclusione e risorse della comunità

EVE Online ha sempre dato il meglio di sé quando la community dei giocatori spinge i confini di ciò che è possibile, sia nel gioco che oltre. Gli sviluppatori di terze parti hanno creato un incredibile ecosistema di strumenti che migliorano qualsiasi cosa, dall'analisi di mercato alle operazioni della flotta. I continui miglioramenti a ESI garantiranno che gli sviluppatori dispongano degli strumenti, della documentazione e del supporto necessari per continuare a innovare.

Se sei uno sviluppatore che vuole iniziare o un veterano che vuole contribuire, ecco alcune risorse essenziali per aiutarti nel tuo viaggio:

  • Portale per sviluppatori EVE: il tuo hub principale per lo sviluppo di terze parti. Qui puoi registrare applicazioni, accedere alla documentazione API e SSO, blog e notizie di sviluppatori di terze parti (feed RSS disponibile) e trovare risorse aggiuntive da integrare con EVE Online.
  • Componente aggiuntivo Excel Online EVE – Una potente integrazione per i giocatori che desiderano l'accesso diretto ai dati di gioco di EVE all'interno dei fogli di calcolo, semplificando l'analisi di risorse, mercati e dati di settore.
  • Strumenti e servizi della community: una vetrina di progetti creati dai giocatori che migliorano l'esperienza di gioco. Gli sviluppatori che desiderano contribuire con i propri progetti possono inviare una richiesta pull per visualizzare il proprio lavoro.
  • awesome-eve – Un altro elenco completo di app e strumenti gestito dalla community creato dai giocatori di EVE.
  • Problemi e richieste di funzionalità ESI – Il repository principale per tenere traccia di bug, segnalare problemi e richiedere nuove funzionalità ESI. Sia gli sviluppatori che i giocatori possono impegnarsi qui per contribuire a plasmare il futuro di ESI.
  • Partecipa alla discussione su Discord – Entra in contatto con gli sviluppatori CCP e gli sviluppatori di terze parti unendoti al canale #3rd-party-dev-and-esi sul server Discord ufficiale di EVE Online per condividere idee, porre domande e collaborare a nuovi progetti. Puoi anche iscriverti al canale di annunci del blog #3rd-party-dev per ricevere le notizie direttamente sul tuo Discord!

Fonte originale:eveonlineitalia.it— Leggi l'originale