Usare PHP su Google Cloud: qualche considerazione.

Scritto da -

Google nella continua ricerca di proporre soluzioni alternative per gli utilizzatori del web, in questi giorni ha comunicato che ha reso utilizzabile lo spazio Cloud anche per PHP.
Questo vuol dire che è possibile far funzionare gli script PHP caricati nell’App Engine di Google (GAE).  Ma noi già a Luglio del 2013 abbiamo chiesto a Fabio P. il nostro Senior Software Engineer, cosa ne pensasse di questa novità. Ed ecco le sue risposte, in attesa di scoprire se qualche recente novità sia stata apportata.

Fabio, secondo te è una soluzione interessate?

Sì, ma bisogna anche considerare che la scelta di Google nel supportare il linguaggio PHP è una “naturale evoluzione” del panorama odierno nel mondo dello sviluppo Web; infatti Google stessa ha pubblicamente giustificato il suo interesse in questo progetto proprio dall’analisi dei siti web in ambito globale (e chi meglio di loro può usufruire di queste informazioni?!), secondo la quale il 75% dei siti in tutto il mondo è basato su PHP, ovviamente anche grazie a realtà di successo come WordPress, Joomla, Drupal, ecc; ricordiamo come le prime versioni di App Engine supportassero unicamente Java e Python, linguaggi che, seppur molto potenti, robusti e conosciuti, non riescono a rivaleggiare con la naturalezza di utilizzo alla base di PHP e all’enorme comparto di progetti Open source basati su questo linguaggio.

Sicuramente per Google, attirare i migliaia di programmatori e società che quotidianamente utilizzano PHP per i propri progetti e per il proprio lavoro, è una mossa altamente strategica, vista anche l’impronta commerciale che stanno dando a questo nuovo prodotto.

Tuttavia, nel mondo dello sviluppo, la notizia non è così poi tanto nuova: infatti, come per ogni servizio/prodotto Google che si rispetti, il supporto PHP di App Engine è stato rilasciato molti mesi addietro rispetto alla release ufficiale, per permettere alla comunità di sviluppatori di testare in primis i propri script o il proprio software sul nuovo ambiente.
Purtroppo, fin dalle prime battute, ci sono state molte più delusioni di quello che ci si aspettava.

Quali sono i problemi maggiormente riscontrati?

Dal punto di vista tecnico App Engine non si basa su un’architettura “classica” di un web-server LAMP o WAMP, che rappresentano la quasi totalità dei server che offrono servizi di Hosting o Housing; in un ambiente “classico”, il PHP è un “interprete” (basato sul famoso Zend Engine), di solito compilato secondo le specifiche hardware della macchina, in cui i sistemisti ed i programmatori possono abilitare/disabilitare svariate estensioni del linguaggio, che sono altamente ottimizzate poiché scritte in C e compilate nella memoria del server; teoricamente molte volte è possibile scrivere direttamente in PHP una funzione di solito offerta tramite un’estensione, ma le performance sarebbero nettamente inferiori e, salvo casi molto particolari, il programmatore esige il supporto di una determinata estensione; nell’ambiente App Engine l’interprete PHP è stato modificato da Google e si basa su una versione modificata del Zend Engine; il nuovo interprete non è in grado di caricare dinamicamente le svariate estensioni classiche del linguaggio; esiste un subset di queste funzionalità compilata direttamente nel PHP, ma la lista delle estensioni supportate è stabilita da Google stessa e non è possibile in alcun modo modificare l’ambiente server e le estensioni disponibili;

Quindi, nel caso in cui una classe od un metodo di uno script o software si basino su un’estensione ignorata da Google, lo sviluppatore è costretto a riscrivere di sana pianta le funzioni non supportate, e anche riuscendoci non sarebbero performanti e veloci(per quanto spiegato sopra) come le controparti offerte dalle estensioni classiche pre-compilate; inoltre, nel caso di nuove estensioni, la community è costretta a richiedere direttamente a Google, tramite una specie di petizione online, di abilitarne il supporto nell’App Engine, con chissà quali tempi e in che modo (operazione che di solito non porta via più di 5 minuti); ad esempio possiamo citare il recente PhalconPHP, estensione che sta acquisendo sempre più favori tra moltissimi sviluppatori, che attualmente non è supportata su GAE (https://code.google.com/p/googleappengine/issues/detail?id=9336)

Ma il fatto che si basi su Cloud cosa comporta?

L’infrastruttura Cloud pensata da Google è piuttosto differente dalle altre presenti sul mercato; innanzitutto il filesystem di GAE è a sola lettura (read-only)! L’unico modo per “scrivere” qualcosa sul disco (ad es. uploads, cache, file di log, ecc.) è di usare un servizio di terze parti come un CDN (Content Delivery Network) oppure utilizzare un file system virtuale come gae-filestorage (maggiori informazioni nel sito dedicato a Google I/O - https://developers.google.com/appengine/docs/python/datastore/#Python_Datastore_API ) oppure tramite il servizio a pagamento Google Cloud Storage (https://developers.google.com/appengine/docs/php/googlestorage/overview); in tutti questi casi è necessario riscrivere la logica del software anche per operazioni “classiche” di lettura e scrittura delle informazioni; come se non bastasse, non è mai disponibile un’installazione locale dei più famosi RDBA usati in ambito open-source e nello sviluppo giornaliero – server come Mysql, MariaDB o PostgreSQL semplicemente non esistono nel Google App Engine;
in questo caso lo sviluppatore nella maggior parte dei casi è costretto ad utilizzare un altro servizio messo a disposizione da Google, tale Google Cloud SQL - https://developers.google.com/cloud-sql/ (che è simile a Mysql ma con molte limitazioni - https://developers.google.com/cloud-sql/docs/introduction#features)

Quindi non è possibile utilizzare la solita programmazione PHP ?
Esatto, questo vuol dire che o il codice contiene un sacco di condizionale per renderlo trasportabile oppure si scrive direttamente codice che gira soltanto su App Engine. In entrambi i casi personalmente non sono molto soddisfatto, a questo punto meglio una macchina Amazon, in cui è lo sviluppatore a decidere se attivare o meno un servizio Cloud, prendendosi il carico e la responsabilità di riscrivere una parte del proprio codice!

Che tipo di applicazioni riusciranno a farci girare quindi?
Google ha dichiarato ufficialmente che software come Drupal e WordPress sono supportati, ma in realtà solo il core - il rischio è che, nel normale sviluppo di un progetto, prima o poi si rende inevitabile installare qualche componente o plugin per estendere le funzionalità basi di una piattaforma; ma se un componente o un plugin si basano sulla programmazione “normale” del PHP e non contiene codice condizionale di supporto per App Engine va a finire che non funziona niente, perdendo molto più tempo per aggirare il problema.

 Lo consiglieresti attualmente per lo sviluppo di un progetto?
GAE è una nuova opportunità per PHP e per gli sviluppatori e le aziende che basano il proprio lavoro su questo linguaggio. Ha il potenziale di rivoluzionare il mondo dello sviluppo PHP e le opzioni di hosting disponibili per gli sviluppatori, ma, oggigiorno, rimane ancora un prodotto troppo “acerbo” per un progetto che debba essere rilasciato in produzione.