3. Compute Engine
● Compute Engine is an IaaS provided by GCP,
with good amount of flexibility to create VM
instances with Linux or windows OS.
● IaaS services only provide the lowest level
infrastructure possible e.g. Server machines,
networking, disks etc.
● Users will have to manage VM creation and
configuration, network management, OS
installation.
● Think of it as, users are provided with nice UI
to order gcp to create an infrastructure. I
need 2 VMs of this configurations, with x
amount of disk space, Ram and CPU power.
● Pros: Once the VMs are created, these are
basically blank machines which makes them
most flexible service available in cloud.
● Install any OS you want configure the
platform with any language engine and third
party software required.
● GCP will provide monitoring of resource usage
such as CPU, Disk, memory etc.
● Cons: Users have to configure and manage
everything including OS, security patches,
networking with other VMs etc.
● All the difficulties, that are present in
managing your own server at software level.
● Scaling has to be managed manually.
4. Container Engine
● Cluster of google managed VM instances with
auto scaling. (configurable)
● Hosts docker images with pod configurations
managed by Kubernetes Engine.
● Supports all the third party softwares hosted
in dockerhub.io
● Allows dev teams to deploy applications in
Python, Java, Node JS etc. Without worrying
about VM creation and configuration.
Instance allocation and scaling.*
● Container nodes and OS platforms are
managed by Google.*
● Pros: Reliable hosting of services as
Kubernetes Engine takes care of scaling,
restart of PODs.
● Health checks, auto repair of nodes, auto
upgrades, resource limit configuration etc.
● Nodes run on lightweight container optimized
OS.
● Private container registry.
● Efficient, reliable and scalable.
● Best suited for microservices architecture.
● Cons: Learning curve for creation and configuration of
docker images, pods, services.
5. Google App Engine ● AppEngine is a PaaS service provided by GCP, with
inbuilt monitoring tools, easy UI interface and CLI tools
to deploy and manage different versions of project.
● Applications running in AppEngine platform will have
access to all GCP resources and APIs such as
DataStore, Storage Buckets and other SaaS APIs such
and Maps, RDBMS provided inside GCP.
● AppEngine understand the application better and has
dependency hooks to analyse the application
behaviour in certain cases.
● For example GCP built in monitoring tools such as
stack driver debugging, error reporting, logging, API
explorer works out of the box without any
configuration from the user side.
6. Some more text...
Pros:
1. Hides VM, Network, OS and
Platform level configurations
from users.
2. Easy for developers as they
only have to worry about
there own code base, instead
of thinking about platform
configuration and scaling
etc.
3. Monitoring tools, auto clean
ups and restart, platform
upgrades, security patches
are readily available by PaaS
provider.
Cons:
1. Restriction on platforms, less
flexible, no ssh access to
instances. Third party
software installation in
instances are not possible.
● Environment categories
○ Standard
○ Flexible
● Supported programming languages
○ Standard Env: Python 2.7, Java 7, Java 8 (with certain
restrictions), PHP 5.5, Go 1.8, 1.6
○ Flexible Env: Python, Java, Node.js, Go, Ruby, PHP, or
.NET
● Instance Categories:
○ Frontend instances: (F1, F2, F4, F8) - Geared towards
real time tasks, requests processing is not allowed for
more than 30 secs.
○ Backend instances: (B1, B2, B4, B8) - Geared towards
non real time long running tasks, use cases like crons,
report generation, data validation that typically takes
more time to process. Auto scaling is not possible.
8. Cloud Functions
(FaaS)
● Compose applications from lightweight, loosely coupled bits of
logic that are quick to build and that scale instantly. Your
functions can be event-driven or invoked directly over HTTP/S.
● Cloud functions are serverless, listens to triggers and events
emitted by other cloud services, such as firebase data changes,
storage bucket writes, analytics events, webhooks, firebase
push events etc.
● Best use cases will be event driven async functionalities. (e.g.
when firebase job status changes, function-1 will send message
to LG, function-2 will update bunch of datastore data,
function-3 work on pulsing logic and so on.)
Pros:
● Serverless
● Reliability, scalability
and availability of
individual functions.
● Event driven
architecture
● Developer productivity
● Sub millisecond billing
Cons:
● Latency in awaking the
functions that are not used
frequently.
● Cloud functions only
support functions written in
Node JS as of now.
● Can only integrate with
third-party services
available in cloud.