Come costruire applicazioni incredibilmente veloci
L’obiettivo dello sviluppatore è aumentare le prestazioni dell’applicazione e migliorare l’esperienza dell’utente. Spesso il tempo è contro gli sviluppatori, con le parti interessate che gli stanno col fiato sul collo, la concorrenza che minaccia di produrre app migliori di quelle che sono in grado di produrre e gli utenti che suggeriscono di passare alle app della concorrenza. Per questo motivo i team di gestione dei progetti sono sempre alla ricerca di metodi che li aiutino a realizzare le applicazioni in modo rapido, rapidissimo. E sì, la velocità non è sufficiente. Devono concentrarsi sul rendere queste app resilienti, a bassa latenza e con ottimi tempi di rendering.
Scegliere il giusto stack tecnologico
Uno stack tecnologico è un insieme di linguaggi di programmazione, strumenti, tecnologie e prodotti software che gli sviluppatori utilizzano per creare un’applicazione web funzionale. Si possono classificare come stack lato server (back end), stack lato client (front end) e middle ware. Grazie al gran numero di librerie di gemme, RoR è il framework più comunemente usato per lo sviluppo di applicazioni veloci. Ad esempio, se siete agli inizi della vostra attività, potete scegliere un linguaggio/quadro/strumento CMS che vi permetta di creare un prototipo. Gli strumenti con l’apprendimento più breve sono i migliori per voi.
Evitare l’ottimizzazione prematura
Donald Knuth ha detto: “L’ottimizzazione prematura è la radice di tutti i mali”.
Gli sviluppatori passano molto tempo a pensare alle parti non critiche di un software, invece di sviluppare le parti critiche del codice. Non danno importanza alle parti critiche del codice, né lavorano sul codice che deve essere ottimizzato.
La causa potrebbe essere l’inesperienza. Per evitare che al vostro team accadano cose simili, assicuratevi che il team scriva la prima versione del codice senza preoccuparsi delle sue prestazioni. In seguito, utilizzando un profiler, il team può verificare dove si trovano i colli di bottiglia.
In questo modo possono controllare le aree che hanno davvero bisogno di attenzione e non preoccuparsi di ciò che non ne ha bisogno.
Sul terreno di PHP, ci sono alcuni strumenti che si possono usare per profilare il codice. Si tratta di xdebug, xhprof, Symphony profiler, Tideways, Blackfire.io e The Stopwatch Component.
Fare solo ciò che è necessario
Molto spesso il vostro codice fa cose che vanno al di là di ciò che vi aspettavate che facesse. Soprattutto quando si tratta di utilizzare librerie e framework complessi. A volte può capitare di caricare classi che non si intendeva utilizzare o di aprire una connessione a un database che non era necessaria per generare risultati per una richiesta specifica.
Dovete evitare che ciò accada, perché potrebbe ostacolare le vostre prestazioni. Ecco un paio di consigli su come ottenere prestazioni migliori:
a) Caricamenti automatici
– Con l’aiuto della funzione di caricamento automatico, dovete preoccuparvi solo dei file che dovete includere nel vostro script. È vero che in passato il caricamento automatico era un’impresa un po’ complessa, ma con l’aiuto di strumenti come Composer e gli standard PSR-0 e PSR-4, la configurazione del caricamento automatico è diventata un gioco da ragazzi.
b) Iniezione di dipendenza
– Sebbene sia un modello di progettazione molto comune in Java, la Dependency Injection si è diffusa molto anche nel mondo del PHP. Questo perché framework come Symphony, Laravel e Zend ne fanno largo uso. Attraverso la Dependency Injection, gli sviluppatori possono iniettare i componenti attraverso il metodo constrictor, consentendo allo sviluppatore di pensare in termini di dipendenze. Questo li aiuta a creare piccoli componenti isolati in cui l’attenzione si concentra su una sola cosa.
Compressione
È possibile ridurre le dimensioni dei dati utilizzando le tecniche di compressione disponibili per i contenuti. I servizi REST hanno un overhead inferiore e assicurano che le immagini nei dati siano dimensionate correttamente, perché le immagini difficili da caricare possono davvero influire sul caricamento delle applicazioni. Assicurarsi inoltre che la compressione HTTP sia attivata quando si utilizza un server web.
Usare il metodo della cache per svolgere attività ripetitive
Non c’è dubbio che al giorno d’oggi le applicazioni web siano davvero complesse e che debbano essere abbastanza competenti da generare risposte per ogni richiesta che arriva. Un modo intelligente per svolgere attività ripetitive è il caching. Si tratta di una tecnica ampiamente utilizzata che si può trovare ovunque. Nella programmazione web, esistono diversi livelli di cache che si possono utilizzare, come la Byte Code Cache, la Application cache, la HTTP cache e la Proxy cache. In questo modo si può evitare un viaggio eccessivo attraverso l’infrastruttura dei contenuti e la rete mobile.
Rete di distribuzione dei contenuti (CDN)
Riduzione della latenza di rete, pre-fetching dei contenuti, ottimizzazione del routing di rete e altro ancora attraverso le CDN o Content Delivery Network. Questi possono accelerare notevolmente la vostra applicazione. Alcune delle CDN più utilizzate sono Akamai, Edgecast, Limelight, Amazon CloudFront e persino aziende di telecomunicazioni come AT&T e Level3.
Se il backend è un problema di prestazioni
Se ritenete che il server di backend richieda molto tempo per le prestazioni, configurate la struttura del software in modo tale che la portabilità, la spendibilità, la modificabilità e la scalabilità non influiscano sulle prestazioni dell’applicazione. Probabilmente dovrete effettuare una valutazione dell’architettura per determinare quale parte dell’app trasuda velocità. Se scegliete un servizio di terze parti, assicuratevi di porre loro tutte le domande giuste prima di assumerlo.
Caricamento pigro delle risorse
Il caricamento on-demand o pigro delle risorse può migliorare le prestazioni della vostra applicazione web. Tuttavia, questo vale soprattutto per le immagini. Il caricamento pigro delle immagini può accelerare i tempi di caricamento della pagina,
ridurre il carico sul server e l’utilizzo della memoria nel browser. Il caricamento pigro può essere effettuato tramite plugin o estensioni pertinenti. Ecco un plugin che gestisce il caricamento pigro delle immagini per React – react-lazy-load.
Usare gli array-id quando si usano le librerie di manipolazione del DOM
L’uso degli array-id sarebbe di grande aiuto per migliorare le prestazioni dei siti dinamici se si utilizzano React, Angular, Ember o qualsiasi altra libreria di manipolazione del DOM. Gli array-id indicano ai motori di manipolazione del DOM quando un certo nodo può essere mappato a un particolare elemento dell’array. Senza questa funzione, le librerie distruggono i nodi esistenti e ne creano di nuovi, compromettendo le prestazioni.
“Seguendo questi consigli e concentrandosi sulla scrittura dei codici giusti per il proprio progetto, è possibile ottenere un ottimo livello di prestazioni e scalabilità per la propria applicazione”.
- 6 regole empiriche per creare applicazioni web server velocissime
- Creare applicazioni Android incredibilmente veloci
Flickr.com / Bjorn Gruenwald
Informazioni sull’autore: Reema lavora come Thought Leader presso PHPBabu.