Che cos'è uno stack tecnologico?

Per aiutarvi a capire perché è essenziale avere i giusti livelli nel vostro stack tecnologico, questa pagina tratterà i seguenti argomenti:

Uno stack tecnologico (tech stack) consente di combinare software, strumenti e servizi per costruire un'applicazione web o mobile. Ogni livello di un tipico stack tecnologico è responsabile di un tipo di attività distinta, che può essere la presentazione, la logica dell'applicazione o la persistenza.

 
Da dove vengono gli stack tecnologici?

Il concetto di stack tecnologico esiste fin dagli albori del web. Le prime pagine web erano semplici “contenuti statici”. Per recuperare i contenuti, le pagine web utilizzavano un metodo rudimentale che prevedeva la chiamata di un programma esterno chiamato Interfaccia gateway comune (CGI). Uno script CGI consente al server Web di eseguire un programma per elaborare le richieste degli utenti. Molti di questi primi programmi erano realizzati artigianalmente nel linguaggio di programmazione C.
Quasi immediatamente, i primi sviluppatori web iniziarono a sperimentare framework e astrazioni migliori per la creazione di software web. Il Perl emerse come un linguaggio più semplice e accessibile per la scrittura del codice. Ma non era ancora uno stack tecnologico.
Dopo ulteriori innovazioni ed evoluzioni, cominciarono ad emergere diversi stack tecnologici. Piuttosto che scrivere l'HTML a mano, sono nate librerie e framework di template di pagine per la livello di presentazione La logica ha iniziato a diventare comune, mentre il resto del programma era libero. I database relazionali hanno fornito un modo chiaro per gestire ed esprimere l'accesso ai dati per gli sviluppatori di applicazioni, quindi la logica livello di persistenza e sono emersi concetti come i pool di connessione.

 
Livelli di stack tecnologico

Le persone usano nomi diversi per gli stessi livelli di stack, quindi per i nostri scopi ci riferiremo semplicemente ad essi come livello superiore, livello intermedio e livello inferiore. Ciò che è più importante è il compito che spetta a ciascun livello, che esamineremo dall'alto verso il basso.

Strato superiore dello stack tecnologico: Presentazione

Il livello di presentazione di uno stack tecnologico è quello in cui avvengono la formattazione e la localizzazione. Ad esempio, un sito web può avere un logo e una serie di colori, ma con il cambiare degli stili si potrebbe voler cambiare l'aspetto e la sensazione. Un altro esempio del livello di presentazione è la personalizzazione. Se una richiesta del browser proviene da un Paese in cui gli utenti vogliono che le temperature siano presentate in gradi Celsius invece che in gradi Fahrenheit, le informazioni fornite saranno diverse.

Livello intermedio dello stack tecnologico: Logica applicativa

La logica applicativa si trova nel livello intermedio dello stack tecnologico. Ad esempio, la richiesta del browser web può includere una località (ad esempio, Austin, Texas) e un fuso orario (Central) che la logica applicativa deve risolvere nella giusta query del database.
Il livello intermedio può essere distribuito utilizzando un'architettura basata su microservizi, che consente di implementare varie parti dell'applicazione in modo indipendente attraverso interfacce di servizio ben descritte.

Livello più basso dello stack tecnologico: Persistenza (o database)

Il livello di persistenza è tipicamente il livello più basso dello stack e può essere semplice come un insieme di file in un file system. La gestione dei dati in un file system di base, tuttavia, richiede che lo sviluppatore sviluppi dei modi per indicizzare e accedere ai dati stessi, un compito arduo.
La maggior parte degli sviluppatori sceglie invece un database. In origine, il database preferito era un database relazionale perché erano i più comuni. Nel corso del tempo, tuttavia, Database NoSQL sono diventati un'altra opzione popolare per gli sviluppatori grazie alla flessibilità, alla scalabilità e alle capacità più ampie di NoSQL.

 
Quali sono i diversi stack tecnologici?

Lo stack LAMP (composto da Linux, Apache, MySQL e PHP) è diventato uno dei primi stack popolari. Linux è diventato il sistema operativo più utilizzato, Apache il server web più utilizzato, MySQL il database più utilizzato e PHP il linguaggio di programmazione e template di pagina più utilizzato.

Esempi di stack tecnologico

L'elenco che segue è solo un esempio di quanto diversi e interoperabili possano essere gli stack tecnologici:

WIMP

Sistema operativo Windows, server web IIS, database MySQL e livello di applicazione PHP.

MAMP

Mac OS, server web Apache, database MySQL e livello di applicazione PHP

FAMP

Sistema operativo FreeBSD, server web Apache, database MySQL e livello di applicazione PHP.

LAPP

Sistema operativo Linux, server web Apache, database PostgreSQL e livello app PHP

LNMP

Sistema operativo Linux, server web NGINX, database MySQL e livello di applicazione PHP

MALE

Database MongoDB, controller dell'applicazione Express.js, presentazione dell'applicazione Angular.js e Node.js

LIMO

Sistema operativo Linux, server web Yaws, database Mnesia e livello app Erlang

LYCE

Sistema operativo Linux, server web Yaws, database CouchDB e livello app Erlang

ELK

Ricerca/aggregatore statistico Elasticsearch, recupero dei log log Logstash, presentazione grafica Kibana

Jamstack

Presentazione JavaScript, API per l'accesso ai dati e Markup (contenuto statico o template)

 
Stack tecnologici Couchbase

Come piattaforma di database cloud, Couchbase svolge un ruolo fondamentale negli stack tecnologici. Poiché integra una serie di funzionalità di accesso e gestione dei dati comunemente richieste dagli sviluppatori di app, Couchbase facilita la scalabilità e la crescita.

Lo stack CEAN

Questo stack utilizza Couchbase, Express, Angular.js e Node.js. È simile allo stack MEAN, ma utilizza Couchbase come database. CEAN ha anche uno strumento di impalcatura dei progetti guidato dalla comunità.

La pila COdE

Questo stack utilizza Couchbase per il database, Ottoman.js per l'object document mapper (software che facilita la mappatura delle strutture di programmazione nei database) ed Express.js per il routing delle app.

 
Conclusione

Può essere utile pensare di astrarre l'applicazione o il servizio che state costruendo per i vostri utenti come uno stack tecnologico. Questo è un buon modo per considerare attentamente ogni singolo componente e, soprattutto, pensando alle responsabilità di ogni livello separatamente, sarete in grado di costruire un'architettura di sistema più flessibile con componenti più intercambiabili.