I started my journey with PHP in 2016 when I began to explore developing applications on Google App Engine. At that point App Engine did not have good support for .NET so I was forced to learn another open source language and I chose PHP instead of Python since there were lot of open source products and frameworks on PHP that was easy to master. App Engine also supported raw PHP but it did not support any frameworks of PHP officially.
I took CodeIgniter 3 and customized it to run on App Engine. I explained how I did that in my personal website here. The CodeIgniter framework was good for basic applications but for data intensive applications that involved writing complex queries it was not suitable and the ORM in CodeIgniter was still maturing in 2017 so we decided to explore Laravel.
Laravel was very good. We used it in our projects. Version 5 and 6 was good and we were able to run it on Google App Engine without any problems. Starting Laravel 7 we are having issues in making Laravel run on App Engine. The performance of Laravel is very slow even for pages that don’t connect to database. Our developers thought that the community documentation of Laravel on App Engine was official endorsement from Google Cloud.
The main limitation we are not able to solve as of now in Laravel 7 and above is the the views are getting precompiled and stored by Laravel framework on disk and this cannot be done on App Engine and hence each requests goes thru the same lifecycle again and again and takes longer. The PHP itself we feel is tough to work with compared to modern languages.
We are moving to Python and the main reason is that Django framework has been officially supported by Google App Engine more than 7 years. This is the deciding factor for us. Right from day one our target was to develop applications that run on Google Cloud. Django framework is awesome and it is very promising to develop complex applications and backends for mobile applications.
We are evaluating Django on App Engine for further optimizations and its integration with other Google Cloud services. So far it is promising. Google has also provided official documentation on how to run Django on App Engine, Compute Engine, Kubernetes and Cloud Run. You can read them here.
We are very excited about this new possibility and hope to help our clients develop solutions using Django that run economically on Google Cloud. Let us know your thoughts on this and share your experience.