Come arrestare in sicurezza il server API?

0

Abbiamo un server API, che serve entrambe le nostre app web e app mobile (entrambi Android, IOS) .

A volte dobbiamo arrestare i server di database per l'aggiornamento o la manutenzione, quindi il sito mostra il tipo di pagina Manutenzione in corso .

Funziona per l'app Web, ma cosa fare per l'app mobile? Sull'app non è possibile mostrare alcun tipo di pannello di manutenzione per interrompere le API di chiamata dell'app, pertanto tutte le richieste sull'app mobile terminano senza alcuna risposta da parte del server API e non riescono. Come viene gestito questo scenario? Qual è la pratica comune?

    
posta Shaharyar 03.04.2017 - 08:36
fonte

3 risposte

5

Per il futuro, ti suggerisco di assicurarti che il tuo server restituisca uno stato 503 quando è in manutenzione, fai del tuo meglio per restituire uno stato 503 in caso di problemi imprevisti e assicurati che le tue app mobili gestiscano questo problema bene.

In questo momento ti suggerisco di fare dei seri test su come si comportano le tue app mobili se c'è un errore 503. Se causa problemi seri, aggiorna le app e non eseguire la manutenzione finché la maggior parte degli utenti non utilizza una versione dell'app che si comporterà correttamente. Se causa problemi ma non è fatale, discuti con il tuo management se puoi fare la manutenzione. Si consiglia di effettuare la manutenzione di notte quando sono interessati meno utenti.

    
risposta data 03.04.2017 - 21:40
fonte
3

In questo caso dovresti modificare la tua app mobile, quindi quando ricevo il 503 verrà visualizzato il messaggio corretto come "In Manutenzione, torna tra 15 minuti".

Inoltre, dal momento dell'aggiornamento / sostituzione / indipendentemente dai database, non è necessario disattivare gli endpoint delle API, è sufficiente disporre di uno switch che verifichi le ore di manutenzione / in fase di risposta e risponda in modo conforme ...

    
risposta data 03.04.2017 - 20:14
fonte
0

Idealmente vorrai eseguire l'upgrade con zero tempi di inattività, ma se non puoi assolutamente:

Crea questa parte della tua API. Aggiungi una chiamata che restituisce semplicemente uno stato e un messaggio. Dirigere i client per effettuare questa chiamata prima di effettuare altre chiamate (ad es. All'avvio dell'app) e per visualizzare il messaggio se il server è inattivo per manutenzione. Una volta che questo è stato fatto, potrebbe essere gestito in molti modi diversi sul lato server (ad esempio, reindirizzare a un server che restituisce valori codificati e ospita la pagina "down for maintenance").

Se il server è completamente inattivo, i client ottengono un timeout durante la prima chiamata e questo dà loro la possibilità di gestirlo con garbo. Se il server è attivo ma in qualche tipo di manutenzione, fornisce all'utente alcune informazioni su cosa sta succedendo.

Si noti che questo aiuterà solo i nuovi clienti. Se un client è già connesso, l'unico modo per rimediare è aggiungere un tipo di ritorno di stato complesso a ogni chiamata.

    
risposta data 03.04.2017 - 20:26
fonte

Leggi altre domande sui tag