Come costruire un’infrastruttura scalabile per le app mobili?
Volete scalare un’infrastruttura di applicazioni mobili? Ecco un tutorial approfondito che illustra le lezioni di vita reale su come scalare un’infrastruttura di applicazioni mobili.
Contents
- 1 Che cos’è un’applicazione mobile?
- 2 Qual è la definizione di architettura di un’app scalabile?
- 3 Come si presenta l’infrastruttura di un’app mobile?
- 4 Come scalare un’applicazione mobile?
- 5 Conclusione
- 6 FAQ
- 7 Che cos’è un’app mobile?
- 8 Com’è strutturata l’infrastruttura di un’app mobile?
- 9 Come creare un’infrastruttura scalabile per app mobile?
Che cos’è un’applicazione mobile?
Un’applicazione mobile è un’applicazione che viene eseguita su un dispositivo mobile come smartphone, tablet e orologi. Esistono diversi tipi di applicazioni mobili, tra cui le applicazioni native, le applicazioni ibride e le applicazioni web.
- Le app native funzionano per un sistema operativo specifico come Android o iOS;
- Le applicazioni web sono codificate utilizzando tecnologie come HTML5 e CSS;
- Le app ibride funzionano come le app web, ma sono incorniciate in un contenitore nativo.
Continuate a leggere per saperne di più sull’architettura dell’infrastruttura delle app mobili.
Qual è la definizione di architettura di un’app scalabile?
Costruire applicazioni mobili in scala non è facile e molte variabili sono essenziali quando si definisce un’architettura scalabile.
Un’applicazione mobile grande e scalabile supporterà probabilmente migliaia o addirittura milioni di utilizzi e dovrà essere performante, affidabile e sicura.
Significa che un’architettura best-in-class non avrà tempi di inattività, crash, velocità di caricamento e sicurezza all’avanguardia.
Questo articolo prenderà in considerazione questi fattori per proporre un’infrastruttura backend scalabile per le app mobili.
Come si presenta l’infrastruttura di un’app mobile?
Diversi elementi compongono l’architettura di un’applicazione mobile e di seguito sono riportate le infrastrutture necessarie per le applicazioni mobili.
- Piattaforme di pubblicazione di app
- SDK – Kit di sviluppo software
- API
- CDN – Rete di consegna dei contenuti
- Archiviazione a oggetti
- Bilanciatori di carico
- Server applicativi
- Server di database
Continuate a leggere per saperne di più sull’architettura di un’applicazione mobile scalabile e su ciascuno dei livelli sopra descritti.
Piattaforme di pubblicazione di app
È possibile creare un’applicazione mobile utilizzando diverse tecnologie. Dai linguaggi di sviluppo nativi per iOS e Android come Swift e Kotlin/Java ai framework di sviluppo multipiattaforma come React Native o Flutter.
Le tecnologie sopra descritte creano il frontend di un’applicazione mobile o l’interfaccia lato client. I negozi di applicazioni come Google Play e App Store forniscono l’ecosistema per distribuire le applicazioni mobili agli utenti finali.
Gli sviluppatori devono inviare le loro applicazioni mobili a queste piattaforme di pubblicazione, attendere la loro revisione e solo dopo aver completato questa fase potranno avere l’applicazione in funzione.
Sia Google Play che App Store hanno linee guida di pubblicazione diverse ed è essenziale leggerle prima per evitare problemi che potrebbero impedire la pubblicazione di un’applicazione.
Per evitare di passare al vaglio dei negozi di applicazioni, un’alternativa è lo sviluppo di una PWA – Progressive Web Applications utilizzando tecnologie come React, Angular e Ionic.
SDK – Kit di sviluppo software
I kit di sviluppo software sono un passo essenziale nella costruzione di un’infrastruttura scalabile per le app mobili. Un SDK consiste in un pacchetto installabile con strumenti quali API, librerie, debugger, documentazione, ecc.
Un SDK per backend mobile molto probabilmente includerà elementi che fanno da ponte tra l’interfaccia del backend e quella del frontend.
Un esempio di facile comprensione è l’invio di una notifica push dal backend al frontend. Un SDK faciliterà questa azione e accelererà l’integrazione degli elementi funzionali.
API – Interfacce di programmazione delle applicazioni
Le API sono un elemento fondamentale nello sviluppo dell’architettura di un’applicazione mobile. Le API sono interfacce software che collegano il frontend (lato client) al backend (lato server) di un’applicazione mobile.
I vantaggi dell’uso delle API nell’implementazione di un backend di un’applicazione mobile includono l’automazione delle attività, la personalizzazione delle funzioni, la fornitura flessibile di informazioni e la distribuzione di nuovi servizi.
CDN – Rete di consegna dei contenuti
Un CDN è un gruppo geograficamente distribuito di server che lavorano insieme per fornire una consegna veloce dei contenuti. Questi server sono situati più vicini agli utenti finali e consentono un trasferimento più rapido delle risorse per caricare i contenuti Internet (immagini, video, ecc.).
Ulteriori vantaggi dell’implementazione della CDN sono la riduzione dei tempi di comunicazione tra il lato client di un’applicazione mobile e il lato server grazie a un instradamento ottimale, la riduzione dei costi della larghezza di banda e la sicurezza (attacchi DDoS, certificati, ecc.).
Archiviazione a oggetti
Questo elemento dell’infrastruttura dell’app mobile si collegherà alla CDN e comprenderà l’archiviazione di file, video, immagini, ecc. La CDN metterà in cache i contenuti e accelererà i tempi di consegna alla posizione più vicina all’utente finale.
Bilanciatori di carico
Il livello successivo nella creazione di un’infrastruttura per app mobili è costituito dai bilanciatori di carico. Nel cloud computing, i bilanciatori di carico distribuiscono le attività su un insieme di server per rendere più efficiente l’elaborazione complessiva.
Il CDN si collegherà ai bilanciatori di carico e il software del bilanciatore di carico distribuirà le richieste del lato client in modo efficiente, assicurando un’elevata disponibilità e scalando verso l’alto o verso il basso in base alla domanda.
Server applicativi
Il passo successivo nella costruzione dell’architettura di un’applicazione mobile è rappresentato dai server delle applicazioni. Questa parte dell’infrastruttura gestisce la logica aziendale e si colloca nel mezzo tra i server di database e la CDN.
Server di database
Il passo finale nella creazione di un’infrastruttura per applicazioni mobili è la creazione dei server di database. Un cluster di database comprende istanze ad alta potenza che memorizzano e manipolano i dati memorizzati.
Un’infrastruttura di database può essere ridondante o meno. Le architetture ridondanti prevedono almeno due istanze che sincronizzano i dati in tempo reale.
Come scalare un’applicazione mobile?
Esistono principalmente due modi per costruire un’infrastruttura scalabile per le applicazioni. Il primo consiste nell’utilizzare servizi gestiti come il Mobile Backend as a Service, mentre il secondo consiste nel creare il backend da zero utilizzando un fornitore di Infrastructure as a Service.
L’utilizzo di un servizio BaaS comprende un’infrastruttura pronta all’uso e scalabile, blocchi di costruzione pronti all’uso per accelerare lo sviluppo del backend e SDK per semplificare l’integrazione lato server e lato client. In generale, la scalabilità delle app è più facile da ottenere utilizzando una piattaforma backend.
Lo sviluppo di un backend da zero offre agli sviluppatori maggiore flessibilità e controllo sulla maggior parte degli elementi dell’infrastruttura. D’altra parte, dovranno gestire il backend e scalare l’infrastruttura a seconda del carico di lavoro.
Analizziamo in dettaglio ciascuna di queste due opzioni.
BaaS – Backend come servizio
Scalare il backend di un’applicazione mobile utilizzando un BaaS è estremamente facile e tutti gli elementi sono già pronti per raggiungere questo obiettivo. L’attività principale di una piattaforma BaaS consiste nel fornire ai propri clienti un’architettura senza problemi, sicura e scalabile.
Alcuni fornitori di backend, come Back4App, consentono agli utenti di creare un backend in pochi minuti. Il primo passo è iscriversi e dare un nome alla prima applicazione.
La fase successiva è completamente automatizzata e la piattaforma fornirà un modello di dati, server applicativi, politiche di scaling, backup e sicurezza in pochi minuti.
La schermata successiva offre un’interfaccia grafica utente (GUI) che comprende il modello di dati, le funzioni serverless, le API e le impostazioni dell’infrastruttura.
Il backend è pronto all’uso, ha una scalabilità incorporata e tutto ciò che l’utente deve fare è collegare il frontend dell’applicazione al backend tramite SDK, caricare i dati e codificare la logica aziendale.
Back4App offre molti SDK pronti all’uso, tra cui React Native, Flutter, Android, iOS, Javascript, Xamarin, ecc.
Per sapere in modo più dettagliato come creare la vostra prima applicazione con Back4App, consultate il tutorial Creare la vostra prima applicazione con Back4App.
Esempi reali di scalabilità di un’infrastruttura per app mobili
Di seguito sono riportati due esempi pratici dei vantaggi dell’utilizzo di un Backend as a Service per scalare l’infrastruttura di un’applicazione mobile.
- Broadcast
Il primo esempio che utilizzeremo è la startup norvegese Broadcast Oslo. L’azienda è una guida gratuita per i festival, i concerti e i club di Oslo.
Broadcastoslo è un’applicazione mobile first e distribuisce la propria applicazione sia su Google Play che su App Store. Gli utenti scaricano e hanno accesso a tutti i futuri eventi che si terranno a Oslo nei prossimi mesi.
L’applicazione consente inoltre agli utenti di accedere agli orari dei festival in tempo reale, e qui iniziano le sfide di scalabilità dell’infrastruttura.
Il Musikkfest Oslo 2022 si è svolto il 4 giugno e ha avuto circa 20 mila partecipanti. Immaginate quindi quanto debba essere scalabile l’infrastruttura per supportare migliaia di utenti che accedono e recuperano dati da un’app in modo simultaneo.
Il team tecnico di Broadcast ha deciso di utilizzare Back4App per risolvere questo problema e i risultati sono stati eccellenti! Ecco cosa ha detto Tim Harris, CEO di Broadcast, a proposito dell’esperienza.
Grazie ancora per tutto il vostro aiuto, è stata una giornata di grande successo per noi, ed è stato così importante che non abbiamo avuto alcun problema di accesso all’app!
Tim Harris, CEO di Broadcast
- Fight List
Fight List ha più di 10 milioni di download ed è un gioco di grande successo creato da Two4Tea. Si tratta di un gioco di domande e risposte, distribuito in più di sette lingue, che ha raggiunto i primi posti in classifica negli Stati Uniti e in Francia.
Il gioco presenta sofisticate sfide di scalabilità e richiede l’accesso simultaneo di migliaia di utenti all’app.
Two4Tea ha scelto Back4app per risolvere la sfida dell’infrastruttura e ha elaborato più di 10k richieste al secondo nei picchi di utilizzo. Ecco cosa ha detto Nicolas Boulch, CEO di Two4Tea, a proposito dell’esperienza.
A quel punto abbiamo capito che Back4App era la scelta giusta perché poteva analizzare la nostra applicazione in modo specifico e costruire una soluzione su misura per noi”.
Nicolas Boulch, amministratore delegato di Two4Tea
Per saperne di più sulle sfide di scalabilità di Fight List, leggete l’articolo Scalare un gioco con Back4App.
Creazione di un backend personalizzato su qualsiasi provider cloud di primaria importanza
La seconda opzione per costruire un’infrastruttura scalabile per le applicazioni mobili consiste nel costruire il backend utilizzando fornitori di cloud come AWS, Google Cloud, Azure, Digital Ocean, ecc.
I vantaggi di questa configurazione si basano principalmente sulla flessibilità, sul maggiore controllo dell’infrastruttura di backend e sulla visibilità di ogni fase del processo.
Gli aspetti negativi si basano sull’impegno ingegneristico per costruire e mantenere l’infrastruttura di backend, sviluppare codice di backend “boiler-plate” e monitorare i sistemi 24 ore al giorno.
AWS è il fornitore di cloud più utilizzato al mondo. Utilizziamo questo fornitore per illustrare i passaggi per creare un backend scalabile per un’applicazione mobile.
Il primo passo consiste nel creare e attivare un account AWS. Seguire il tutorial Come creare e attivare un nuovo account AWS per ulteriori dettagli su come procedere.
Il passo successivo è la definizione dei prodotti che supporteranno l’implementazione del backend. In questo esempio utilizzeremo i seguenti:
- Istanze EC2
- EBS – Elastic Block Storage
- S3 – Sistema di archiviazione semplice
- Bilanciatori di carico
- CDN – CloudFront
Analizziamo in dettaglio ogni fase.
Creazione di istanze EC2
Un’infrastruttura backend scalabile richiederà macchine virtuali per applicazioni e database. Il primo passo è definire il modello di istanza da utilizzare nel cluster.
AWS offre diversi tipi di istanze ottimizzate per molti casi d’uso. L’elenco comprende istanze generiche, ottimizzate per il calcolo, ottimizzate per la memoria, ottimizzate per il calcolo accelerato e ottimizzate per lo storage.
Per questo esempio, utilizzeremo un’istanza generica. Cominciamo con un’istanza t4g.medium che offre un’architettura basata su Arm; è eccellente per i carichi di lavoro burstable e offre un ottimo prezzo all’ora.
Di seguito sono riportati i passi iniziali da seguire:
- Accesso ad AWS
- Vai a EC2
- Istanze
- Avviare una nuova istanza
Questa fase deve definire il sistema operativo, il tipo e la dimensione dell’istanza, le impostazioni di rete, l’aggiunta di storage a blocchi all’istanza, le impostazioni di sicurezza, ecc.
Per ulteriori informazioni sulla configurazione di un’istanza EC2, seguire il tutorial Creare e avviare un’istanza EC2.
Non appena il cluster di server è pronto, il passo successivo è la configurazione dei criteri di scalatura in base al carico di lavoro.
Esistono due modi per scalare un cluster di server: lo scaling orizzontale e lo scaling verticale.
- Horizontal Scaling – aggiungere altre istanze al cluster per far fronte a nuovi carichi di lavoro.
- Vertical Scaling – aggiunta di ulteriori risorse (CPU/RAM) a un’istanza per soddisfare il nuovo carico di lavoro, ovvero aumento delle dimensioni dell’istanza.
In generale, i server applicativi utilizzano lo scaling orizzontale come meccanismo di scaling preferito. Un cluster di database utilizzerà lo scaling verticale come metodo di scaling preferito.
La scalatura orizzontale di un cluster di applicazioni è, in generale, un processo semplice. Il modo per farlo con AWS è accedere al menu Auto Scaling e lanciare una nuova configurazione.
Lo scaling verticale del database è un processo più complesso, perché non è possibile spegnere l’istanza e modificarne le dimensioni. In questo modo, il cluster andrebbe incontro a tempi di inattività.
Il modo corretto è creare una nuova istanza più grande, sincronizzare i dati e trasferire l’elaborazione del carico di lavoro all’istanza più grande. Non si tratta di un’operazione geniale, ma automatizzare questo processo richiede molto tempo.
Se il carico di lavoro dell’applicazione cresce a tal punto che lo scaling verticale del database non è più possibile, la distribuzione del carico di lavoro in più istanze sarà l’unica strada percorribile. Si tratta di un’implementazione complicata e dovrebbe essere utilizzata solo come ultima opzione.
Per i passaggi dettagliati su come aggiungere l’autoscaling a EC2, seguire il tutorial Iniziare con l’autoscaling di Amazon EC2.
EBS – Elastic Block Storage
Ogni istanza richiederà un volume EBS collegato. Fanno eccezione le istanze effimere con lo storage integrato nell’hardware.
Si tratta di un’operazione semplice da eseguire durante la configurazione iniziale della macchina virtuale. La sfida consiste nel determinare le dimensioni corrette di EBS per evitare costi inutili e disporre di una capacità adeguata per l’archiviazione dei dati.
Anche la scelta del tipo di EBS corretto è essenziale. Esistono numerose opzioni EBS, tra cui SSD e dischi magnetici. La scelta del tipo di EBS adeguato è fondamentale per garantire un buon equilibrio tra prestazioni e costi.
Per ulteriori informazioni su come collegare un volume EBS a una macchina virtuale, fare riferimento a Collegare un volume Amazon EBS a un’istanza.
S3 – Servizio di archiviazione semplice
Un’infrastruttura di backend robusta e scalabile richiede uno storage a oggetti. Con AWS è un compito facile e S3 è il prodotto ideale per raggiungere questo obiettivo.
Il primo passo nella creazione di un bucket S3 è la definizione della regione in cui memorizzare i file. In generale, si sceglie la stessa regione dell’istanza EC2.
Come parte del processo di creazione, è necessario definire la proprietà dell’oggetto, le regole di accesso pubblico, il versioning del bucket e i requisiti di crittografia.
I bucket AWS S3 sono scalabili per impostazione predefinita e gli utenti pagheranno solo per le risorse utilizzate. Per ulteriori informazioni sulla creazione di un bucket S3, seguite il tutorial Creare un bucket S3.
Bilanciatori di carico
Un’infrastruttura scalabile richiede una corretta implementazione del bilanciatore di carico. AWS offre diversi tipi di bilanciatori di carico come parte dei suoi prodotti.
I bilanciatori di carico delle applicazioni instradano le richieste verso le istanze EC2 corrette e ne monitorano lo stato di salute.
Il collegamento del bilanciatore di carico alle istanze non è un processo complesso e prevede i seguenti passaggi:
- Accedere alla dashboard di EC2
- Bilanciamento del carico
- Creare un bilanciatore di carico
- Selezionare il tipo di bilanciatore di carico
- Configurare il Load Balancer per quanto riguarda il tipo di indirizzo IP, le VPC, le zone di disponibilità e i servizi aggiuntivi.
Per informazioni dettagliate su come impostare un bilanciatore di carico, consultare il tutorial Come iniziare con i bilanciatori di carico delle applicazioni.
CDN Cloudfront
Cloudfront è una rete di distribuzione di contenuti integrata disponibile su AWS che supporta circa 300 sedi periferiche in tutto il mondo. Il prodotto accelera la distribuzione di contenuti statici e dinamici, aumenta la sicurezza ed è facile da integrare con altri prodotti AWS.
Come parte di un’architettura backend scalabile, Cloudfront si connetterà con i bucket S3 e con i bilanciatori di carico.
Gli utenti possono collegare Cloudfront ai bilanciatori di carico tramite la dashboard EC2, creando un bilanciatore di carico, indirizzando i gruppi e configurando una distribuzione Cloudfront. Maggiori dettagli sono disponibili su Impostazione di una distribuzione Cloudfront per EC2.
Anche la connessione di Cloudfront a un bucket S3 è semplice. La connessione avviene tramite la dashboard di Cloudfront, creando una distribuzione Cloudfront e aggiungendo il dominio di origine. Per ulteriori informazioni, è possibile leggere il post Creare una distribuzione AWS CloudFront con S3 Origin.
Conclusione
Un’applicazione mobile funziona su dispositivi come cellulari, tablet e orologi. Le implementazioni più comuni sono le applicazioni native, ibride e web.
Un’infrastruttura scalabile per applicazioni mobili consiste in un sistema progettato per non avere tempi di inattività, non subire arresti anomali ed essere super veloce e sicuro.
Gli elementi essenziali di un’infrastruttura scalabile comprendono le piattaforme di pubblicazione delle app, gli SDK, le API, i CDN, i Load Balancer e i server di applicazioni e database.
I due modi più comuni per ottenere un’infrastruttura scalabile per app mobili all’avanguardia sono l’utilizzo di soluzioni pronte all’uso come Backend as a Service o la creazione di un backend su misura su servizi cloud come AWS.
Le soluzioni di backend as a service offrono un’implementazione più rapida, funzioni di scalabilità già pronte e protocolli di sicurezza predefiniti. D’altro canto, un backend personalizzato offre un ambiente e un controllo più flessibili.
Spero che la lettura di questo articolo vi sia piaciuta e che vi abbia aiutato a comprendere meglio le basi di una buona architettura di un’applicazione mobile. Se non volete avere il fastidio di creare, mantenere e scalare un backend, contattate Back4App per saperne di più su come possiamo aiutarvi.
FAQ
Che cos’è un’app mobile?
Un’applicazione mobile funziona su dispositivi come telefoni cellulari, tablet e smartwatch. Le implementazioni più comuni sono app native, ibride e web.
Com’è strutturata l’infrastruttura di un’app mobile?
Gli elementi essenziali di un’infrastruttura scalabile includono piattaforme di pubblicazione delle app, SDK, API, CDN, bilanciatori di carico, server applicativi e server di database.
Come creare un’infrastruttura scalabile per app mobile?
I due modi più comuni per ottenere un’infrastruttura mobile scalabile di alto livello sono utilizzare soluzioni pronte all’uso come il Backend as a Service oppure configurare un backend su misura su servizi cloud come AWS.