GCP: Parsing the Google Cloud Platform Computing Stack

A translation of the article was prepared specifically for students of the Cloud Services course.







Is it interesting to develop in this direction? Watch the recording of the AWS EC2 Service professional workshop held by Egor Zuev - TeamLead at InBit and the author of the educational program at OTUS.













The Google Cloud Platform (GCP) offers many services, and in particular the computing stack, which contains the Google Compute Engine (GCE), Google Kubernetes Engine (formerly Container Engine) (GKE), Google App Engine (GAE) and Google Cloud Functions (GCF ) All of these services have cool names, but may not be entirely obvious in terms of their functions and what makes them unique in relation to each other. This article is intended for those who are just getting acquainted with cloud concepts, in particular with cloud services and GCP.













1. Computing stack



A computing stack can be considered as a multi-level abstraction over what a computer system can provide. This stack ascends ( moves up ) from bare metal , which refers to the actual hardware components of a computer, right down to the functions, which are the smallest unit of calculation. What is important to note with respect to the stack is that services are aggregated when moving up the stack, for example, the “apps” section, shown in Figure 1 below, should contain all the basic components of containers, virtual machines ( virtual) machines ) and iron. In the same way, the virtual machine component must contain the hardware inside to work.













Figure 1: Computing Stack | Image retrieved from Google Cloud







This model, shown in Figure 1, is the basis for describing offers from cloud providers. Thus, some providers can provide only, for example, containers and services of lower quality on the stack, while others - everything that is shown in Figure 1.







- If you are familiar with cloud services, skip to section 3 to familiarize yourself with the equivalent of GCP

- If you only need a summary of cloud services, go to section 2.4


2. Cloud services



The world of cloud computing is very diverse. Cloud providers offer many services tailored to different customer requirements. You may have heard of terms such as IaaS, PaaS, SaaS, FaaS, KaaS, etc. with all letters of the alphabet followed by aaS. Despite the strange naming convention, they form a set of cloud provider services. I note that there are 3 main “as a Service” proposals that cloud providers almost always provide.







These are IaaS, PaaS and SaaS, which respectively designate infrastructure as a service (Infrastructure as a Service), platform as a service (Platform as a Service) and software as a service (Software as a Service). It is important to visualize cloud services as service levels. This means that when you go up or down from level to level, you, as a client, cross various service options that are either added or removed from the main offer. It is best to consider this as a pyramid, as shown in Figure 2.







Figure 2: Pyramid aaS | Image taken from Ruby Garage







2.1 Infrastructure as a Service (IaaS)



This is the lowest level a cloud service provider can offer, and it includes a cloud service provider that provides bare-metal infrastructure, including middleware, network cables, processors, GPUs, RAM, external storage, servers, and basic operating system images e.g. Debian Linux, CentOS, Windows, etc.







If you get an offer from your IaaS cloud provider, this is what you should expect. It is up to you, as the customer, to assemble these parts for your business. The extent to which you have to work with can vary from provider to provider, but as a rule, you just get the hardware and OS, and the rest is up to you. Examples of IaaS are AWS Elastic Compute, Microsoft Azure, and GCE.







Some people may not like the fact that they have to install OS images and deal with the network, load balancing, or care about which type of processor is ideal for their workload. This is where we move up the pyramid to PaaS.







2.2 Platform as a Service (PaaS)



PaaS includes only a cloud service provider that offers a specific platform on which users can create applications. This is an abstraction over IaaS, meaning that the cloud provider takes care of all the details of the types of CPU, memory, RAM, storage, networks, etc. As shown in Figure 2, you, as a client, have little control over the real platform, since the cloud the provider does all the infrastructure details for you. You request the selected platform and build a project on it. Examples of PaaS are Heroku.







For some, this may be too high a level, as he does not necessarily want to build a project on the specified platform, but rather needs a set of services directly from the cloud service provider. This is where SaaS enters the scene.







2.3 Software as a Service (SaaS)



SaaS is the most common service provided by cloud service providers. They are intended for end users and are accessible mainly through websites such as Gmail, Google Docs, Dropbox, etc. With regard to Google Cloud, there are several offers outside their computing stack that are SaaS. These include Data Studio, Big Query, etc.







2.4 Cloud Services Summary



Components Iaas PaaS Saas
What are you getting You get the infrastructure and pay accordingly. The freedom to use or install any software, OS or their composition. Here you get what you request. Software, hardware, OS, web environment. You get a ready-to-use platform and pay accordingly. You don’t have to worry about anything here. You are provided with a pre-installed package customized to your requirements, and you only have to pay accordingly.
Value Basic computing IaaS top This is essentially a complete package of services.
Technical difficulties Technical knowledge required You have been given a basic configuration, but domain knowledge is still needed. No need to bother with technical details. The SaaS provider provides everything.
What works Virtual machines, storage, servers, network, load balancers, etc. Runtime environments (like java runtime), databases (like mySQL, Oracle), web servers (like tomcat, etc.) Applications like email services (Gmail, Yahoo mail, etc.), social interaction sites (Facebook, etc.)
Count of popularity Popularly among highly skilled developers, researchers who need individual customization according to their requirements or field of study Most popular among developers as they can focus on developing their applications or scripts. They don’t need to worry about traffic loading or server management, etc. Most popular among ordinary consumers or companies that use software such as email, file sharing, social networks, as they don’t need to worry about technical details


Figure 3: Summary of Key Cloud Offers | Image courtesy of Amir at Blog Specia







3. Google Cloud Platform Computing Package



Having looked at typical offers of cloud providers in section 2, we can compare them with offers of Google Cloud.







3.1 Google Compute Engine (GCE) - IaaS









Figure 4: Google Compute Engine (GCE) Icon







GCE is an IaaS offer from Google. With GCE, you can freely create virtual machines, allocate processor and memory resources, choose the type of storage, for example, SSD or HDD, as well as the amount of memory. It is almost the same as if you created your own computer / workstation and did all the details of its work.







In GCE, you can choose from micro instances with 0.3-core processors and 1 GB of RAM to 96-core monsters with more than 300 GB of RAM. You can also create custom size virtual machines for your workloads. For those who are interested, these are virtual machines that you can assemble.







Types of machines | Compute Engine Documentation | Google cloud







3.2. Google Kubernetes Engine (GKE) - (Caas / Kaas)









Figure 5: Google Kubernetes Engine (GKE) Icon







GKE is GCP's unique computing offering, which is an abstraction of the Compute Engine. More generally, GKE can be categorized as Container as a Service (CaaS), sometimes called Kubernetes as a Service (KaaS), which allows customers to easily launch their Docker containers in a fully managed Kubernetes environment. For those who are not familiar with containers, containers help to formulate services / applications in a modular way, so different containers can contain different services, for example, one container can host the interface of your web application, and the other can contain its server part. Kubernetes automates, coordinates, manages and deploys your containers. More info here.







Google Kubernetes Engine | Google cloud







3.3 Google App Engine (GAE) - (PaaS)









Figure 6: Google App Engine (GAE) Icon







As mentioned in Section 2.2, PaaS is higher than IaaS, and in the case of GCP it can also be seen as a sentence over GKE. GAE is a specialized Google PaaS, and how they best describe themselves is "carry your code, and we will take care of the rest."







This ensures that customers using GAE do not have to deal with basic hardware / middleware, and can already have a pre-configured platform ready to work; all they need to do is provide the code necessary to run it.







GAE automatically processes the scaling to satisfy the load and demand from users, which means that if your website selling flowers suddenly reaches a peak because Valentine's Day is approaching, GAE will process scaling of the underlying infrastructure to meet demand and ensure that Your website will not fall due to increased demand. This means that you are paying exactly for the resources that your application currently requires.







GAE uses Kubernetes or its built-in version to handle all this so you don't have to worry about it. GAE is best for companies that are not interested in the underlying infrastructure and only care that their application is available in the best possible way.







In my opinion, GAE is the best place to start if you are a developer with a great idea, but don’t want to do the chores of server setup, load balancing and all other time-consuming devops / SRE work. Over time, you could try GKE and GCE, but this is just my opinion.







Disclaimer : AppEngine is used for web applications, not mobile applications.







For your reference : App Engine - Create scalable web and mobile backends in any language | Google cloud







3.4 Google Cloud Functions - (FaaS)









Figure 7: Google Cloud Functions (GCF) Icon







I hope you noticed the trend by analyzing the previous sentences. The higher you climb the ladder of GCP computing solutions, the less you need to worry about basic technologies. This pyramid ends with the smallest unit of calculation possible, a function, as shown in section 1.







GCF is a relatively new GCP offering that is still in beta testing (at the time of this writing). Cloud functions allow certain functions written by a developer to be triggered by an event.







They are event driven and underlie the buzzword serverless, meaning they don’t know the servers. Cloud functions are very simple and have many different uses that require event-driven thinking. For example, every time a new user logs in, a cloud function may be launched to alert developers.







In the factory, when a certain sensor reaches a certain value, it can launch a cloud function that performs some processing of information, or notifies some maintenance personnel, etc.







Cloud Functions - Event Driven Server Computing | Google cloud







Conclusion



In this article, we talked about various cloud offerings, such as IaaS, PaaS, etc., and how Google's computing stack implements these different levels. We have seen that levels of abstraction when moving from one service category to another, such as IaaS in Paas, require less knowledge of the underlying.







For the business, this provides critical flexibility that not only meets its operational goals, but also satisfies other key areas such as security and cost. Summarizing:







Compute Engine - allows you to create your own virtual machine, allocating certain hardware resources, for example, RAM, processor, memory. It is also quite practical and low-level.







The Kubernetes Engine is a step higher than the Compute Engine, which allows you to use Kubernetes and containers to manage your application, allowing you to scale it if necessary.







The App Engine is a step higher than the Kubernetes Engine, allowing you to focus only on your code, while Google provides all the requirements of the underlying platform.







Cloud-Functions is the pinnacle of the computing pyramid, allowing you to write a simple function that, when launched, uses the entire basic infrastructure to calculate and return the result.







Thanks for your attention!



Twitter: @martinomburajr








All Articles