Introduzione
La trasformazione digitale copre ogni anno un numero sempre maggiore di settori della vita e degli affari. Se un'azienda vuole essere competitiva, non basta più avere un sito informativo; sono necessarie app mobile e web che non solo forniscano informazioni agli utenti, ma che permettano anche di svolgere funzioni: acquistare o ordinare beni e servizi, fornire strumenti.

Ad esempio, le banche moderne non possono più limitarsi a un sito con informazioni; è necessario avere strumenti online per i propri clienti, un'area personale 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 un appuntamento dal dottore o dal parrucchiere, la prenotazione di un tavolo al ristorante o di una sala giochi per la festa di compleanno.
Gli stessi proprietari devono ricevere informazioni in modo tempestivo e comodo sullo stato della propria azienda, ad esempio la raccolta di dati statistici e analitici su diversi reparti produttivi o sull'efficienza dei dipartimenti. Spesso, ogni reparto raccoglie questi dati in modo diverso e può persino utilizzare diversi strumenti, costringendo il proprietario a spendere molto tempo personale per orientarsi in tutto questo, il che può influenzare direttamente o indirettamente l'efficienza dell'azienda e, in ultima analisi, il profitto. Anche qui la trasformazione digitale e lo sviluppo di un'app web o mobile possono aiutare.
La tecnologia non si ferma e si evolve costantemente; ciò che era utilizzato alcuni anni fa può già non essere attuale oggi, o ciò che non era possibile realizzare anni fa è diventato realtà. Ci sono un numero maggiore di strumenti moderni disponibili che aiutano a creare app web e mobile in modo più rapido e di qualità superiore. Sulla base delle mie osservazioni e della mia esperienza, voglio condividere la mia visione delle tecnologie e degli strumenti che saranno richiesti nei prossimi tempi e perché è importante prestare attenzione a essi nella creazione di un'app web moderna.
Single page application (applicazioni a pagina singola)
Facciamo un po' di chiarezza sulla terminologia. Un'applicazione a pagina singola (SPA) è un'applicazione web i cui componenti vengono caricati una sola volta su una pagina, e il contenuto viene caricato al bisogno. E quando si passa da una sezione all'altra dell'applicazione, la pagina non viene completamente ricaricata, ma vengono solo caricati e visualizzati i dati necessari.
Le applicazioni a pagina singola vincono notevolmente in termini di velocità e facilità d'uso rispetto alle tradizionali applicazioni web. Con le SPA si può ottenere l'effetto di un sito web funzionante come un'applicazione desktop, senza ricaricamenti e ritardi significativi.
Se qualche anno fa le applicazioni a pagina singola non supportavano praticamente l'ottimizzazione per i motori di ricerca e venivano utilizzate principalmente per la creazione di dashboard personali e pannelli di amministrazione, oggi è molto più semplice creare un'applicazione a pagina singola con pieno supporto per l'ottimizzazione SEO. Utilizzando applicazioni a pagina singola con rendering sul server, questo problema è completamente scomparso. In altre parole, è un'applicazione a pagina singola, ma alla prima richiesta, il server genera non solo dati, ma crea una pagina HTML pronta per la visualizzazione e i motori di ricerca ricevono pagine pronte con tutte le informazioni meta e le marcature semantiche.
Con lo sviluppo degli strumenti per la creazione di applicazioni web client, lo sviluppo e la transizione verso le applicazioni a pagina singola cresceranno solo in questi e nei prossimi anni. Se hai un'applicazione obsoleta che funziona lentamente e ricarica completamente la pagina quando si passa tra le sezioni, quest'anno puoi tranquillamente aggiornarla a una rapida applicazione a pagina singola: ora è il momento giusto, le tecnologie consentono già di farlo in modo piuttosto rapido e di qualità.
Avere un sito web moderno e veloce è molto positivo, ma voglio dirti onestamente: non tutte le applicazioni possono essere facilmente convertite in pagine singole e il passaggio potrebbe essere costoso! Pertanto, è necessario capire a chi e perché è necessario questo passaggio.
Per aiutarti a capire, nella tabella qui sotto fornirò alcuni esempi in cui lo sviluppo o il passaggio a SPA è appropriato e giustificato, e quando non lo è.
ZA
Se desideri creare un'applicazione moderna e veloce, che venga utilizzata non solo nella versione web, ma anche in quella mobile o desktop, e che tutti i processi e i calcoli avvengano su un server remoto o nel cloud. Inoltre, è importante che tutti i clienti abbiano un'interfaccia di interazione comune e che non ci sia bisogno di apportare modifiche ogni volta al codice del server quando si aggiunge un nuovo cliente.
Ad esempio: social network, aggregatori, piattaforme SaaS (software come servizio), marketplace.
Se hai un negozio o un servizio web, sai che è lento e la gente se ne va; vuoi renderlo più veloce, comprendi il valore dei clienti e sei disposto a pagare un upgrading a partire da un milione di rubli.
Hai un'app mobile che utilizza l'API del sito, ma il sito è lento e con caricamenti completi dei contenuti durante la navigazione tra le pagine.
CONTRO
Se il tuo pubblico target non utilizza browser e dispositivi moderni.
Ad esempio: settori aziendali specifici, come lo sviluppo di sistemi interni per banche, istituzioni sanitarie e istruzione.
La tua attività principale si svolge offline e non sei pronto a offrire alcun servizio online, hai solo bisogno di attirare clienti.
Se hai già un negozio online o un servizio web che vende bene, non noti un abbandono dei clienti o lamentele.
Se hai un'applicazione funzionante che non può essere adattata a SPA e devi semplicemente riscrivere tutto da zero e utilizzare altre tecnologie, ma non sei disposto a spendere milioni per questo.
Ad esempio: hai un sito preimpostato o un vecchio codice monolitico scritto a mano.
Applicazioni Web Progressive
Le Applicazioni Web Progressive (PWA) sono il risultato dell'evoluzione congiunta di applicazioni native e siti web. In sostanza, è un'applicazione web che appare e si comporta come una vera applicazione nativa, può ricevere notifiche push, funzionare in modalità offline, ecc. L'utente non deve scaricare l'app dall'App Store o da Google Play, ma basta semplicemente salvarla sul desktop.
Poiché la tecnologia o l'approccio allo sviluppo delle PWA si è evoluto dal 2015, di recente sta anche guadagnando enorme popolarità nel settore dell'e-commerce.
Alcuni esempi reali dalla vita:
- Lo scorso anno, l'hotel Best Western River North, dopo aver lanciato un nuovo sito web con supporto PWA, è riuscito ad aumentare le entrate del 300%;
- Il sito arabo Avito OpenSooq.com, dopo aver implementato il supporto PWA, ha potuto aumentare del 25% il tempo di permanenza sul sito e del 260% il numero di lead;
- Il famoso servizio di incontri Tinder è riuscito a ridurre il tempo di caricamento da 11,91 s a 4,69 s 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 è confermato anche dal fatto che uno dei motori più grandi per la creazione di progetti e-commerce, Magento, nel 2018 ha lanciato una versione per sviluppatori della PWA Studio. La piattaforma consente di creare frontend basati su React per soluzioni e-commerce con supporto PWA 'out of the box'.
Un 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, ma iniziate a guardare la tecnologia PWA. Potrebbe essere la migliore soluzione in termini di rapporto qualità-prezzo per il vostro prodotto.
Un po' di esperienza pratica. Per creare una semplice app mobile nativa di notizie, dato che esiste già un server REST pronto, sono necessarie circa 200-300 ore/uomo per ciascuna piattaforma. Con un prezzo medio di mercato per ora di sviluppo di 1500-2000 rubli/ora, l'app potrebbe costare circa 1 milione di rubli. Se si sviluppa un'app web con pieno supporto PWA: notifiche push, modalità offline e altre funzionalità, lo sviluppo richiederà 200-300 ore/uomo, ma il prodotto sarà immediatamente disponibile su tutte le piattaforme. Quindi, il risparmio è di circa 2 volte, per non parlare del fatto che non si dovrebbero pagare tasse per la pubblicazione negli store.
Serverless
Questo è un altro approccio moderno allo sviluppo. A causa del nome, molti pensano che si tratti davvero di sviluppo senza server, non è necessario scrivere codice back-end, e qualsiasi sviluppatore front-end possa realizzare un'app web completa. Ma non è così!
Nella creazione di un'applicazione Serverless, il server è comunque necessario e anche il database. La principale differenza di questo approccio è che il codice di back-end è rappresentato come funzioni cloud (un altro nome per serverless è FaaS, funzioni come servizio o Functions-as-a-Service) e consente all'applicazione di scalare rapidamente e facilmente. Nella creazione di tale applicazione, lo sviluppatore può concentrarsi sulle esigenze aziendali senza doversi preoccupare della scalabilità e della configurazione dell'infrastruttura, il che accelera lo sviluppo dell'applicazione e riduce i costi. Inoltre, l'approccio Serverless aiuta a risparmiare sull'affitto server, poiché utilizza esattamente le risorse necessarie per eseguire il compito, e se non ci sono carichi di lavoro, il tempo del server non viene affatto utilizzato e non viene pagato.
Ad esempio, la grande azienda americana di media Bustle è riuscita a ridurre i costi di hosting oltre il 60% passando a Serverless. E l'azienda Coca-Cola, nello sviluppo di un sistema automatizzato per la vendita di bevande tramite distributori, è riuscita a ridurre i costi di hosting da $13000 a $4500 all'anno grazie alla transizione a Serverless.
Negli ultimi due anni, a causa della novità e delle proprie limitazioni, Serverless è stato principalmente utilizzato per piccoli progetti, startup e MVP, ma oggi, grazie all'evoluzione del software, all'universalità e alla potenza della containerizzazione dei server, stanno emergendo strumenti che permettono di rimuovere i vincoli, semplificare e accelerare lo sviluppo di applicazioni cloud.
Ciò significa che gli scenari di business aziendale, in cui la modernizzazione cloud era precedentemente considerata impossibile (ad esempio, per dispositivi periferici, trasferimento di dati o applicazioni con stato), ora sono una realtà. Strumenti promettenti come kNative e Serverless enterprise si stanno affermando.
Tuttavia, nonostante tutto ciò, Serverless non è la soluzione magica per lo sviluppo di applicazioni web. Come qualsiasi altra tecnologia, ha i suoi pro e contro, e bisogna scegliere questo strumento con consapevolezza e non "cimentarsi a battere chiodi con un microscopio" solo perché è più tecnologico.
Per aiutarvi a capire, ecco alcuni esempi in cui vale la pena considerare Serverless nella creazione di un nuovo servizio web o nel miglioramento di uno esistente:
- Quando il carico sul server è di natura periodica e si paga per la potenza inutilizzata. Ad esempio, abbiamo avuto un cliente con una rete di distributori automatici di caffè, dove era necessario elaborare 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 il reale utilizzo delle risorse, quindi abbiamo proposto e implementato una soluzione su Serverless;
- Se non prevedi di immergerti nei dettagli tecnici dell'infrastruttura e di pagare troppo per la configurazione e il supporto di server e bilanciatori. Ad esempio, nello sviluppo di un marketplace, non sai esattamente quale sarà il traffico o, al contrario, se prevedi un elevato traffico e vuoi che la tua applicazione regga sicuramente il carico, Serverless è un'ottima scelta.
- Se è necessario eseguire determinati eventi in streaming nel funzionamento dell'app principale, registrare dati accessori nelle tabelle, eseguire alcuni calcoli. Ad esempio, raccogliere dati analitici sulle azioni dell'utente, elaborarli in un certo modo e salvarli nel database;
- Se è necessario semplificare, unificare o velocizzare il funzionamento attuale dell'applicazione. Ad esempio, creare servizi che migliorano le prestazioni per la gestione di 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 da servizi esterni. Ad esempio, elaborare le risposte dai sistemi di pagamento o reindirizzare i dati degli utenti in CRM per accelerare l'elaborazione delle richieste dei potenziali clienti.
Se hai una grande applicazione e alcune parti dell'applicazione 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 mani libere, oppure la realizzazione in questo linguaggio potrebbe richiedere più tempo e c'è già una soluzione in un altro linguaggio, Serverless può aiutare anche in questo.
Questo non è affatto un elenco esaustivo di strumenti e tecnologie che meritano attenzione, ho solo condiviso ciò che utilizziamo ogni giorno nel nostro lavoro e sappiamo bene come possano aiutare il business.
Fonte: habr.com
