Recent years have shown a sharp turn towards Cloud solutions. The word is, if your solution doesn’t end up in the Cloud, then sooner or later it will simply decrease in value and disappear from
The true foundation of every system is its infrastructure. Unseen to the users, on it the whole system is based. To gather large amounts of users for your app and make the process of development streamlined for your developer, this infrastructure must be fast and secure.
Another matter is for the system’s server to be as reliable as possible, especially when implementing a system meant for large market exposure and intensive marketing campaign. If e.g. we convince thousands of users to test our app and they start running into problems caused by inadequate infrastructure, the effects of our marketing campaign might quite the opposite of intended.
Cloud solutions, in terms of reliability, security and most importantly – scalability, do set the bar very high for the competing, classic solution.
Clouds come in different shapes
Let’s look at the models in which we can get the Cloud services we need. Most commonly, two models are used – Infrastructure as a Service (IaaS) and Platform as a Service (PaaS). In a bit of a detail, they are:
- IaaS – the more flexible model. When we want to have a control over the machine used for our project, IaaS gives us the virtual tools with which to build our own environment and have the freedom to decide which components we need installed. Here, the responsibility of maintaining the infrastructure lies with us.
- PaaS takes a slightly different approach, where the Cloud service provides us with ready-made environment for our app to work in. We get a secure, scalable machine, which on one hand, does have some restrictions regarding useable tools, on the other, it reduces to zero the costs of building and maintaining the environment
Google App Engine – Google Cloud platform
One of the most popular PaaS services is the Google App Engine environment. Google’s own computing Cloud went online in 2008 and has been growing since, seeing particularly serious developments in recent years.
The service, working from Google’s own data centers gives access to the infrastructure built and maintained by the supplier (Google). The developers get a solution that is fully scalable, starting from a free, single instance – good for initial stages of the project or to maintain minor solutions, all the way to an army of servers at your disposal, capable of servicing any amount of requests.
The speed of implementation of an app on GAE (Google App Engine) platform is one of the main advantages over other solutions. You can launch your first piece of code minutes after registering your project in the Google Cloud. And that from virtually anywhere in the world.
The source code production process is thus significantly easier, as developers can focus on the code itself, instead of required frastructure.
At the beginning, App Engine from Google offered a very limited set of tools. As of 2018 (August) the service offers a wide range of launch environments, supporting code written in Java (See also: API development in Java), Python, Go, PHP, Node.JS and .NET.
The service supply is keeping up with developers’ demand. Conversely, introduction of the environment supporting Java 8 removed restrictions for Java environment that so far disabled the the use of some of classes from JRE standard.
Initially, GAE’s database layer required the use of Google Datastore base – currently, the client can utilise the built-in Cloud SQL (MySQL,postgreSQL) database. In one of the previous articles (What can’t NoSQL do – first experience with Google Cloud Datastore) we spoke of choosing the right database and what to expect when using NoSQL technology. Although the advantages of utilising BigTable where the default database is built are indisputable, Google does offer alternatives.
Any coder experienced with projects utilising tools like GCM/FCM notifications will find the Cloud management interface quite familiar.
The same, comfortable admin panel is used for the entire project development, containing lists of used APIs, database part, task queuing, logs and statistics.
There is a wide range of components we can use. We get access to standard mobile app development tools like aforementioned Firebase Cloud Messages or Google Maps API, through document search tools (Search API) and even ones for advanced image analysis with Cloud vision API.
The strength of Google Application Engine – GAE – lies in the fact that above tools are oftentimes embedded in the framework and don’t require laborious integrations with each separate component.
Although GAE does somewhat restrict the developers tools palette, the provider is ongoingly expanding the range, and the available tools are very good and comfortable for development, especially of mobile app backends. When considering an architecture designing a new solution, it’s well worth considering the Google App Engine technology, as it will often prove the “golden middle” between maximum flexibility and advantages of utilising Cloud technologies.