Cercare consigli sul design backend per applicazioni mobili utilizzando AWS, Flask e Docker

Sono uno sviluppatore di back-end di novizio, attualmente affrontato con l'incarico di creare un backend per un'applicazione mobile sociale che memorizzerà informazioni come informazioni su utenti e seguenti e dati utente come copertine di immagini e foto di profilo.

Ho utilizzato Flask per instradare le richieste HTTP e gestire localmente le operazioni CRUD in MySQL. Nei primi passi di tentativo di implementazione su AWS, mi sono affrontato molti confusi riguardo al design complessivo del backend.

  • Layout di architettura – Sono stato recentemente esposto all'architettura a tre livelli per i backend e non sono sicuro di come interagiscono nell'era corrente di distribuzione "serverless".
    • Sarà necessario un proxy inverso come Nginx e servizi come Gunicorn per questo backend se intendo usare CORS per memorizzare i dati utente nei secchi S3?
    • CORS è davvero così male in termini di sicurezza e, in caso affermativo, cosa posso fare per migliorarlo?
  • Docker dati volumi – vorrei distribuire un contenitore docker come la mia principale fonte per i dati persistenti invece di utilizzare le installazioni AWS RDS per mantenere la maggior parte della realizzazione in-house, come mi è stato istruito.
    • Come faccio a garantire la scalabilità con un tale approccio e incorporare il bilanciamento del carico durante l'accesso o la scrittura al database? I servizi di AWS per il bilanciamento del carico sono strettamente migliori che dovrei rompere il principio di mantenere le cose in casa?
    • Come faccio a gestire le migrazioni e le future implementazioni?

Sto prendendo questa opportunità per imparare il più ansible le tecnologie di sviluppo del backend in modo che qualsiasi consiglio o guida sia molto apprezzato.

Grazie mille!