Introduzione
La trasformazione digitale sta coinvolgendo ogni anno un numero crescente di settori della vita e del business. Se un'azienda vuole rimanere competitiva, un semplice sito informativo non è più sufficiente; sono necessarie applicazioni mobile e web che non solo forniscano informazioni agli utenti, ma consentano anche di eseguire funzionalità come la ricezione o l'ordinazione di beni e servizi, nonché la fornitura di strumenti.

Ad esempio, per le banche moderne non è più sufficiente avere un sito web informativo; è necessario disporre di strumenti online per i propri clienti, come un'area riservata dove l'utente può gestire conti, investimenti e prestiti. Anche le piccole imprese, per aumentare la conversione, necessitano di strumenti pratici, come la prenotazione di appuntamenti per visite mediche o parrucchieri, e la riservazione di tavoli in ristoranti o aree giochi per feste di compleanno.
E i proprietari devono ricevere tempestivamente informazioni in un formato comodo sullo stato della propria azienda, ad esempio, la raccolta di dati statistici e analisi sui diversi reparti produttivi o le prestazioni degli stessi. Spesso ciascun reparto raccoglie questi dati a modo suo e può utilizzare strumenti diversi, e il proprietario deve spendere molto tempo personale per districarsi in tutto ciò; questo può influire, sia indirettamente che direttamente, sull'efficienza dell'azienda e, in ultima analisi, sul profitto. Anche in questo caso, la trasformazione digitale e lo sviluppo di un'applicazione web o mobile possono fare la differenza.
La tecnologia è in continua evoluzione e ciò che era utilizzato qualche anno fa potrebbe non essere più attuale oggi, o ciò che non era possibile realizzare qualche anno fa è diventato realtà. Esistono un numero sempre maggiore di strumenti moderni che aiutano a creare applicazioni web e mobili più velocemente e con maggiore qualità. Basandomi sulla mia esperienza e osservazioni personali, voglio condividere la mia visione su quali tecnologie e strumenti saranno richiesti nel prossimo futuro e perché vale la pena prestarvi attenzione nella creazione di applicazioni web moderne.
Single page application (applicazioni a pagina singola)
Definiamo un po' la terminologia. Single Page Application (SPA) è un'applicazione web i cui componenti vengono caricati una sola volta su una pagina, e il contenuto viene caricato secondo necessità. Durante la navigazione tra le sezioni dell'applicazione, la pagina non viene ricaricata completamente, ma vengono caricati e visualizzati solo i dati necessari.
Le applicazioni a pagina singola offrono notevoli vantaggi in termini di velocità e facilità d'uso rispetto alle classiche applicazioni web. Con le SPA, è possibile ottenere un'esperienza utente simile a quella di un'app desktop, senza ricaricamenti significativi e ritardi.
Se qualche anno fa le applicazioni a pagina singola quasi non supportavano l'ottimizzazione per i motori di ricerca e venivano utilizzate prevalentemente per creare pannelli di amministrazione e dashboard, oggi realizzare un'applicazione a pagina singola con pieno supporto SEO è molto più semplice. Utilizzando applicazioni a pagina singola con rendering lato server, questo problema è stato completamente risolto. In altre parole, si tratta della stessa applicazione a pagina singola, ma al primo accesso, il server genera non solo dati, ma crea una pagina HTML pronta per la visualizzazione, fornendo ai motori di ricerca pagine complete con tutte le informazioni meta e il markup semantico.
Con lo sviluppo degli strumenti per la creazione di applicazioni web client, lo sviluppo e la transizione verso applicazioni a pagina singola cresceranno solo negli anni a venire. Se hai un'applicazione obsoleta e lenta, con un completo ricaricamento della pagina quando si passa tra le sezioni, quest'anno puoi tranquillamente aggiornarti a un'applicazione a pagina singola: è un momento favorevole, le tecnologie lo permettono già in modo rapido e di alta qualità.
Avere un sito web moderno e veloce è molto positivo, ma voglio essere sincero: non tutte le applicazioni possono essere facilmente migrate in un'applicazione a pagina singola, e la transizione può risultare costosa! Pertanto, è importante capire a chi e perché serve questa transizione.
Per aiutarti a fare chiarezza, nella tabella sottostante fornirò alcuni esempi in cui lo sviluppo o la transizione a un'applicazione SPA sono appropriati e giustificati, e quando non lo sono.
ZA
Se desideri creare un'app moderna e veloce, e vuoi che venga utilizzata non solo la versione web, ma anche quella mobile o desktop, con tutti i processi e i calcoli che avvengono su un server remoto o cloud. Inoltre, è fondamentale che tutti i clienti abbiano un'interfaccia comune e che non ci sia necessità di modificare il codice del server ogni volta che si aggiunge un nuovo cliente.
Per esempio: social network, aggregatori, piattaforme SaaS (software come servizio), marketplace.
Se hai un negozio o un servizio web, sai che è lento e che le persone se ne vanno; desideri renderlo più veloce, comprendi il valore dei clienti e sei disposto a pagare per un upgrade a partire da un milione di rubli.
Hai un'app mobile che utilizza l'API del sito, mentre il sito è lento e ha ricariche complete del contenuto quando si passa da una pagina all'altra.
CONTRO
Se il tuo target non utilizza browser e dispositivi moderni.
Per esempio: settori aziendali specifici, come lo sviluppo di sistemi interni per banche, istituzioni mediche e istruzione.
La tua attività principale si svolge offline e non sei pronto a offrire servizi online, hai semplicemente bisogno di attrarre clienti.
Se hai un negozio online o un servizio web che già vende bene, non noti una diminuzione dei clienti né ricevi lamentele.
Se hai un'applicazione funzionante che non può essere adattata in SPA e hai bisogno di riscrivere tutto da zero utilizzando altre tecnologie, e non sei disposto a spendere diversi milioni per farlo.
Ad esempio: Hai un sito web preconfezionato o un codice monolitico obsoleto e auto-scritto.
Progressive Web Applications
Le Progressive Web Applications (PWA) sono il prodotto dell'evoluzione congiunta di un'applicazione nativa e di un sito web. Fondamentalmente, si tratta di un'app web che appare e si comporta come una reale applicazione nativa, può ricevere notifiche push, funzionare offline, ecc. L'utente non ha bisogno di scaricare l'app dallo store, ma può semplicemente aggiungerla alla schermata principale.
Con la tecnologia o l'approccio allo sviluppo delle PWA che si evolve dal 2015, ultimamente ha guadagnato enorme popolarità nel settore e-commerce.
Esempi reali di vita:
- l'anno scorso l'hotel Best Western River North, dopo aver lanciato un nuovo sito con supporto PWA, è riuscito ad aumentare il fatturato del 300%;
- il portale arabo OpenSooq.com, dopo aver implementato il supporto PWA sul suo sito, ha incrementato del 25% il tempo di permanenza e del 260% il numero di lead;
- il famoso servizio di incontri Tinder è riuscito a ridurre il tempo di caricamento da 11,91 secondi a 4,69 secondi sviluppando una PWA, inoltre, l'app pesa il 90% in meno rispetto al suo equivalente nativo per Android.
Il fatto che si debba prestare attenzione a questa tecnologia è dimostrato dal fatto che uno dei motori più grandi per la creazione di progetti e-commerce, Magento, nel 2018 ha lanciato una versione developer preliminare di PWA Studio. La piattaforma permette di creare 'out of the box' frontend basati su React per le proprie soluzioni e-commerce con supporto PWA.
Consiglio per chi ha già un progetto online o solo un'idea per un nuovo servizio con supporto per dispositivi mobili: non affrettatevi a scrivere un'app nativa completa, prima date un'occhiata alla tecnologia PWA. Potrebbe essere la soluzione migliore in termini di rapporto qualità-prezzo per il vostro prodotto.
Un po' di pratica. Per creare una semplice applicazione mobile nativa per notizie, assumendo che ci sia già un server REST pronto, ci vogliono circa 200-300 ore uomo per ogni piattaforma. Con un costo medio di mercato di 1500-2000 rubli/ora per lo sviluppo, l'app potrebbe costare circa 1 milione di rubli. Se si sviluppa un'applicazione web con supporto completo per PWA: notifiche push, modalità offline e altre funzionalità, lo sviluppo richiederà 200-300 ore uomo, ma il prodotto sarà disponibile immediatamente su tutte le piattaforme. Questo significa un risparmio di circa 2 volte, senza contare che non sarà necessario pagare le tasse per la pubblicazione negli app store.
Serverless
Questo è un altro approccio moderno allo sviluppo. A causa del nome, molti pensano che si tratti realmente di sviluppo senza server, che non sia necessario scrivere codice per il back-end e che qualsiasi sviluppatore front-end possa creare un'applicazione web completa. Ma non è così!
Quando si crea un'applicazione Serverless, è comunque necessario un server e anche un database. La principale differenza di questo approccio è che il codice back-end è rappresentato da funzioni cloud (un altro nome per serverless è FaaS, funzioni come servizio) e consente all'applicazione di scalare rapidamente e facilmente. Creando un'applicazione di questo tipo, lo sviluppatore può concentrarsi sulle sfide commerciali senza preoccuparsi della scalabilità e della configurazione dell'infrastruttura, il che accelera lo sviluppo dell'applicazione e riduce i costi. Inoltre, l'approccio Serverless aiuterà a risparmiare sull'affitto server, poiché utilizza esattamente le risorse necessarie per completare il compito e, se non c'è carico, il tempo del server non viene affatto utilizzato e non viene pagato.
Ad esempio, la grande azienda media americana Bustle è riuscita a ridurre i costi hosting di oltre il 60% passando a Serverless. Inoltre, l'azienda Coca-Cola, nella realizzazione di un sistema automatizzato di vendita di bevande tramite distributori automatici, è riuscita a ridurre i costi di hosting da 13.000 $ a 4.500 $ all'anno grazie al passaggio a Serverless.
Negli ultimi anni, a causa della sua novità e delle sue limitazioni, Serverless è stato principalmente utilizzato per progetti piccoli, startup e MVP. Tuttavia, oggi, grazie all'evoluzione del software, alla versatilità e alla potenza della containerizzazione dei server, stanno emergendo strumenti che rimuovono queste restrizioni, semplificando e accelerando lo sviluppo delle applicazioni cloud.
Questo significa che scenari aziendali in cui la modernizzazione cloud era precedentemente considerata impossibile (ad esempio, per dispositivi edge, dati trasferiti o applicazioni stateful) sono ora una realtà. Buoni strumenti promettenti includono kNative e Serverless enterprise.
Tuttavia, nonostante tutto ciò, Serverless non è una soluzione miracolosa per lo sviluppo di applicazioni web. Come ogni altra tecnologia, ha i suoi pro e contro, ed è fondamentale scegliere questo strumento con consapevolezza, piuttosto che "usare un microscopio per piantare un chiodo" solo perché è più tecnologico.
Per aiutarvi a capire, ecco alcuni esempi di quando dovreste considerare Serverless durante lo sviluppo di un nuovo servizio web o il miglioramento di uno esistente:
- Quando il carico sul server è periodico e pagate per la capacità inattiva. Ad esempio, abbiamo avuto un cliente con una rete di distributori automatici di caffè che doveva gestire richieste e raccogliere statistiche solo alcune centinaia o migliaia di volte al giorno, mentre di notte il numero di richieste scendeva a poche decine. In questo caso, è molto più efficiente pagare solo per l'uso reale delle risorse, quindi abbiamo proposto e realizzato una soluzione Serverless;
- Se non intendete approfondire i dettagli tecnici dell'infrastruttura e non volete pagare in eccesso per la configurazione e il supporto di server e bilanciatori. Ad esempio, nella progettazione di un marketplace, non sapete esattamente quale sarà il traffico o, al contrario, pianificate un grande afflusso di visitatori e volete essere sicuri che la vostra applicazione regga il carico, in tal caso Serverless è una scelta eccellente.
- Se è necessario eseguire eventi di streaming nel funzionamento dell'app principale, registrare dati secondari in tabelle, eseguire calcoli. Ad esempio, raccogliere dati analitici sulle azioni degli utenti, elaborarli in un certo modo e salvarli nel database;
- Se si deve semplificare, uniformare o velocizzare il funzionamento attuale dell'applicazione. Ad esempio, creare servizi per migliorare le prestazioni con immagini o video, quando un utente carica un video nel cloud, e la transcodifica viene gestita da una funzione separata, mentre il server principale continua a funzionare normalmente.
Se è necessario elaborare eventi provenienti da servizi esterni. Ad esempio, gestire le risposte dei sistemi di pagamento o reindirizzare i dati degli utenti nel CRM per accelerare l'elaborazione delle richieste dei potenziali clienti.
Se hai una grande applicazione e alcune parti possono essere implementate in modo più ottimale utilizzando un linguaggio diverso da quello principale. Ad esempio, hai un progetto in Java e devi aggiungere una nuova funzionalità, ma non hai mano d'opera disponibile, oppure l'implementazione in questo linguaggio potrebbe richiedere più tempo e c'è già una soluzione in un altro linguaggio, Serverless può esserci d'aiuto.
Questa è solo una parte degli strumenti e delle tecnologie che meritano attenzione; ho condiviso solo ciò che utilizziamo ogni giorno nel nostro lavoro e sappiamo esattamente come possono aiutare il business.
Fonte: habr.com
