Hello Google Fans,
Sometimes it is a complex task to determine which compute type on Google Cloud should be used for your projects. Google Cloud has different types of compute resources and each of them has different benefits and use cases. It is very important to understand fundamental characteristics of them and selecting appropriate one.
Compute Engine is one of the core compute offering of GCP. It is a service that manages your virtual machines in Google Cloud. So, this means that it provides you an Iaas Compute Environment in Google Ecosystem. You can deploy your virtual machines just in minutes. You only need to provide a name, select a pre-defined or custom instance resources (vCPU, vMemory, vDisk) and that’s all. Compute Engine will deploy your super-fast VM just in minutes. Compute Engine also responsibles to manage your virtual machines’ lifecycle, which includes starting, stopping, restarting, scaling, moving, health checking and more.
Don’t ForgetCompute Engine only manages your VMs’ lifecycle in Google Ecosystem. Because of it is an IaaS offering, you still responsible to maintain your OS level operation and secure your own environment for VMs.
VMs are created with a default VPC (Virtual Private Cloud) and you can customize your VPC based on your requirements.
Also, if you want to manage your VM Nodes as a group, you can use Instance Group feature of Compute Engine.
Google Kubernetes Engine (GKE)
Google Kubernetes Engine is a very powerful and easy to use container orchectration manager. It allows you do building kubernetes clusters, deploying pods and containers. You can easily scale your deployments, for instance you can scale from 1 to 3 pods just in minutes. Also, it supports autoscaling, so based your your workloads it can automagically scale out or scale in.
GKE creates its clusters using VMs and creates pods on them to run containers. You don’t need to worry about deployed VMs, because you are not resposible to manage them. You can only focus to your kubernetes clusters and your containers.
GKE provides services for your pods and containers to expose them to the outside world. You can create virtual load balancer for your kubernetes cluster and it will manage rest of the operation. It will give you an IP address and you can reach your deployment from the internet in seconds.
What if deployment scales behind the Load Balancer?If deployment scales behind the load balancer service, it doesn’t require any specific action. GKE will handle all management tasks and it will add or remove your new pods on load balancer service.
App Engine is the Serverless PaaS offering of GCP. You don’t need to deploy any VMs, install runtime libraries or prepare your environment to support your application. You can only focus to your application and Google will do all of the rest.
What is serverless? Don’t we have any server?Serverless means you don’t need to manage any server while running your applications. Of course, your application still works on servers and using storage, network and other facilities. However, it is not your job to manage underlaying environment.
Compute resources, storage and network services are managed by Google for App Engine service. This provides you some great benefits to avoid any complex infra management tasks and time wasting. You just create an App Engine instance and deploy your application on it. You application will be live within minutes.
App Engine has 2 different instance types. These are App Engine Standard and App Engine Flexible.
App Engine Standard vs Flexible
|Supported Language||Python, Java, Node.js, PHP, Ruby, Go||Any languge with docker image|
|Quota||Free Daily Quota||No free quota|
|Writing to Disk||Temporary for specific languages||Temporary|
|Related Services||Free Daily Network Egress, Cloud Storage and other services.||No free quota|
App Engine Standard provides runtime libraries for 6 different programming languages. It also offers daily free usage with its related services, like network egress. While using App Engine Standard instances you are not allowed to write data to disk. Because it is just a PaaS instance to run your application.
App Engine Flexible is a little bit different. You can run your applications on App Engine Flexible for any language but only if you provide the container image of your application. App Engine Flexible gives a container based runtime and you can easily deploy your containers on App Engine without thinking any management task that you are responsible when using GKE. Google handles all of the management operation of App Engine instances.
Cloud Run and VMware
Google Cloud offers Cloud Run to run your containers on a serverless service. You can deploy your containers to Cloud Run without managing a Kubernetes Cluster.
Google also offers VMware environment for your projects and you can deploy and manage your own VMware infrastructure.
ImportantAltough, Google Cloud offers free tier for some of its components, it is very important the understand pricing model before provision any resource on the environment. Because of pay-as-you model, you can incur to high billings. Also, it highly recommended to create an alert budget to be informed when your budget reaches to a limit.
Read more on Google Cloud Platform Docs