Caratteristiche e differenza tra architettura, strumenti e tecnologie di sviluppo delle applicazioni web

Caratteristiche e differenza tra architettura, strumenti e tecnologie di sviluppo delle applicazioni web

Applicazioni web

Un’applicazione web (dall’inglese web application o abbreviato webapp) è un’applicazione che viene eseguita tipicamente all’interno di un browser web e che, tramite i classici protocolli di rete, può comunicare con un server al fine di offrire un determinato servizio all’utente finale.

A differenza dei comuni software applicativi e delle app native, le applicazioni web si distinguono per l’indipendenza dalla piattaforma e dal sistema operativo su cui vengono eseguite; infatti, poiché vengono eseguite all’interno di un browser non interagiscono direttamente con il sistema operativo sottostante e di conseguenza non necessitano di installazione, né tantomeno di essere manualmente aggiornate dall’utente in quanto la versione in esecuzione è sempre la stessa per tutti i client.

Anche se il contesto di esecuzione è lo stesso, le applicazioni web sono differenti dai comuni siti web; un sito nasce come una raccolta di pagine collegate tra loro con la finalità ultima di esporre informazioni utili sotto forma di testo o contenuti multimediali; un applicazione web, invece, interagisce continuamente con l’utente per elaborare informazioni e produrre risultati. Si ottiene così un applicativo che è personalizzabile ad hoc in base alle proprie esigenze ma che allo stesso tempo sfrutta la versatilità e la semplicità di utilizzo del web.

Tutti questi principali vantaggi legati alle applicazioni web ne hanno agevolato un’ampia diffusione a livello globale; inoltre, la crescita è stata ulteriormente velocizzata grazie al fatto che le tecnologie di sviluppo per il web sono principalmente open-source e gratuite e di conseguenza esse migliorano grazie al continuo contributo della community degli sviluppatori.

Al giorno d’oggi sono tantissime le applicazioni web utilizzate, con diverse finalità, dalle web mail, ai social network, ai web forum, agli e-commerce. Alcuni esempi concreti sono: Evernote e Trello per la gestione di note e appunti personali, Spotify e Netflix per la riproduzione contenuti multimediali in streaming e la Google Suite per la gestione e condivisione di documenti

Architettura web

Nell’ambito dell’architettura del software, le applicazioni web rientrano nella categoria dei sistemi distribuiti. I sistemi distribuiti sono composti da più processi che cooperano tra loro perseguendo un unico obiettivo. I processi, nella maggior parte dei casi, risiedono su macchine diverse e comunicano attraverso la rete scambiandosi messaggi in ottemperanza a ben definiti protocolli.

Tutti i sistemi distribuiti godono dei seguenti vantaggi:

  1. sono scalabili: il carico di elaborazione viene suddiviso tra più utenti e tra più macchine; quindi, si possono realizzare compiti più complessi che un singolo utente o elaboratore non riuscirebbe a trattare;
  2. garantiscono una alta disponibilità: essendo il calcolo distribuito tra più macchine se anche una sola necessita di manutenzione, comunque, tutto può continuare a funzionare e il servizio può essere erogato;
  3. è possibile condividere le risorse con un approccio cloud-oriented, guadagnando, così, in termini di capacità della singola

Di fronte alla possibilità di godere dei grandi vantaggi che le applicazioni distribuite offrono, ci si deve anche confrontare con alcune problematiche:

  • la complessità di un sistema distribuito è molto elevata: sia dal punto di vista implementativo perché bisogna gestire la concorrenza, sia dal punto di vista di testing, sia dalla messa in opera del sistema;
  • bisogna gestire i guasti improvvisi e parziali di un singolo processo, che potrebbero influenzare i processi che interagivano con esso;
  • bisogna tenere in considerazione tutti i fattori critici connessi alla rete:
    • il limite di banda e l’inaffidabilità della rete perché non è assolutamente garantito che tutti i messaggi vengano consegnati;
    • il ritardo nella comunicazione tra processi;
    • l’eterogeneità della rete, composta da dispositivi differenti con diverse topologie;
    • la sicurezza, per evitare che l’applicazione sia esposta ai numerosi rischi della

Per la gestione di questi problemi, al livello applicativo della pila protocollare del TCP/IP, è necessario progettare e implementare il software curandone la struttura, la scelta degli elementi che lo comporranno e le relazioni tra gli stessi.

L’interazione e lo scambio di messaggi tra i processi distribuiti avvengono secondo uno specifico modello che può essere client-server (il client invia le richieste al server il quale le serve e invia la risposta) o peer-to-peer (l’interazione avviene attraverso uno scambio simmetrico di messaggi tra pari).

Le applicazioni web sono un tipo di sistema distribuito, basato sulle tecnologie e sugli strumenti del web che adottano come modello di interazione il client-server.

Architettura di un'applicazione web
Architettura di un’applicazione web

L’architettura può prevedere due o più tier fisici, di cui sicuramente due di essi saranno:

  • front-end (client side): eseguito nel contesto di un browser web e in grado di rappresentare l’interfaccia utente grafica (GUI) e di dare accesso remoto al sistema tramite il protocollo HTTP;
  • back-end (server side): costruito a sua volta con un modello stratificato, che comprende tre tier logici che interagiscono tra loro:
    1. Presentazione: è il livello che è responsabile di inoltrare le richieste e di gestire le risposte verso le API (Application Programming Interface) tramite i verbi GET, POST, PUT, DELETE dello standard HTTP;
    2. Elaborazione: implementa la logica applicativa e manipola i DTO (Data Transfer Objects) che contengono le rappresentazioni dei concetti propri del dominio applicativo;
    3. Gestione dei dati: gestisce la persistenza dell’applicazione e garantisce la consistenza dei dati utilizzando uno o più DBMS.

Il modello a strati permette alle applicazioni di mantenere una buona modularità e di separare logicamente i concetti attraverso i moduli.

Struttura a livelli di un'applicazione web
Struttura a livelli di un’applicazione web

Strumenti e tecnologie di sviluppo

Lo sviluppo di applicazioni web avviene rispettando il ciclo di vita del software come per qualunque altra applicazione: dalla fase di ideazione, alla progettazione, fino allo sviluppo. Per lo sviluppo del front-end sono necessari i seguenti strumenti: un IDE (software che offre tutta una serie di strumenti e funzionalità che supportano il programmatore nello sviluppo e debugging del codice sorgente di un programma), un server applicativo installato in locale, eventualmente un database in locale e il sistema di versionamento del codice.

Relativamente al livello di presentazione le tecnologie basilari utilizzate sono: HTML5, JavaScript e il linguaggio CSS (Cascading Style Sheet) per personalizzare la grafica e il layout delle pagine HTML. Spesso, a corredo di queste tecnologie si utilizzano dei framework web che semplificano lo sviluppo per i compiti comuni dei software nell’ottica del riutilizzo del codice. Tra i più comuni vi sono: React.js, Angular, Vue.js, Ember.js e Svelte.

Relativamente al livello di elaborazione lato back-end, i linguaggi principalmente adottati per lo sviluppo sono: PHP, Python, Java e Kotlin. Anche in questo caso esistono framework a supporto molto noti tra cui: Spring, Laravel, Django, Phoenix, Express.js.

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 *