Going Serverless

07.29.19 04:57 PM By Juan Peredo

Accelerating application development with Google Serverless

This week, at the 2019 Google Cloud Summit in Chicago, Google invited the community to take a closer look at their latest offerings for cloud application delivery, hosting and development.  While Google discussed a range of interesting topics ranging from Artificial Intelligence and Machine Learning  to application development and infrastructure modernization, a central topic seemed evident: simplifying and automating common mundane tasks. The ultimate goal being allowing companies to concentrate on building applications that solve business issues and increase revenue.


By abstracting away tasks like infrastructure setup and configuration, Google is hoping to empower teams of all sizes to start developing the next great application in a matter of minutes instead of weeks or months. Companies in the Google ecosystem can setup environments in seconds that fully scale up and down out of the box. This removes the need for peak hour provisioning and having to wait for weeks while servers are purchased and configured. This, in turn, has a direct correlation to the provisioning and maintenance cost of hardware. 


Moving companies’ tech infrastructure into the cloud also enables companies to innovate at a faster pace. The ability to setup and decommission systems in minutes and at a reasonable cost allows for more A/B testing and experimentation than is generally possible on premise. This encourages companies to look for new ways to convert and retain customers as well as searching for new revenue streams.  

 This year Google has continued its efforts to help companies move and thrive in the cloud as effortless as possible by building on its existing offerings.


A perfect example of this can be found in their latest offerings that extend the definition of serverless computing to apply not only to small self-contained functions and micro-services but to also include any fully managed web, container and Kubernetes based applications (among other things).


Google indicates:


“Serverless computing is a paradigm shift in application development that enables developers to focus on writing code without worrying about infrastructure”


It has spent a significant amount of time and resources to try to achieve this lofty goal. The internet giant now provides four serverless options that allow developers using (and paying) for google services to minimize the time spent worrying about infrastructure independently of how they built their applications:

  •  Cloud functions: These small event driven functions are Google’s approach to micro-services. The functions are simple in nature and are meant to have a single purpose. This makes them easy to maintain and fast to deploy/upgrade. This is by far the simplest way to run code on the Google Cloud: Just put your code in the cloud and Google takes care of automatically scaling them to match demand. Note that Google Functions only supports a few, but very popular languages for development including Node.js, Python and Go 


  • App Engine: This is a fully managed web application platform. App Engine provides a quick and simple way to deploy  fully functional web applications without having to worry about any provisioning/managing of resources or configurations. Out of the box, App Engine supports languages like Java, PHP, Node.js, Python, C#, .Net, Ruby and Go.


  • Cloud Run: This is the simplest way to deploy containerized applications on the web. With fully managed environments, deploying a container can practically be as easy as pointing Code Run to the appropriate container and pressing ‘go’ . Google will load the container, provision a default pre-configured Kubernetes environment with as many nodes as you specify. Google will also automatically scale up and down the number of nodes as needed. Given that Cloud Run works with containers, it can handle applications in any language or library.


  • Cloud Run on GKE: While Cloud Run provides a set of pre-defined containers, for applications that truly need specialized setup and particular hardware Google offers Cloud Run on top of the customer’s Google Kubernetes Engine. This allows customers to fully specify the type of machines/services that should be automatically provisioned/autoscaled by Google Cloud


The different services the Google Cloud provides in terms of managed servers truly caters to a large range of development needs, making this a very interesting proposition for teams that want to simplify their processes and increase their productivity. 


But how do you choose between the different options? Google provides this simple yet thorough diagram to help make the appropriate decision:


The basic direction that companies take to deploy their applications on a serverless environment depends on their individual needs and the approach taken for app development. Need a simple set of event driven functions to handle well defined tasks, then go with Cloud functions. More comfortable developing and deploying traditional web applications, then look into App Engine. Want to take advantage of containers and their inherent flexibility to build small to medium applications, then Cloud Run is the way to go. Need further power and control of the way your Kubernetes engine is setup to deal with large traffic coming to your application, then Cloud Run on GKE is the best option. Having all these different options means that project teams have the flexibility to choose the best path to success for their particular situation and their budget restrictions.


Independent of which direction is taken to build/migrate the next successful  application, it is clear that cloud providers are rushing to provide simpler and more powerful, solutions to empower the next generation of developers and applications.


Additional information about Google’s serverless options can be found at https://cloud.google.com/serverless-options/.


Juan Peredo