GCP: Breakdown of the Google Cloud Platform Computing Stack

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

Are you interested in developing in this direction? Watch the recording of a professional master class "AWS EC2 Service", which was held by Egor Zuev - TeamLead at InBit and the author of the educational program at OTUS.

GCP: Breakdown of the Google Cloud Platform Computing Stack

The Google Cloud Platform (GCP) offers many services, and in particular the compute stack that 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 about their features and what makes them unique in relation to each other. This article is intended for those who are new to cloud concepts, in particular cloud services and GCP.

GCP: Breakdown of the Google Cloud Platform Computing Stack

1. Computing stack

The compute stack can be thought of as a layered abstraction over what a computer system can provide. This stack ascends (moves up) from "bare iron" (bare metal) referring to the actual hardware components of the computer, down to the functions (functions), which is the smallest unit of calculation. What is important to note about the stack is that services are aggregated as they move up the stack, such as the "apps" section (apps) shown in Figure 1 below should contain all the basic container components (containers), virtual machines (virtual machines) and iron. In the same way, the virtual machine component must contain the hardware inside to work.

GCP: Breakdown of the Google Cloud Platform Computing Stack

Figure 1: Computing stack | Image sourced from Google Cloud

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

- If you are familiar with cloud services, go to section 3to view the GCP equivalent
- If you only want 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 like 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 state that there are 3 main "as a service" (as a Service) offerings that cloud providers almost always provide.

These are IaaS, PaaS, and SaaS, which stand for Infrastructure as a Service, Platform as a Service, and Software as a Service, respectively. It is important to visualize cloud services as service layers. This means that as you move up or down from level to level, you, as a customer, are traversing various service options that are either added to or removed from the main offering. It is best to think of this as a pyramid, as shown in Figure 2.
GCP: Breakdown of the Google Cloud Platform Computing Stack

Figure 2: AaS Pyramid | Image sourced from Ruby Garage

2.1 Infrastructure as a Service (IaaS)

This is the lowest tier a cloud service provider can offer and includes a cloud provider providing the bare infrastructure, including middleware, network cables, processors, GPUs, RAM, external storage, servers, and base operating system images. e.g. Debian Linux, CentOS, Windows, etc.

If you order an offer from an IaaS cloud service provider, then this is what you should expect to get. It's up to you, as the customer, to assemble these parts to run your business. The extent of what you have to work with may vary from vendor to vendor, but generally you just get the hardware and OS and you do the rest. 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 networking, load balancing, or caring about what 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 only includes a cloud service provider offering a specific platform on which users can build applications. It is an abstraction over IaaS, meaning that the cloud provider takes care of all the details of the types of CPU, memory, RAM, storage, networking, etc. As shown in Figure 2, you as a customer have little control over the actual platform because the the provider handles all the details of the infrastructure for you. You request the chosen platform and build the project on it. An example of a PaaS is Heroku.

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

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 mainly available through websites like Gmail, Google Docs, Dropbox, etc. As for Google Cloud, there are several offerings outside of their computing stack that are SaaS. These include Data Studio, Big Query, etc.

2.4 Summary of cloud services

Components
IaaS
PaaS
SaaS

What you get
You get the infrastructure and pay accordingly. The freedom to use or install any software, operating system or combination thereof.
Here you get what you ask for. Software, hardware, OS, web environment. You get a ready-to-use platform and pay accordingly.
Here you don't have to worry about anything. You are provided with a pre-installed package customized to your requirements, and you only have to pay accordingly.

Value
Basic level of computing
Top IaaS
It is essentially a complete package of services.

Technical difficulties
Technical knowledge required
You are given a basic configuration, but domain knowledge is still required.
No need to bother with technical details. The SaaS provider provides everything.

What does it work with
Virtual machines, storage, servers, network, load balancers, etc.
Runtimes (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.)

Popularity Graph
Popular with highly skilled developers, researchers who require customization to suit their requirements or area of ​​research
Most popular with developers as they can focus on developing their applications or scripts. They don't have to worry about loading traffic or managing the server, etc.
Most popular among general consumers or companies that use software such as email, file sharing, social networks, as they don't have to worry about technical details.

Figure 3: Summary of major cloud offerings | Image courtesy Amir at Blog Specia

3. Computing package Google Cloud Platform

Having looked at typical cloud provider offerings in Section 2, we can compare them to Google Cloud offerings.

3.1 Google Compute Engine (GCE) - IaaS

GCP: Breakdown of the Google Cloud Platform Computing Stack

Figure 4: Google Compute Engine (GCE) Icon

GCE is an IaaS offering from Google. With GCE, you can freely create virtual machines, allocate CPU and memory resources, choose the type of storage such as SSD or HDD, and the amount of memory. It's almost like you build your own computer/workstation and take care of all the details of how it works.

In GCE, you can choose from micro instances with 0,3-core processors and 1 GB of RAM to 96-core monsters with over 300 GB of RAM. You can also create custom sized virtual machines for your workloads. For those who are interested, these are virtual machines that you can build.

Machine types | Compute Engine Documentation | Google Cloud

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

GCP: Breakdown of the Google Cloud Platform Computing Stack

Figure 5: Google Kubernetes Engine (GKE) Icon

GKE is a unique computing offering from GCP that is an abstraction over the Compute Engine. More generally, GKE can be categorized as a Container as a Service (CaaS), sometimes referred to as Kubernetes as a Service (KaaS), which allows customers to easily run their Docker containers in a fully managed Kubernetes environment. For those unfamiliar with containers, containers help modularize services/applications, so different containers can contain different services, for example, one container can host your web application's interface and another can contain its back-end. Kubernetes automates, coordinates, manages, and deploys your containers. More information here.

Google Kubernetes Engine | Google Cloud

3.3 Google App Engine (GAE) - (PaaS)

GCP: Breakdown of the Google Cloud Platform Computing Stack

Figure 6: Google App Engine (GAE) Icon

As mentioned in section 2.2, PaaS sits above IaaS, and in the case of GCP, it can also be seen as a proposal above GKE. GAE is a specialized Google PaaS, and as they best describe themselves, "bring your code, we'll take care of the rest."

This ensures that customers using GAE don't have to deal with underlying hardware/middleware, and can already have a pre-configured platform ready to go; all they have to do is provide the code needed to run it.

GAE automatically handles scaling to meet user load and demand, which means if your flower site suddenly peaks because Valentine's Day is coming up, GAE will handle scaling the underlying infrastructure to meet demand and ensure that your website won't go down due to increased demand. This means that you pay for exactly the resources that your application needs at the moment.

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

In my opinion, GAE is the best place to start if you're a developer with a great idea but don't want to deal with the chore of setting up servers, load balancing, and all the other devops/SRE time consuming work. Over time, you could try GKE and GCE, but that's just my opinion.

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

For review: App Engine - Build scalable web and mobile backends in any language | Google Cloud

3.4 Google Cloud Functions - (FaaS)

GCP: Breakdown of the Google Cloud Platform Computing Stack

Figure 7: Google Cloud Functions (GCF) Icon

I hope you have noticed a trend by analyzing the previous proposals. The higher you climb the GCP Computing ladder, the less you need to worry about the underlying technology. This pyramid culminates in the smallest possible unit of computation, the function, as shown in Section 1.

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

They are event-driven and are at the heart of the buzzword "serverless" meaning they don't know servers. Cloud Functions are very simple and have many different uses that require event-driven thinking. For example, every time a new user registers, a cloud function can be triggered to alert developers.

In a factory, when a certain sensor reaches a certain value, it can trigger a cloud function that does some information processing, or notifies some maintenance personnel, etc.

Cloud Functions - Event Driven Server Computing | Google Cloud

Conclusion

In this article, we talked about the different cloud offerings like IaaS, PaaS, etc. and how the Google Compute stack implements these different layers. We have seen that abstraction layers when moving from one service category to another, such as IaaS to 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 by allocating certain hardware resources, such as RAM, processor, memory. It is also quite practical and low-level.

Kubernetes Engine is a step up from Compute Engine, which allows you to use Kubernetes and containers to manage your application, allowing you to scale it as needed.

App Engine is a step up from 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 computational pyramid, allowing you to write a simple function that, when run, uses the entire underlying infrastructure to compute and return a result.

Thank you for attention!

Twitter: @martinomburajr

Source: habr.com

Add a comment