Caratteristiche e Differenza tra front-end e back-end per un app mobile

Caratteristiche e Differenza tra front-end e back-end per un app mobile

Architettura App

L’architettura tecnica delle mobile app ha due componenti fondamentali: il front-end, ovvero le componenti software che risiedono e sono eseguite sul dispositivo mobile, e il back-end, ovvero le componenti software che risiedono e sono eseguite su uno o più server ai quali la app si collega via rete. L’interfaccia utente appartiene al front-end, mentre la logica applicativa può essere arbitrariamente suddivisa fra front-end e back-end, come pure il database, che può essere ospitato direttamente dal dispositivo mobile, se la mole di dati non è eccessiva, oppure gestito remotamente su server.

Per quanto riguarda il front-end, i diversi sistemi operativi hanno il loro ambiente di sviluppo. Ad esempio, l’ambiente di sviluppo per Android è Eclipse con SDK (software development toolkit) Android, liberamente scaricabile e installabile su PC Windows, Linux o Mac. Il linguaggio di sviluppo per Android è Java, quindi molto noto e accessibile. Gli SDK offrono una serie di funzioni e librerie specifiche per il mondo mobile che, naturalmente, costituiscono una novità rispetto alla pura programmazione Java. Non si tratta di funzionalità complesse, ma, piuttosto, di un supporto per una programmazione più di alto livello che può avvalersi di codice già pronto per un’ampia gamma di requisiti. Tuttavia, l’acquisizione della dimestichezza con tali strumenti necessaria ad uno sviluppo efficiente e pianificabile richiede tempo e esperienza.

Un ulteriore elemento di difficoltà è legato alla qualità dell’interfaccia e, più specificamente, della grafica delle app. E’ un dato di fatto che le app di successo sono graficamente accattivanti. Non si tratta di semplice usabilità, che pure è fondamentale, ma di vero e proprio design grafico. L’impatto del design grafico sul numero di installazioni è paragonabile all’impatto del packaging sui prodotti alimentari della grande distribuzione. Ad esempio, un’icona esteticamente accattivante può attrarre l’attenzione di utenti potenziali, dato che nella ricerca di app da installare ciò che si trovano di fronte è una pagina di icone senza descrizioni. Solo toccando l’icona accedono alla descrizione della app, ma la scelta di quale icona toccare è puramente grafica. L’impressione di professionalità degli screenshot è poi essenziale per convincere l’utente che vale la pena installare la app e la professionalità è soprattutto legata alla grafica.

Vi sono naturalmente molte app che non sono esteticamente belle. Alcune di esse, specialmente se destinate al mercato domestico, hanno anche avuto un discreto successo, come, ad esempio, le app per la visualizzazione delle estrazioni dei giochi quali Lotto, Superenalotto eccetera, oppure quelle per la visualizzazione del palinsesto TV. Tuttavia, la piacevolezza estetica rappresenta un fattore di intrattenimento e, come tale, è coerente con le aspettative degli utenti individuali di mobile app.
La maggior parte delle mobile app non ha un back-end, ovvero è interamente memorizzata e eseguita sul dispositivo mobile. Questo è forse in relazione con lo sforzo richiesto dallo sviluppo di interfacce mobile gradevoli, forse ancora con il gran numero di sviluppatori individuali che hanno accesso al mercato mobile dati i suoi costi molto ridotti e, da ultimo, con i costi e la complessità dello sviluppo di un back-end.

Caratteristiche e Differenza tra front-end e back-end per un app mobile

Differenza tra app con back-end e senza back-end

Una fondamentale differenza fra le app senza back-end e quelle con back-end è che le prime hanno solo costi di sviluppo software e, eventualmente, di design dell’interfaccia grafica. Una volta messe in commercio, non hanno costi di gestione tecnica. Al contrario, una app con back-end ha dei costi di gestione per tutta la sua vita, sia legati alla capacità di calcolo richiesta per il back-end interamente a carico dello sviluppatore, sia legati alla manutenzione del software di back-end e alla sua gestione operativa. La conseguenza economica di questa differenza è che una app senza back-end può essere lasciata in commercio anche se non ha grande successo, eliminando i costi discrezionali di marketing. Una app con back-end deve invece essere rimossa per eliminarne i costi per lo sviluppatore. Spesso uno sviluppatore ha un successo modesto con le prime app che sviluppa e può continuare a sperimentare solo se i costi vivi sono ridotti.

Una seconda differenza fra i due tipi di app è legata alla complessità tecnica del back-end. La gestione del back-end include l’accesso a dati e servizi esterni che, a loro volta, generano la necessità di funzioni di caching locale dei dati all’interno del front-end e di funzionalità di interfacciamento coi servizi esterni. Inoltre, il numero di processi e entità di business potenzialmente accessibile dal front-end diventa molto più elevato, rendendo la logica applicativa della app significativamente più complessa. E’ estremamente improbabile che uno sviluppatore singolo sia in grado di gestire questa complessità, magari nel proprio tempo libero. Un’architettura complessa per l’app si giustifica se la app ha una base utente e un ritorno economico che giustificano un gruppo di progetto che abbia al suo interno competenze di diversi specialisti e che sia in grado di offrire un servizio professionale.

Da questo punto di vista, il cloud rappresenta una semplificazione della complessità di gestione del back-end. I servizi cloud ospitano il back-end di una app garantendone la scalabilità, ovvero lo sviluppatore non deve preoccuparsi di configurare e gestire più macchine man mano che la base utenti di allarga. Inoltre, ha availability elevata e non si verifica il fenomeno dello spegnimento o riavvio tipico dei server fisici o virtuali dei tradizionali servizi di hosting. Da ultimo, offre una serie di servizi aggiuntivi a livello applicativo, quali chat server o servizi di broadcasting per la comunicazione con gli utenti della app. Nonostante questi vantaggi, i servizi cloud hanno un costo non irrisorio e che può dipendere da tante variabili di consumo (la dimensione del database, il numero di utenti contemporaneamente attivi, il numero di richieste, la capacità di calcolo, eccetera). Tuttavia, con il cloud è possibile partire a costo zero, scegliendo opportunamente il provider sulla base delle variabili di consumo che determinano il prezzo e delle caratteristiche del servizio di back-end. Tale possibilità è praticamente inesistente con i tradizionali servizi di hosting e rende il cloud una tecnologia abilitante per la sperimentazione e lo sviluppo di mobile app con back-end.

Occorre osservare che i costi del back-end restano comunque fortemente influenzati dall’efficienza del software in termini di richiesta di capacità di calcolo. Saper sviluppare un back-end internamente al gruppo di progetto e saper gestire un’infrastruttura hardware restano competenze fondamentali per abbattere i costi, garantire la scalabilità economica del progetto e fornire un servizio in tempo reale a milioni di utenti. Giochi che prevedono un’interazione fra gli utenti della app hanno un back-end proprietario molto efficiente e capace di offrire un servizio in tempo reale a milioni di utenti contemporaneamente connessi.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *