Finite le ferie? Dura tornare in ufficio, vero?
A peggiorare la situazione spesso poi ci si mettono anche i nostri cari e vecchi server che hanno qualche problema sempre nei momenti meno opportuni…
A parte gli scherzi, in questi giorni riflettevo sulla reale necessità ad oggi di avere un server (fisico o virtuale) per ospitare le applicazioni web della nostra azienda.
In questo ultimo periodo stiamo lavorando ad un nostro progetto (che se tutto va bene vi sveleremo molto presto!) per il quale abbiamo utilizzato alcuni servizi AWS (Amazon Web Services).
Dopo aver avuto un primo approccio con questo nuovo mondo mi è sorta la domanda:
Ad giorno d’oggi un server è ancora necessario?
Ovviamente se non fossi soddisfatto di lavorare con dei servizi come AWS non ci avrei scritto un post, ma oggettivamente sono rimasto molto colpito.
Chiunque abbia mai avuto a che fare con un server conosce bene i vari problemi di configurazione, aggiornamento, sicurezza, compatibilità, availability, ecc…
Utilizzare servizi come quelli offerti da AWS ci ha permesso di ignorare gran parte dei problemi sopra elencati, focalizzandoci esclusivamente (o quasi) sulla implementazione della applicazione.
In passato avevamo già lavorato con Heroku, un Platform As A Service, dove anche l’infrastruttura server diventa un servizio. In questo caso invece (AWS) stiamo parlando di servizi specifici che risolvono task puntuali e che messi insieme creano una infrastruttura complessa e scalabile.
Nel nostro caso abbiamo avuto a che fare con:
- S3: (Simple Storage Service) lo storage cloud di Amazon
- Elastic transcoder: un processore di materiale multimediale
- Cloud Front: una CDN per la distribuzione di contenuti via web
AWS – S3
S3 viene utilizzato per salvare tutto il materiale, si paga in base allo storage occupato ed in base al traffico generato in ingresso o in uscita. Permette di creare dei “bucket” in cui organizzare facilmente il proprio archivio. In altri progetti ad esempio abbiamo utilizzato S3 come repository per i backup applicativi.
AWS – Elastic Transcoder
Elastic Transcoder funziona a “pipeline”: si impostano i dati in ingresso, la lavorazione da eseguire, ad esempio sui video, e il formato di uscita. La cosa davvero fantastica è la compatibilità con S3: è possibile leggere gli input da S3 e salvare l’output sempre in S3.
AWS – Cloud Front
Cloud Front infine utilizza come sorgente in cui cercare il materiale da distribuire sempre su S3 (nel nostro caso) e ne crea una versione in cache distribuita in tutto il mondo, così da avvicinare all’utente utilizzatore le risorse per ottimizzarne il caricamento.
Cloud Front inoltre permette la configurazione di funzioni Lambda che vengono invocate ad ogni richiesta. Questo permette di avere un controllo ancora più fine sulle richieste e ci permette ad esempio di implementare una autenticazione tramite token bearer.
La riflessione iniziale continua pensando: sarei riuscito a realizzare una infrastruttura simile? Quanto tempo ci avrei impiegato? mesi? anni? E soprattutto a che costo?
Conclusioni
Tirando le somme, sono rimasto estasiato dalla semplicità e dalle possibilità offerte da questa metodologia di lavoro, ma dopo tutto credo che come spesso accade la verità stia nel mezzo.
Probabilmente la soluzione ottimale è affidarsi ad un server (o un buon hosting nel nostro caso) per realizzare la parte di interfaccia dell’applicazione web, la logica applicativa, e demandare ad AWS alcuni compiti molto specifici per i quali questi servizi sono nati e certamente eseguono il loro compito meglio di quanto saremmo stati in grado di fare noi, e soprattutto con una capacità di scalare impareggiabile.
La nota dolente di questo approccio potrebbe essere il prezzo, quanto costa utilizzare massivamente questi servizi? Ad oggi una risposta ben precisa non l’abbiamo ancora, ma di certo vi terremo aggiornati!
Fateci sapere voi cosa ne pensate…
Usate servizi come AWS o restate fedeli al buon vecchio server?