Quando si inizia ad usare Firebase Studio si nota subito, in alto a destra, il pulsante Publish che invita, appena pronta, a pubblicare la propria applicazione.

Figura 1. Pulsante Publish
Questo ambiente permette di realizzare applicazioni molto diverse tra loro pertanto in base alla loro natura, finalità ed esigenze di scalabilità si avrà bisogno di una modalità di pubblicazione differente. Tuttavia, noi per il momento procederemo alla pubblicazione del nostro prototipo di app che propone aforismi affrontando ragionamenti riguardanti specificamente l'ambito web, rimandandone altri tipici di settori diversi man mano che se ne presenterà l'occasione.
Le esigenze di un'applicazione
In questo paragrafo ragioneremo su due aspetti fondamentali: le esigenze tecnologiche dell'applicazione ed il legame con il mondo Google di Firebase Studio.
Il primo punto verte soprattutto sulla necessità di disporre di un ambiente di pubblicazione che offra o meno capacità lato server. Infatti, se abbiamo realizzato una pagina che per lo più gestisce tutto con HTML, CSS e Javascript e suoi derivati lato client potremo disporre di un deployment su una piattaforma hosting più semplice che non farà altro che fornire pagine ai browser richiedenti e lasciare che questi attivino il necessario lato client. Con molte tecnologie (anche derivate da Javascript come Next.js usata nel nostro esempio) potrebbero
essere necessarie capacità lato server - tipo l'SSR (Server Side Rendering) o l'API Routing - che richiedono qualcosa in più di un semplice hosting in stile "condivisione pagina web". Tali aspetti di allestimento tecnologico sono i primi da considerare
Secondariamente, sarà sempre da tenere presente il legame tra Firebase Studio e Google. Lo stack da considerare è costituito da uno strato di base ricchissimo, la Google Cloud Platform, e la piattaforma Firebase nata per gestire backend basati su database NoSQL realtime e poi divenuta appendice di Google Cloud con tutta l'offerta necessaria (ed estremamente intuitiva) per supportare gli sviluppatori di app mobile e web.
Pubblicazione in Firebase Studio
Il pulsante Publish, menzionato prima, per un'applicazione web basata su Next.js offrirà di default la pubblicazione su Firebase App Hosting, non l'unica soluzione possibile ma di sicuro la più intuitiva. Ma a livello di costi ed autorizzazione come siamo messi in Firebase?
Aprendo un parentesi su Firebase (non Firebase Studio) consideriamo due aspetti che ci saranno utilissimi per le valutazioni
- Firebase (come tutto Google Cloud) è organizzato per progetti che sono una sorta di raccoglitore di risorse destinate a collaborare tra loro. Prima di qualsiasi attività in Google Cloud/Firebase sarà necessario creare un progetto in cui inserire le risorse richieste;
- le politiche di pricing di Firebase offrono due piani tariffari, uno totalmente gratuito (piano Spark) ed uno a pagamento Pay as you go (piano Blaze). Ogni progetto verrà associato ad un piano che, di default, sarà inizialmente Spark, per poi passare a Blaze in caso di attivazione di risorse a pagamento: in quest'ultimo caso ciò sarà possibile solo associando un Billing Account di Google Cloud con cui l'utente dichiara i propri dati personali e di pagamento.
Ora però torniamo alla pubblicazione di un'app web da Firebase Studio.
Pubblicare un'applicazione web
Dopo questa premessa, saranno più chiare le possibilità esistenti di pubblicazione di un'applicazione web da Firebase Studio. A seconda delle tecnologie impiegate e delle nostre necessità tecniche, avremo infatti principalmente quattro scelte:
- l'opzione di pubblicazione di default, quella tramite l'ormai noto pulsante Publish che per un'app con Next.js sarà di default Firebase App Hosting, del piano a pagamento sebbene a consumo, che mette a disposizione funzionalità dinamiche tra cui il rendering lato server. E' un procedimento veloce fatto dall'interno di Firebase Studio, suddiviso in tre passaggi;
Figura 2. Pubblicazione in tre step su Firebase App Hosting
- Firebase Hosting, la soluzione gratuita (sotto certi limiti tuttavia piuttosto generosi) inclusa nel piano Spark. Questa però offre solo hosting di pagine statiche quindi per la normalità delle funzionalità di Next.js non è adatta;
- servizio Cloud Run della Google Cloud Platform che consiste in un esecutore di container Docker in Cloud pertanto conformabile a qualsiasi tecnologia. E' un servizio a pagamento sebbene abbia un utile free tier che richiede comunque l'immissione di dati di pagamento anche in caso di uso gratuito;
- varie soluzioni di terze parti o personali come l'installazione di server in proprio (che possono andare da Node.js a installazioni Docker e via discorrendo) o servizi in Cloud come Vercel, Netlify e Rernder, per citarne solo alcuni.
Prima di procedere
Con questa lezione, abbiamo dimostrato come Firebase Studio poggi su solidissime infrastrutture. Per lo strato più alto e applicativo dispone di tutto Firebase mentre per quello più infrastrutturale della Google Cloud Platform. I due ambienti sono strettamente legati, basti considerare che lo stesso Firebase App Hosting in realtà viene supportato da container Cloud Run e ciò offre notevoli possibilità ma il rapporto tra tutti questi servizi sarà oggetto di una lezione successiva.
Si tenga anche presente che non è il caso di farsi spaventare dalle opzioni a pagamento in quanto queste sono innanzitutto basate sul consumo che se ne fa e soprattutto Google Cloud offre per i nuovi utenti credito e piano gratuiti come illustrato nella documentazione ed anche al termine del periodo iniziale in cui tale credito è disponibile gli utenti della piattaforma potranno essere soggetti a pagamento solo in caso in cui, volontariamente, procedano all'upgrade del proprio account. Inoltre, esistono fasce gratuite per molti servizi disponibili per sempre. Pertanto sperimentare a costo zero non è affatto impossibile.
Infine, si prenda l'abitudine, come nell'uso di qualsiasi risorsa in Cloud, di eliminare o interrompere tutto ciò che non sia più utilizzato (al termine di sperimentazioni ed esercitazioni capita sempre) al fine della sicurezza e del risparmio economico.