Architettura per scanner di biglietti di ammissione di eventi per eventi con più voci

2

Sto lavorando a un servizio che consente agli organizzatori di eventi di vendere biglietti per i loro eventi online (molto simile a Eventbrite per essere onesti).

I clienti stampano i biglietti da soli (ogni biglietto ha un codice a barre) e li presentano all'evento, dove vengono scansionati utilizzando un'app mobile. L'app mobile comunica con il server e controlla il codice del ticket e alla persona è consentito l'accesso all'evento.

Ora abbiamo appena iniziato a sviluppare l'app per dispositivi mobili e siamo già in un vicolo cieco. Normalmente, per mitigare gli effetti dei potenziali tempi di inattività dei server e anche per evitare di fare un sacco di richieste quando un sacco di persone partecipa a un evento, specialmente quando tali richieste potrebbero essere inviate tramite una connessione 3G traballante, vorrei seguire questo approccio:

  • L'app per dispositivi mobili esegue periodicamente il polling del server e carica i codici ticket generati dall'ultima richiesta
  • L'app controlla il suo database locale dei codici ticket quando un cliente presenta un ticket. Se il ticket non viene trovato, avvia una estrazione dati.
  • Inoltre, invia periodicamente i codici ticket "registrati", in modo che possano essere aggiornati anche sul server.

Questo approccio probabilmente funzionerebbe bene, se non fosse per la possibilità che un evento potesse avere più punti di ingresso, rendendo così questa soluzione vulnerabile agli imbrogli da parte di qualcuno che stampa due copie dello stesso biglietto e li usa per due persone separate in differenti inserimenti. Lo scopriremo solo quando entrambe le istanze dell'app mobile inviano i dati al server.

Una soluzione alternativa sarebbe che le applicazioni comunichino anche tra loro, ma questo solleva altri problemi:

  • Il Bluetooth non è fattibile, a causa dell'intervallo limitato.
  • 3G può essere instabile, proprio come sopra.
  • La disponibilità di WiFi non può essere garantita a tutti gli eventi.

Mi piacerebbe davvero trovare una soluzione a questo che non implichi dover inviare una richiesta per ogni codice ticket, perché ora posso vederli, centinaia di persone allineate, la linea che va da nessuna parte perché il server è inattivo , o la connessione Internet non funziona, e posso sentire il mio telefono squillare il sabato sera, e io davvero, davvero, davvero non lo voglio.

Ci scusiamo per la lunga storia. Qualche idea?

    
posta Victor Stanciu 06.01.2015 - 18:30
fonte

3 risposte

5

La situazione ideale è quella di avere una connessione affidabile con un singolo server in modo da poter verificare in tempo reale che il biglietto presentato non è già stato ammesso all'evento.

Come hai sottolineato, questo non è sempre possibile.

Un paio di soluzioni alternative non tecniche:

  • Utilizza posti assegnati. I possessori di biglietti duplicati dovrebbero sedersi l'uno sull'altro. Questa probabilmente non è un'opzione per te.
  • Poiché i biglietti sono unici, dopo l'evento dovrebbe essere possibile identificare quali biglietti sono stati utilizzati più volte. Fai fatturare l'acquirente del biglietto per le tasse di ammissione aggiuntive, più una tassa di disturbo.
  • Supponiamo che molte persone siano oneste e non ti preoccupare - trascorrerai più tempo e più tempo; denaro che previene il problema di quello che perderai ignorandolo. (Questo è vero solo a volte - dipende dall'evento e dal pubblico)

Torna alla tecnologia:

  • Ovviamente, un singolo dispositivo può controllare / prevenire più voci poiché sa quali titolari del biglietto sono stati ammessi attraverso quel cancello. Ciò limiterà la tua perdita al (peggiore dei casi) il numero di porte che hai.

  • Codice per una soluzione 3G / 4G / Wifi / Internet, ma con garbo ricadere su "solo applicazione locale" e / o "aggiornamento (server e dispositivo - sincronizzazione a 2 vie) se possibile"

Dato che non puoi essere "perfetto", scegli "abbastanza buono".

    
risposta data 06.01.2015 - 19:14
fonte
4

Come GlenH7 ha già affermato, dati i vincoli che hai elencato nella domanda il tuo problema è effettivamente irrisolvibile. Supponendo che "non può essere fatto" non è una risposta accettabile ci rimane la necessità di dover modificare i vincoli.

Un'opzione che hai menzionato implicava che i dispositivi mobili precariassero l'intero set di biglietti. La tua preoccupazione era che la frode non sarebbe stata rilevata in tempo reale.

Che ne dici di rilassare questo vincolo di "rilevamento delle frodi in tempo reale?"

Per me sembra un compromesso abbastanza decente. Soprattutto se si considera che la sincronizzazione periodica dello stato del sistema (quando possibile) aiuta a prevenire la maggior parte delle frodi sui biglietti.

Inoltre, la stragrande maggioranza dei tuoi utenti 1) non conoscerà questa vulnerabilità, e 2) probabilmente non gliene frega abbastanza di sfruttarlo.

E infine, poiché non sembra esserci una soluzione tecnica al tuo problema, potresti prendere in considerazione le opzioni social o legali . Ad esempio, è possibile attenuare ulteriormente il tipo di abuso sopra menzionato aggiungendo qualcosa ai propri Termini e Accordi (dichiarazione di non responsabilità: non sono un avvocato). Dubito che sarebbe effettivamente applicabile, ma potresti aggiungere una sanzione finanziaria a chiunque cerchi di imbrogliare il sistema.

    
risposta data 06.01.2015 - 19:16
fonte
0

Che dire di una rete wifi ad hoc tra i dispositivi mobili, essenzialmente se un dispositivo esegue la scansione di qualcosa che lo trasmette agli altri scanner in modo che sappiano di non accettarlo di nuovo. Potresti perdere dati tra i dispositivi, ma supponendo che tu abbia un certo livello di connettività funzionante, allora ottieni abbastanza dati per tentare di sfruttare il sistema non ne vale la pena.

Questa soluzione ovviamente non scala bene e potrebbe essere difficile da configurare fisicamente.

Dopo l'evento è possibile scaricare tutti i record sul server in modalità wifi reale o qualsiasi altro metodo di comunicazione desiderato.

    
risposta data 06.01.2015 - 19:02
fonte

Leggi altre domande sui tag