Google App Engine's best feature is cloud endpoint
Hil Liao profile photo
Updated August 15, 2019

Google App Engine's best feature is cloud endpoint

Score 10 out of 10
Vetted Review
Verified User
Review Source

Software Version

1.9.27 - 2015-09-16

Modules Used

  • endpoints

Overall Satisfaction with Google App Engine

We are currently evaluating Google App engine as a platform as a service to our customers. The Google App Engine cloud endpoints is equivalent to Microsoft Azure's web apps or API apps. We are impressed with its ability to deploy Java or Python based RestFul API directly to Cloud endpoints. I coded the logic in the RestFul API to access Google's Cloud DataStore (kind-entity-property type of data store). Google's SDK made it easy to integrate its App Engine with its storage solutions. I have not tried its Cloud Bigtable from Cloud endpoints but I'm sure it's on our next task list.

Google App Engine's primary programming language is Java. I tried JetBrain's IntelliJ IDEA for managing Google App engine cloud endpoint projects. I used the community edition, which had less support for Google App Engine Cloud endpoint. The enterprise edition should have better support.

For those who prefer to use Python, JetBrains may have just released PyCharm for $99. Nothing comes for free. If you work at a company that has those licenses, you should feel lucky. Having a good IDE is critical to productivity. It has a "PyCharm Free Educational (Classroom) License" for free.

  • Auto scale application load.
  • Platform as a Service feature abstracts the web server layer.
  • Perfect for Android or iOS app server logic development.
  • Connect to different Google storage types.
  • Able to use C# as the programming language in its SDK.
  • Integration with Visual studio C# for using Google app engine cloud endpoint SDK.
  • Documentation on choosing a IDE to get started. Doing things in the command line is too basic. It's good to know them but having a sophisticated IDE is the next step to achieve higher productivity.
  • Positive: Customers with Java, Python code base may choose to use Google app engine over Microsoft Azure for deploying their web applications.
  • Negative: Customers with C# ASP.NET web application code base may choose not to use Google app engine due to lack of C# support in the SDK.
  • Positive: pricing is 10% more competitive compared to Microsoft Azure and %48 more competitive compared to Amazon AWS.
  • Windows Azure
Compared with Microsoft Azure, Google App Engine requires a more complicated development environment setup. It's not as simple as using Visual Studio 2015 with Azure SDK. There are multiple IDE on the market to choose from for developing apps for Google App Engine. JetBrains may have the best IDE.

Consider the data store your web applications will need. If it's a brand new v1 application, look at the storage offerings from Microsoft Azure, Amazon, Google. It's quite difficult to connect to Amazon's or Microsoft Azure's storage from web applications running in Google App Engine.
  • What kind of data store do you plan to use for your server side application? Make sure Google App Engine SDK supports them.
  • Will your server applications be REST based? Think about using cloud endpoint.
  • Do you plan to use a JSP page with servlet class?

Google App Engine Feature Ratings

Ease of building user interfaces
1
Scalability
10
Platform management overhead
10
Workflow engine capability
10
Platform access control
10
Services-enabled integration
10
Development environment creation
10
Development environment replication
10
Issue monitoring and notification
10
Issue recovery
10
Upgrades and platform fixes
10

Using Google App Engine

75 - 
  1. serving micro-services based REST APIs
  2. corporate inventory management Web applications
  3. store based web applications
  4. payment processing REST APIs
  5. Product catalog REST APIs
  6. Order management REST APIs
  7. Store Location management REST APIs
Most usage is from a large cap retailer from 2018 Q4. The retailer was assessing using Google App Engine to migrate their monolithic services to Google App Engine flexible microservices based architecture. Per PCI compliance standards, payment processing REST APIs are the least possible to use Google App Engine. The best product at the time was Google Kubernetes engine.
9 - 
  1. Language runtime specific knowledge and skills
  2. For App Engine flexible, skills and knowledge of Docker containers
  3. StackDriver monitoring for configuring real time alerts to the DevOps team.
  4. Trackdriver trace to troubleshoot service level latency.
  5. Stackdriver Debug and error reporting to find production bugs.
  6. Stackdriver profiler to get application performance insights.
  7. Stackdriver logging to troubleshoot general application errors and warnings.
  8. Google Cloud certified professional cloud developer.
  9. DevOps team. Ops team are lesser qualified because troubleshooting App Engine errors will require most developer's skills.
  • building new Microservices
  • building new REST APIs
  • rebuilding or migrating existing microservices to App Engine
  • rebuilding or rehosting containerized web apps to App Engine flexible.
  • Migrate low security risk REST API to App Engine
  • configure Serverless VPC Access for App Engine standard services to consume Cloud SQL or Compute engine hosted microservices or databases.
  • Use App Engine firewall to restrict traffic into the deployed services.
  • Migrate existing Java 8 App Engine standard services to Java 11 with Google Cloud SDK.
  • Build greenfield Java 11 REST APIs with App Engine standard Java 11 runtime.
Google app engine may be lesser than Cloud Run, Cloud Run on GKE. It's still a strong and consistent product. Google just introduced App Engine standard Java 11 runtime which is more flexible and powerful. It sits between Cloud Function and Cloud run as the intermediate solution for enterprises.

There are currently a growing demand for running custom web serving frameworks with the latest Java runtime in top cloud providers. Google Cloud App Engine Java 11 runtime is meant to solve exactly that problem. It's the next degree of serverless offering from Google Cloud Run. While Cloud Run offers building and deploying any Docker image to Google managed kubernetes hidden from developers, App Engine standard Java 11 runtime does a similar job except it's meant for Java 11 runtime. Enterprises may be more interested in deploying existing containerized applications to Google Cloud Run on GKE compared to Cloud Run and App Engine. Cloud Run on GKE allows the network and security teams to prepare a GKE cluster that complies with the corporate security and network requirements, which can't be done in App Engine Java 11 runtime.

The advancement from Java 8 to Java 11 runtime isn't trivial. Developers can bring their own web serving frameworks and customize the Java entry point in app.yaml:
entrypoint: java Main.java
You can find all the App Engine samples for Java 11 on github. I tried the sprint boot sample and added a REST endpoint:
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;

@GetMapping("/test")
@ResponseBody
public Map<String, String> test() {
HashMap<String, String> map = new HashMap<>();
map.put("key", "value");
map.put("foo", "bar");
map.put("aa", "bb");
return map;
}
It returns the JSON just like the Java 8 version. So now you know sprint boot is also supported. For more info, refer to the Google Cloud Blog. Migrating from Java 8 to 11 isn't easy. The most challenging part is to migrate the App Engine specific APIs such as memcache to Cloud SDK client library.