Pro Easy to use
Google App Engine is very easy to use. All you need to do is install the SDK (which in itself is easy as well, and the documentation is very heplful) and run the command needed depending on the type of project to deploy it.
For example, to deploy a golang application, you run
golang deploy inside the project folder and it will be automatically deployed.
Con Confusing API redundancy
App Engine brings with it a number of APIs that can lead to confusing choices; for example, outside of App Engine, there is pretty much one clear choice in terms of how to use the Cloud Datastore API: one uses the proper client library (e.g. in Python, this would be the google-cloud-datastore library in PyPi). On App Engine, however, there are often multiple APIs; for example, in Python, there is both the "db" and "ndb" libraries provided by App Engine (easier to use), as well as the "google-cloud-datastore" library (harder to get working in App Engine).
Con API compatibility issues in some environments
Some of the App Engine environments have compatibility issues using certain APIs. For example, in App Engine Python Standard, it can be challenging to use many of the Google Cloud Python client libraries due to the 'google.cloud' namespace being used incompatibly between the Google Cloud Python client library code and between the APIs that are provided by the App Engine environment. Likewise, code making socket connections or other HTTP requests without going through the proper App Engine APIs can run into issues.
Con Vendor lock-in
App Engine is vendor-specific to Google. Some code that works with App Engine may need to be modified or re-written to bring to other providers. Not only that, but even among Google's various App Engine environments, some modification may be necessary to port code between "standard" and "flexible" environments. For maximum portability, you may want to consider using "Cloud Run", instead, which brings many of the benefits of App Engine while, at the same time, providing a much more portable approach to running code.