Services Flashcards

1
Q

Cloud Logging

other modules

A

Cloud Logging, which is a real-time log-management system with storage, search, analysis, and monitoring support. Cloud Logging automatically collects log data from Google Cloud resources
View and analyze your log data by using the Google Cloud console, either with the Logs Explorer or the Log Analytics pages
When you want to troubleshoot and analyze the performance of your services and applications, we recommend that you use the Logs Explorer
When you’re interested in performing aggregate operations on your logs, for example, to compute the average latency for HTTP requests issued to a specific URL over time, use the Log Analytics interface
You can configure Cloud Logging to notify you when certain kinds of events occur in your logs
You don’t have to configure the location where logs are stored
- Cloud Logging bucket
- BigQuery dataset
- Cloud Storage bucket
- Pub/Sub topic
- Google Cloud project

https://cloud.google.com/logging/docs/overview

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Dedicated Interconnect

networking

A

Dedicated Interconnect provides direct physical connections between your on-premises network and Google’s network. Dedicated Interconnect enables you to transfer large amounts of data between networks
Your network must physically meet Google’s network in a colocation facility. You must provide your own routing equipment
When you create a VLAN attachment, you associate it with a Cloud Router. This Cloud Router creates a BGP session for the VLAN attachment and its corresponding on-premises peer router. The Cloud Router receives the routes that your on-premises router advertises. These routes are added as custom dynamic routes in your VPC network. The Cloud Router also advertises routes for Google Cloud resources to the on-premises peer router.
10-Gbps circuits, single mode fiber, 10GBASE-LR (1310 nm), or 100-Gbps circuits, single mode fiber, 100GBASE-LR4

https://cloud.google.com/network-connectivity/docs/interconnect/concepts/dedicated-overview

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Cloud Data Loss Prevention

other module

A

discover, classify, and protect your most sensitive data.
Sensitive Data Protection includes data discovery, inspection, de-identification, data risk analysis, and the DLP API.
Automated sensitive data discovery and classification
Sensitive data intelligence for security assessments
De-identification, masking, tokenization, and bucketing
Powerful and flexible masking of your AI/ML workloads

https://cloud.google.com/security/products/dlp?hl=en

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Cloud Shell

other modules

A

Cloud Shell provisions a Compute Engine virtual machine running a Debian-based Linux operating system for your temporary use. This virtual machine is owned and managed by Google Cloud, so will not appear within any of your Google Cloud projects.
Cloud Shell instances are provisioned on a per-user, per-session basis. The instance persists while your Cloud Shell session is active; after an hour of inactivity, your session terminates and its VM is discarded
Persistent disk storage :
Cloud Shell provisions 5 GB of free persistent disk storage mounted as your $HOME directory on the virtual machine instance. This storage is on a per-user basis and is available across projects. Unlike the instance itself, this storage does not time out on inactivity. All files you store in your home directory, including installed software, scripts and user configuration files like .bashrc and .vimrc, persist between sessions. Your $HOME directory is private to you and can’t be accessed by other users.
Root user :
When you set up a Cloud Shell session, you get a regular Unix user account with a username based on your email address. With this access, you have full root privileges on your allocated VM and can even run sudo commands, if you need to.

https://cloud.google.com/shell/docs/how-cloud-shell-works

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Cloud VPN

Networking

A

Cloud VPN securely extends your peer network to your Virtual Private Cloud (VPC) network through an IPsec VPN connection. The VPN connection encrypts traffic traveling between the networks, with one VPN gateway handling encryption and the other handling decryption. This process protects your data during transmission. You can also connect two VPC networks together by connecting two Cloud VPN instances. You cannot use Cloud VPN to route traffic to the public internet; it is designed for secure communication between private networks.
1 Gbps and 3 Gbps of bandwidth.
Google Cloud offers two types of Cloud VPN gateways:
HA VPN is a high-availability (HA) Cloud VPN solution that lets you securely connect your on-premises network to your VPC network through an IPsec VPN connection. Based on the topology and configuration, HA VPN can provide an SLA of 99.99% or 99.9% service availability.
Classic VPN gateways have a single interface, a single external IP address, and support tunnels that use static routing (policy based or route based) Classic VPN gateways provide an SLA of 99.9% service availability.

https://cloud.google.com/network-connectivity/docs/vpn/concepts/overview

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Sustained use discounts

A

Compute Engine offers sustained use discounts (SUDs) on resources that are used for more than 25% of a billing month and are not receiving any other discounts. Whenever you use an applicable resource for more than a fourth of a billing month, you automatically receive a discount for every incremental hour that you continue to use that resource. The discount increases incrementally with usage and you can get up to a 30% net discount off of the resource cost for virtual machine (VM) instances that run the entire month.
Limitations

Sustained use discounts have the following limitations:

Only Self-serve (or Online) Cloud Billing accounts are eligible for receiving SUDs.

SUDs don't apply to the resource usage that is already covered by committed use discounts (CUDs).

SUDs don't apply to VMs created using the App Engine (standard and flexible) environments and Dataflow. Only VMs created by Google Kubernetes Engine and Compute Engine are eligible for SUDs.

Sustained use discounts apply only to the machine series listed in the Eligible resources and discount percentages section.

Eligible resources and discount percentages

The following resources are eligible to receive sustained use discounts:

The vCPUs and memory for general-purpose N1, N2, and N2D custom and predefined machine types
The vCPUs and memory for compute-optimized C2 machine types
The vCPUs and memory for memory-optimized M1 and M2 machine types
The vCPUs and memory for sole-tenant nodes
The premium cost for sole-tenant nodes, even if the vCPUs and memory in those nodes are covered by CUDs
All GPU devices with the exception of NVIDIA H100, A100, and L4 GPU types.

https://cloud.google.com/compute/docs/sustained-use-discounts

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Resource-based committed use discounts

other modules

A

Compute Engine provides resource-based committed use discounts (CUDs) for your predictable workloads to help you cut costs on resources that you need. You can purchase and renew resource-based committed use contracts or commitments in return for heavily discounted prices for VM usage.

Resource-based commitments are ideal for predictable and steady state usage. These commitments require no upfront costs. Compute Engine lets you purchase the following categories of resource-based commitments:

Hardware commitments: You can purchase hardware commitments for a specific machine series and commit to resources available for that machine series, such as vCPUs, memory, GPUs, Local SSD disks, and sole tenant nodes. For more information, see Purchase commitments without attached reservations and Purchase commitments with attached reservations.
Software license commitments: You can purchase license commitments for applicable premium operating system (OS) licenses. For more information, see Purchase commitments for licenses.

https://cloud.google.com/compute/docs/instances/signing-up-committed-use-discounts

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

PCI DSS

A

The PCI Security Standards Council is a global forum for the ongoing development, enhancement, storage, dissemination, and implementation of security standards for account data protection. The Standards Council was established by the major credit card associations (Visa, MasterCard, American Express, Discover, JCB) as a separate organization to define appropriate practices that merchants and service providers should follow to protect cardholder data. It is this council of companies that created the Payment Card Industry (PCI) Data Security Standards (DSS).

https://cloud.google.com/security/compliance/pci-dss?hl=en
https://cloud.google.com/architecture/pci-dss-and-gke-guide?hl=en
https://cloud.google.com/architecture/limiting-compliance-scope-pci-environments-google-cloud
https://cloud.google.com/architecture/gke-pci-dss-blueprint

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

SLIs, SLOs, SLAs

A

It’s very important that you understand the level of service that you offer
your users. It’s almost impossible to manage a service well if you don’t
know what is important for that service and how to measure its behavior. To
that end, it’s important that you understand service level indicators (SLIs),
service level objectives (SLOs), and service level agreements (SLAs). You
may not see a question on the exam that asks you to define SLIs and SLOs,
but you may be presented with a data point or a requirement indicating that
the business is looking to maintain or achieve a higher SLA with a new
architecture. SLA seems to be a broad term that the industry uses to
represent a variety of meanings, so let’s break down these three terms here.
A service level indicator is a quantitative measure of a chosen
characteristic of the level of service that is provided from a product or
service. If the characteristic is availability, the SLI could be a percentage of
time, often expressed in the number of “nines” (for example, 99.99 percent
is “four nines”). Remember that SLA does not mean service level
availability—it means service level agreement, even though the availability
is oftentimes expressed in the agreement. The actual number itself, or the
range of numbers, is the service level objective. If we’re expecting 99.999
percent availability for a system, “five nines” is our objective and the
availability is our measure. What’s left if we don’t meet these requirements
is described in our service level agreement. The SLA is a contract that
describes the expectations and consequences of meeting or missing an SLO.
For example, if Google Cloud Storage doesn’t meet its availability targets
of 99.95 percent (for the storage class—there are other SLOs for other
storage classes), customers are eligible to receive financial credits of a
percentage of the monthly bill for the service.
In short, the SLI is the indicator, the measure itself—availability, error
rate, and so on. The SLO is the objective, the numerical value that describes
the expectation of the measure—99.99 percent availability, 2 to 5 percent
error rate, and so on. And the SLA is the agreement, the contracted
expectations of using the product or service and what happens if the
objectives aren’t met. Remember how important reliability is to a successful
product and business, and think about how you can use these acronyms
effectively in your business meetings.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Resumable uploads

A

This page discusses resumable uploads in Cloud Storage. Resumable uploads are the recommended method for uploading large files, because you don’t have to restart them from the beginning if there is a network failure while the upload is underway.
A resumable upload lets you resume data transfer operations to Cloud Storage after a communication failure has interrupted the flow of data. Resumable uploads work by sending multiple requests, each of which contains a portion of the object you’re uploading. This is different from a single-request upload, which contains all of the object’s data in a single request and must restart from the beginning if it fails part way through.

Use a resumable upload if you are uploading large files or uploading over a slow connection. For example file size cutoffs for using resumable uploads, see upload size considerations.

A resumable upload must be completed within a week of being initiated, but can be cancelled at any time.

Only a completed resumable upload appears in your bucket and, if applicable, replaces an existing object with the same name.

    The creation time for the object is based on when the upload completes.

    Object metadata set by the user is specified in the initial request. This metadata is applied to the object once the upload completes.

    The JSON API also supports setting custom metadata in the final request if you include headers prefixed with X-Goog-Meta- in that request.

A completed resumable upload is considered one Class A operation.

https://cloud.google.com/storage/docs/resumable-uploads

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Signed URLs

A

A signed URL is a URL that provides limited permission and time to make a request. Signed URLs contain authentication information in their query string, allowing users without credentials to perform specific actions on a resource.
In some scenarios, you might not want to require your users to have a Google account in order to access Cloud Storage, but you still want to control access using your application-specific logic. The typical way to address this use case is to provide a signed URL to a user, which gives the user read, write, or delete access to that resource for a limited time. You specify an expiration time when you create the signed URL. Anyone who knows the URL can access the resource until the expiration time for the URL is reached or the key used to sign the URL is rotated.

The most common uses for signed URLs are uploads and downloads, because in such requests, object data moves between requesters and Cloud Storage. In most other cases, such as copying objects, composing objects, deleting objects, or editing metadata, creating a signed URL and giving it to someone to use is an unnecessary extra step. Instead, you should consider a design in which the entity responsible for creating the signed URL directly makes the desired request to Cloud Storage.

https://cloud.google.com/storage/docs/access-control/signed-urls

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Identity-Aware Proxy

A

IAP lets you establish a central authorization layer for applications accessed by HTTPS, so you can use an application-level access control model instead of relying on network-level firewalls.

IAP policies scale across your organization. You can define access policies centrally and apply them to all of your applications and resources. When you assign a dedicated team to create and enforce policies, you protect your project from incorrect policy definition or implementation in any application.

How IAP works
When an application or resource is protected by IAP, it can only be accessed through the proxy by principals, also known as users, who have the correct Identity and Access Management (IAM) role. When you grant a user access to an application or resource by IAP, they’re subject to the fine-grained access controls implemented by the product in use without requiring a VPN. When a user tries to access an IAP-secured resource, IAP performs authentication and authorization checks.

https://cloud.google.com/iap/docs/concepts-overview

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

GKE cluster architecture

A

A Kubernetes cluster consists of a control plane plus a set of worker machines, called nodes, that run containerized applications. Every cluster needs at least one worker node in order to run Pods.

The worker node(s) host the Pods that are the components of the application workload. The control plane manages the worker nodes and the Pods in the cluster. In production environments, the control plane usually runs across multiple computers and a cluster usually runs multiple nodes, providing fault-tolerance and high availability.

The control plane manages what runs on all of the cluster’s nodes. The control plane schedules workloads and manages the workloads’ lifecycle, scaling, and upgrades. The control plane also manages network and storage resources for those workloads. The control plane and nodes communicate with each other using Kubernetes APIs.

https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture

https://kubernetes.io/docs/concepts/architecture/

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

VPN topologies

A

Sample Classic VPN topology
The following diagram shows a sample VPN connection between a Classic VPN gateway and your peer VPN gateway.

Redundancy and failover options
Option 1: Move to HA VPN
If your peer VPN gateway supports BGP, the recommended option is to move to a highly available (HA) Cloud VPN gateway.
Option 2: Use a second peer VPN gateway
For Classic VPN, if your on-premises side is hardware based, having a second peer VPN gateway provides redundancy and failover on that side of the connection. A second physical gateway lets you take one of the gateways offline for software upgrades or other scheduled maintenance. It also protects you in case of an outright failure in one of the devices.

Increased throughput and load balancing options
There are three options for scaling a Cloud VPN configuration:
Option 1: Scale the on-premises VPN gateway.
Option 2: Scale the Cloud VPN gateway. If your on-premises VPN gateway’s throughput capabilities are higher, and you want to scale higher throughput from the Cloud VPN gateway, you can set up a second Cloud VPN gateway.
Option 3: Scale both the on-premises VPN gateway and the Cloud VPN gateway.

https://cloud.google.com/network-connectivity/docs/vpn/concepts/overview
https://cloud.google.com/network-connectivity/docs/vpn/concepts/classic-topologies

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Bigquery Manage tables

A

Update table properties:
Expiration time
Description
Schema definition
Labels
Default rounding mode
Rename (copy) a table
Copy a table
Delete a table
Restore a deleted table

https://cloud.google.com/bigquery/docs/managing-tables#updating_a_tables_expiration_time

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Bigquery partition expiration

A

Set the partition expiration

When you create a table partitioned by ingestion time or time-unit column, you can specify a partition expiration. This setting specifies how long BigQuery keeps the data in each partition. The setting applies to all partitions in the table, but is calculated independently for each partition based on the partition time.

A partition’s expiration time is calculated from the partition boundary in UTC. For example, with daily partitioning, the partition boundary is at midnight (00:00:00 UTC). If the table’s partition expiration is 6 hours, then each partition expires at 06:00:00 UTC the following day. When a partition expires, BigQuery deletes the data in that partition.

You can also specify a default partition expiration at the dataset level. If you set the partition expiration on a table, then the value overrides the default partition expiration. If you don’t specify any partition expiration (on the table or dataset), then partitions never expire.

https://cloud.google.com/bigquery/docs/partitioned-tables

https://cloud.google.com/bigquery/docs/managing-partitioned-tables#partition-expiration

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Bigquery clustered tables

A

Clustered tables in BigQuery are tables that have a user-defined column sort order using clustered columns. Clustered tables can improve query performance and reduce query costs.

In BigQuery, a clustered column is a user-defined table property that sorts storage blocks based on the values in the clustered columns. The storage blocks are adaptively sized based on the size of the table. Colocation occurs at the level of the storage blocks, and not at the level of individual rows; for more information on colocation in this context, see Clustering.

A clustered table maintains the sort properties in the context of each operation that modifies it. Queries that filter or aggregate by the clustered columns only scan the relevant blocks based on the clustered columns, instead of the entire table or table partition. As a result, BigQuery might not be able to accurately estimate the bytes to be processed by the query or the query costs, but it attempts to reduce the total bytes at execution.

When you cluster a table using multiple columns, the column order determines which columns take precedence when BigQuery sorts and groups the data into storage blocks, as seen in the following example. Table 1 shows the logical storage block layout of an unclustered table. In comparison, table 2 is only clustered by the Country column, whereas table 3 is clustered by multiple columns, Country and Status.

https://cloud.google.com/bigquery/docs/clustered-tables

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

GKE cluster autoscaling

A

GKE’s cluster autoscaler automatically resizes the number of nodes in a given node pool, based on the demands of your workloads. When demand is low, the cluster autoscaler scales back down to a minimum size that you designate. This can increase the availability of your workloads when you need it, while controlling costs. You don’t need to manually add or remove nodes or over-provision your node pools. Instead, you specify a minimum and maximum size for the node pool, and the rest is automatic.

If resources are deleted or moved when autoscaling your cluster, your workloads might experience transient disruption. For example, if your workload consists of a controller with a single replica, that replica’s Pod might be rescheduled onto a different node if its current node is deleted. Before enabling cluster autoscaler, design your workloads to tolerate potential disruption or ensure that critical Pods are not interrupted.

Cluster autoscaler works per node pool. When you configure a node pool with cluster autoscaler, you specify a minimum and maximum size for the node pool.

Why use horizontal Pod autoscaling

When you first deploy your workload to a Kubernetes cluster, you may not be sure about its resource requirements and how those requirements might change depending on usage patterns, external dependencies, or other factors. Horizontal Pod autoscaling helps to ensure that your workload functions consistently in different situations, and lets you control costs by only paying for extra capacity when you need it.

It’s not always easy to predict the indicators that show whether your workload is under-resourced or under-utilized. The Horizontal Pod Autoscaler can automatically scale the number of Pods in your workload based on one or more metrics of the following types:

Actual resource usage: when a given Pod's CPU or memory usage exceeds a threshold. This can be expressed as a raw value or as a percentage of the amount the Pod requests for that resource.

Custom metrics: based on any metric reported by a Kubernetes object in a cluster, such as the rate of client requests per second or I/O writes per second.

This can be useful if your application is prone to network bottlenecks, rather than CPU or memory.

External metrics: based on a metric from an application or service external to your cluster.

For example, your workload might need more CPU when ingesting a large number of requests from a pipeline such as Pub/Sub. You can create an external metric for the size of the queue, and configure the Horizontal Pod Autoscaler to automatically increase the number of Pods when the queue size reaches a given threshold, and to reduce the number of Pods when the queue size shrinks.

https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-autoscaler

https://cloud.google.com/kubernetes-engine/docs/concepts/horizontalpodautoscaler

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Bigquery roles

A

BigQuery Data Viewer
(roles/bigquery.dataViewer)
When applied to a table or view, this role provides permissions to:
Read data and metadata from the table or view.
This role cannot be applied to individual models or routines.
When applied to a dataset, this role provides permissions to list all of the resources in the dataset (such as tables, views, snapshots, models, and routines) and to read their data and metadata with applicable APIs and in queries.
When applied at the project or organization level, this role can also enumerate all datasets in the project. Additional roles, however, are necessary to allow the running of jobs.
Lowest-level resources where you can grant this role:
Table
View

BigQuery Job User
(roles/bigquery.jobUser)
Provides permissions to run jobs, including queries, within the project.
Lowest-level resources where you can grant this role:
Project

https://cloud.google.com/bigquery/docs/access-control

20
Q

StatefulSet dans GKE

A

StatefulSets represent a set of Pods with unique, persistent identities, and stable hostnames that GKE maintains regardless of where they are scheduled. The state information and other resilient data for any given StatefulSet Pod is maintained in persistent volumes associated with each Pod in the StatefulSet. StatefulSet Pods can be restarted at any time.

StatefulSets are valuable for applications that require one or more of the following.

Stable, unique network identifiers.
Stable, persistent storage.
Ordered, graceful deployment and scaling.
Ordered, automated rolling updates.

https://cloud.google.com/kubernetes-engine/docs/concepts/statefulset

https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

21
Q

Cloud CDN

A

Cloud CDN (Content Delivery Network) uses Google’s global edge network to serve content closer to users, which accelerates your websites and applications.

Cloud CDN works with the global external Application Load Balancer or the classic Application Load Balancer to deliver content to your users. The external Application Load Balancer provides the frontend IP addresses and ports that receive requests and the backends that respond to the requests.

In Cloud CDN, these backends are also called origin servers. Figure 1 illustrates how responses from origin servers that run on virtual machine (VM) instances flow through an external Application Load Balancer before being delivered by Cloud CDN. In this situation, the Google Front End (GFE) comprises Cloud CDN and the external Application Load Balancer.

Cache hit ratio
The cache hit ratio is the percentage of times that a requested object is served from the cache. If the cache hit ratio is 60%, it means that the requested object is served from the cache 60% of the time and must be retrieved from the origin 40% of the time.

For information about how cache keys can affect the cache hit ratio, see Using cache keys. For troubleshooting information, see Cache hit ratio is low.

Cache keys
Each cache entry in a Cloud CDN cache is identified by a cache key. When a request comes into the cache, the cache converts the URI of the request into a cache key, and then compares it with keys of cached entries. If it finds a match, the cache returns the object associated with that key.

For backend services, Cloud CDN defaults to using the complete request URI as the cache key. For example, https://example.com/images/cat.jpg is the complete URI for a particular request for the cat.jpg object. This string is used as the default cache key. Only requests with this exact string match. Requests for http://example.com/images/cat.jpg or https://example.com/images/cat.jpg?user=user1 don’t match.

For backend buckets, the default is for the cache key to consist of the URI without the protocol or host. By default, only query parameters that are known to Cloud Storage are included as part of the cache key (for example, “generation”).

Thus, for a given backend bucket, the following URIs resolve to the same cached object:

http://example.com/images/cat.jpg
https://example.com/images/cat.jpg
https://example.com/images/cat.jpg?user=user1
http://example.com/images/cat.jpg?user=user1
https://example.com/images/cat.jpg?user=user2
https://media.example.com/images/cat.jpg
https://www.example.com/images/cat.jpg

You can change which parts of the URI are used in the cache key. While the filename and path must always be part of the key, you can include or omit any combination of protocol, host, or query string when customizing your cache key. Using cache keys describes how to customize your cache keys.

https://cloud.google.com/cdn/docs/overview

22
Q

Google Cloud Observability

A

Observability is a holistic approach to gathering and analyzing telemetry data in order to understand the state of your environment. Telemetry data is metrics, logs, traces, and other data generated by your applications and the application infrastructure that provide information about application health and performance.

Metrics
Metrics are numeric data about health or performance that you measure at regular intervals over time, such as CPU utilization and request latency. Unexpected changes to a metric might indicate an issue to investigate. Over time, you can also analyze metric patterns to better understand usage patterns and anticipate resource needs.
Logs

A log is a generated record of system or application activity over time. Each log is a collection of time stamped log entries, and each log entry describes an event at a specific point in time.

A log often contains rich, detailed information that helps you understand what happened with a specific part of your application. However, logs don't provide good information about how a change in one component of your application relates to activity in another component. Traces can help to bridge that gap. Traces

Traces represent the path of a request across the parts of your distributed application. A metric or log entry in one application component that triggered an alert notification might be a symptom of a problem that originates in another component. Traces let you follow the flow of a request and examine latency data to help you to identify the root cause of an issue. Other data

You can gain additional insights by analyzing metrics, logs, and traces in the context of other data. For example, a label for the severity of an alert or the customer ID associated with a request in logs provide context that can be useful for troubleshooting and debugging.

Monitoring, debugging, and troubleshooting distributed applications can be difficult because there are many systems and software components involved, often with a mix of open source and commercial software.

Observability tools help you to navigate this complexity by collecting meaningful data and providing features to explore, analyze, and correlate the data. An observable environment helps you to:

Proactively detect issues before they impact your users
Troubleshoot both known and new issues
Debug applications during development
Plan for and understand the impacts of changes to your applications
Explore data to discover new insights

In short, an observable environment helps you to maintain application reliability. An application is reliable when it meets your current objectives for availability and resilience to failures.

Install the Ops Agent during VM creation
This document describes how the Google Cloud console can automatically install the Ops Agent for you when you create a VM instance. During the installation process, the Compute Engine VM Manager creates an Ops Agent OS policy that installs the agent and reinstalls it when necessary. The VM Manager helps you get the Ops Agent running on your VM and ensures that the agent is always installed.

https://cloud.google.com/stackdriver/docs

https://cloud.google.com/stackdriver/docs/solutions/agents/ops-agent/install-agent-vm-creation

23
Q

Load Balancing in Kubernetes Engine

A

Load balancers distribute traffic and control access to a cluster. Services in Kubernetes
Engine can use external load balancers, internal load balancers, and HTTP(S) load balancers.
External load balancers are used when a service needs to be reachable from outside the
cluster and outside the VPC. GKE will provision a network load balancer for the service and
configure firewall rules to allow connections to the service from outside the cluster.
Internal load balancers are used when a service needs to be reachable from within the
cluster. In this case an internal TCP/UDP load balancer is used. The load balancer uses an IP
address from the VPC subnet instead of an external IP address.
Container native load balancing makes use of network endpoint groups (NEGs). The
endpoints consist of an IP address and a port that specify a pod and a container port.
To allow HTTP(S) traffic from outside the VPC, we use a Kubernetes Ingress resource.
The Ingress maps URLs and hostnames to services in the cluster. Services are configured to
use both ClusterIP and NodePort service types.
If further constraints on network are needed, you can specify network policies to limit
access to pods based on labels, IP address ranges, and port numbers. These policies create
pod-level
firewall rules. You can restrict External Load Balancers by specifying loadBalancerSourceRanges
in a service configuration. To limit access to HTTP(S) load balancers, use
Cloud Armor security policies and Identity-Aware
Proxy service.

https://cloud.google.com/kubernetes-engine/docs/concepts/service-load-balancerAbout LoadBalancer Services

24
Q

Bucket locations

A

ou can select from the following location types:

A region is a specific geographic place, such as São Paulo.

A dual-region is a specific pair of regions, such as Tokyo and Osaka.
    Dual-region pairings can be predefined or configurable.

A multi-region is a large geographic area, such as the United States, that contains two or more geographic places.

https://cloud.google.com/storage/docs/locations

25
Memcache App Engine
When to use a memory cache One use of a memory cache is to speed up common datastore queries. If many requests make the same query with the same parameters, and changes to the results do not need to appear on the web site right away, the application can cache the results in the memcache. Subsequent requests can check the memcache, and only perform the datastore query if the results are absent or expired. Session data, user preferences, and other data returned by queries for web pages are good candidates for caching. Memcache can be useful for other temporary values. However, when considering whether to store a value solely in the memcache and not backed by other persistent storage, be sure that your application behaves acceptably when the value is suddenly not available. Values can expire from the memcache at any time, and can be expired prior to the expiration deadline set for the value. For example, if the sudden absence of a user's session data would cause the session to malfunction, that data should probably be stored in the datastore in addition to the memcache. App Engine supports two levels of the memcache service: Shared memcache is the free default for App Engine applications. It provides cache capacity on a best-effort basis and is subject to the overall demand of all the App Engine applications using the shared memcache service. Dedicated memcache provides a fixed cache capacity assigned exclusively to your application. It's billed by the GB-hour of cache size and requires billing to be enabled. Having control over cache size means your app can perform more predictably and with fewer reads from more costly durable storage. ## Footnote https://cloud.google.com/appengine/docs/legacy/standard/php/memcache
26
Pub/Sub
Pub/Sub is an asynchronous and scalable messaging service that decouples services producing messages from services processing those messages. Pub/Sub allows services to communicate asynchronously, with latencies typically on the order of 100 milliseconds. Pub/Sub is used for streaming analytics and data integration pipelines to load and distribute data. It's equally effective as a messaging-oriented middleware for service integration or as a queue to parallelize tasks. Pub/Sub lets you create systems of event producers and consumers, called publishers and subscribers. Publishers communicate with subscribers asynchronously by broadcasting events, rather than by synchronous remote procedure calls (RPCs). Publishers send events to the Pub/Sub service, without regard to how or when these events are to be processed. Pub/Sub then delivers events to all the services that react to them. In systems communicating through RPCs, publishers must wait for subscribers to receive the data. However, the asynchronous integration in Pub/Sub increases the flexibility and robustness of the overall system. Common use cases Ingesting user interaction and server events. To use user interaction events from end-user apps or server events from your system, you might forward them to Pub/Sub. You can then use a stream processing tool, such as Dataflow, which delivers the events to databases. Examples of such databases are BigQuery, Bigtable, and Cloud Storage. Pub/Sub lets you gather events from many clients simultaneously. Real-time event distribution. Events, raw or processed, may be made available to multiple applications across your team and organization for real- time processing. Pub/Sub supports an "enterprise event bus" and event-driven application design patterns. Pub/Sub lets you integrate with many systems that export events to Pub/Sub. Replicating data among databases. Pub/Sub is commonly used to distribute change events from databases. These events can be used to construct a view of the database state and state history in BigQuery and other data storage systems. Parallel processing and workflows. You can efficiently distribute many tasks among multiple workers by using Pub/Sub messages to communicate with the workers. Examples of such tasks are compressing text files, sending email notifications, evaluating AI models, and reformatting images. Enterprise event bus. You can create an enterprise-wide real-time data sharing bus, distributing business events, database updates, and analytics events across your organization. Data streaming from applications, services, or IoT devices. For example, a SaaS application can publish a real-time feed of events. Or, a residential sensor can stream data to Pub/Sub for use in other Google Cloud products through a data-processing pipeline. Refreshing distributed caches. For example, an application can publish invalidation events to update the IDs of objects that have changed. Load balancing for reliability. For example, instances of a service may be deployed on Compute Engine in multiple zones but subscribe to a common topic. When the service fails in any zone, the others can pick up the load automatically. ## Footnote https://cloud.google.com/pubsub/docs/overview
27
Cloud Run Deployment options ## Footnote https://cloud.google.com/run/docs/resource-model
Deployment options Cloud Run offers multiple deployment options. All deployment options result in a container image that runs as a Cloud Run service or job on Cloud Run's fully managed and highly scalable infrastructure. Container images Any container image which adhere to Cloud Run's container runtime contract can be deployed to a Cloud Run service or job. Sources For convenience, Cloud Run lets you build and deploy source code from a single command. When deploying sources, Cloud Build transforms the code into a container image stored in Artifact Registry. You can deploy sources that include a Dockerfile or are written in one of the supported language runtimes. Sources can be deployed to a Cloud Run service or job. Cloud Run services The service is one of the main resource of Cloud Run. Each service is located in a specific Google Cloud region. For redundancy and failover, services are automatically replicated across multiple zones in the region they are in. A given Google Cloud project can run many services in different regions. Each service exposes a unique endpoint and automatically scales the underlying infrastructure to handle incoming requests. You can deploy a service from a container, repository, or source code.
28
MySQL | PostgreSQL | SQL Server Create read replicas
Create read replicas MySQL | PostgreSQL | SQL Server This page describes how to create a read replica for a Cloud SQL instance. A read replica is a copy of the primary instance that reflects changes to the primary in almost real time, in normal circumstances. You can use a read replica to offload read requests or analytics traffic from the primary instance. Additionally, for disaster recovery, you can perform a regional migration. If a replica is a cross-region replica, you can perform a failover to another region; specifically, you can promote a replica to a standalone instance (in which case, existing replicas would not consider that instance as primary). For more information about how replication works, see Replication in Cloud SQL. A limiting factor of Cloud SQL is that databases can scale only vertically, that is, by moving the database to a larger machine. For use cases that require horizontal scalability or support, a globally accessed database, Cloud Spanner, is an appropriate choice. ## Footnote https://cloud.google.com/sql/docs/mysql/replication/create-replica
29
optimizing your cloud costs
- Identify idle VMs (and disks) - Schedule VMs to auto start and stop - Rightsize VMs - Leverage preemptible VMs - Optimize Cloud Storage costs and performance - Tune your data warehouse - Filter that network packet - ## Footnote https://cloud.google.com/blog/topics/cost-management/best-practices-for-optimizing-your-cloud-costs?hl=en
30
VPC SC (service control)
Your organization might own intellectual property in the form of highly sensitive data, or your organization might handle sensitive data that is subject to additional data protection regulations, such as PCI DSS. Unintended loss or disclosure of sensitive data can lead to significant negative business implications. If you are migrating from on-premises to the cloud, one of your goals might be to replicate your on-premises network based security architecture as you move your data to Google Cloud. To protect your highly sensitive data, you might want to ensure that your resources can only be accessed from trusted networks. Some organizations might allow public access to resources as long as the request originates from a trusted network, which can be identified based on the IP address of the request. To mitigate data exfiltration risks, your organization might also want to ensure secure data exchange across organizational boundaries with fine-grained controls. As an administrator, you might want to ensure the following: Clients with privileged access don't also have access to partner resources. Clients with access to sensitive data can only read public data sets but not write to them. ## Footnote https://cloud.google.com/vpc-service-controls/docs/overview
31
Serverless
App Engine : App Engine is a fully managed, serverless platform for developing and hosting web applications at scale. You can choose from several popular languages, libraries, and frameworks to develop your apps, and then let App Engine take care of provisioning servers and scaling your app instances based on demand https://cloud.google.com/appengine/docs/an-overview-of-app-engine Cloud Run Functions: Cloud Run functions is a lightweight compute solution for developers to create single-purpose, stand-alone functions that respond to Cloud events without the need to manage a server or runtime environment. https://cloud.google.com/functions/docs/concepts/overview Cloud Run: Cloud Run is a managed compute platform that enables you to run containers that are invocable via requests or events. Cloud Run is serverless: it abstracts away all infrastructure management, so you can focus on what matters most — building great applications. https://cloud.google.com/run/docs/overview/what-is-cloud-run ## Footnote https://cloud.google.com/run/docs
32
Dataproc
Google Cloud Dataproc is a fast, easy-to-use, low-cost and fully managed service that lets you run the Apache Spark and Apache Hadoop ecosystem on Google Cloud Platform. Cloud Dataproc provisions big or small clusters rapidly, supports many popular job types, and is integrated with other Google Cloud Platform services, such as Google Cloud Storage and Stackdriver Logging, thus helping you reduce TCO. https://cloud.google.com/dataproc/docs/resources/faq The best solution for this scenario would be Google Cloud Dataproc (option B). Google Cloud Dataproc is a fully-managed cloud service for running Apache Spark and Hadoop clusters. It provides a fast, easy, and cost-effective way to run big data workloads in the cloud. With Dataproc, you can easily create, configure, and manage Spark and Hadoop clusters without having to worry about the underlying infrastructure. Dataproc provides a number of benefits that make it ideal for scaling big data workloads in the cloud: Easy to use: Dataproc makes it easy to create and manage Spark and Hadoop clusters. You can easily set up clusters of any size and configuration, and Dataproc will handle all the underlying infrastructure. Scalability: Dataproc is designed to scale up and down as needed, so you can easily handle fluctuations in workload. This means that you can easily scale your big data workloads to meet your needs without having to worry about capacity planning. Cost-effective: Dataproc is a cost-effective solution for running big data workloads in the cloud. You only pay for the resources you use, and Dataproc provides automatic cluster scaling and shutdown to minimize costs. Integration: Dataproc integrates with a number of other Google Cloud Platform services, including Google Cloud Storage, BigQuery, and Cloud SQL. This makes it easy to move data between services and run complex data pipelines. ## Footnote https://cloud.google.com/dataproc/docs/resources/faq
33
GCP Observability exporters
- cAdvisor/Kubelet - GKE control-plane metrics - Hubble (GKE dataplane V2) - Istio - Kube State Metrics - Node Exporter - NVIDIA Data Center GPU Manager (DVGM) - Prometheus ## Footnote https://cloud.google.com/stackdriver/docs/managed-prometheus/exporters/kubelet-cadvisor?hl=en
34
Dataflow
Cloud Dataflow is a batch and stream processing service that can be used for transforming data before it is loaded into a data warehouse Dataflow is a Google Cloud service that provides unified stream and batch data processing at scale. Use Dataflow to create data pipelines that read from one or more sources, transform the data, and write the data to a destination. Typical use cases for Dataflow include the following: Data movement: Ingesting data or replicating data across subsystems. ETL (extract-transform-load) workflows that ingest data into a data warehouse such as BigQuery. Powering BI dashboards. Applying ML in real time to streaming data. Processing sensor data or log data at scale. Dataflow uses the same programming model for both batch and stream analytics. Streaming pipelines can achieve very low latency. You can ingest, process, and analyze fluctuating volumes of real-time data. By default, Dataflow guarantees exactly-once processing of every record. For streaming pipelines that can tolerate duplicates, you can often reduce cost and improve latency by enabling at-least-once mode. 1 Pub/Sub ingests data from an external system. 2 Dataflow reads the data from Pub/Sub and writes it to BigQuery. During this stage, Dataflow might transform or aggregate the data. 3 BigQuery acts as a data warehouse, allowing data analysts to run ad hoc queries on the data. 4 Looker provides real-time BI insights from the data stored in BigQuery. ## Footnote https://cloud.google.com/dataflow/docs/overview
35
Storage Transfer Service
Storage Transfer Service enables seamless data movement across object and file storage systems, including: Amazon S3, Azure Blob Storage, or Cloud Storage to Cloud Storage On-premises storage to Cloud Storage, or Cloud Storage to on-premises Between on-premises storage systems From publicly-accessible URLs to Cloud Storage From HDFS to Cloud Storage Storage Transfer Service is optimized for transfers involving more than 1TiB of data. For smaller transfers, see our recommendations. With Storage Transfer Service, you can: Automate data transfers: Eliminate the need for manual processes and custom scripts. Transfer data at scale: Move petabytes of data quickly and reliably. Optimize network performance: Choose between Google-managed transfers for simplicity or self-hosted agents for granular control over network routing and bandwidth consumption. Support diverse storage systems: Transfer data seamlessly between cloud providers and on-premises environments. ## Footnote https://cloud.google.com/storage-transfer/docs/overview
36
sole-tenant nodes
This document describes sole-tenant nodes. For information about how to provision VMs on sole-tenant nodes, see Provisioning VMs on sole-tenant nodes. Sole-tenancy lets you have exclusive access to a sole-tenant node, which is a physical Compute Engine server that is dedicated to hosting only your project's VMs. Use sole-tenant nodes to keep your VMs physically separated from VMs in other projects, or to group your VMs together on the same host hardware as shown in the following diagram. You can also create a sole-tenant node group and specify whether you want to share it with other projects or with the entire organization. ## Footnote https://cloud.google.com/compute/docs/nodes/sole-tenant-nodes
37
Cloud Spanner
Cloud Spanner is a managed database service that supports horizontal scalability across regions. This database supports common relational features, such as schemas for structured data and SQL for querying. Cloud Spanner supports both Google Standard SQL (ANSI 2011 with extensions) and Postgres dialects. It supports strong consistency, so there is no risk of data anomalies caused by eventual consistency. Cloud Spanner also manages replication. Cloud Spanner is used for applications that require strong consistency on a global scale. Here are some examples: ■■ Financial trading systems require a globally consistent view of markets to ensure that traders have a consistent view of the market when making trades. ■■ Logistics applications managing a global fleet of vehicles need accurate data on the state of vehicles. ■■ Global inventory tracking requires global-scale transaction to preserve the integrity of inventory data. Cloud Spanner provides 99.999 percent availability, which guarantees less than 5 minutes of downtime per year. Like Cloud SQL, all patching, backing up, and failover management is performed by GCP. Data is encrypted at rest and in transit. Cloud Spanner is integrated with Cloud Identity to support the use of user accounts across applications and with Cloud Identity and Access Management to control authorizations to perform operations on Cloud Spanner resources. As with any distributed database, there is the potential for hot spotting. That is skewing the database workload so that a small number of nodes are doing a disproportionate amount of work. When using Cloud Spanner, it is recommended that you use primary keys that do not lead to hotspotting. Incremented values, time stamps, and other values that monotonically increase in the first part of the key should not be used as a primary key since it will lead to writes being directed to a single server instead of more evenly distributed across all servers. Cloud Spanner supports secondary indexes in addition to primary key indexes. Cloud Spanner stores data encrypted at rest and by default uses Google-managed encryption. If you need to manage your encryption, you have the option to use Cloud Key Management Service (KMS) with a symmetric key, a Cloud HSM key, or a Cloud External Key Manager key.
38
Cloud Trace
Cloud Trace, a distributed tracing system for Google Cloud, helps you understand how long it takes your application to handle incoming requests from users or other applications, and how long it takes to complete operations like RPC calls performed when handling the requests. Cloud Trace can also help you when you are developing a service or troubleshooting a failure. For example, it can help you understand how requests are processed in a complicated microservices architecture, and it might help you identify which logs to examine. Because Cloud Trace receives latency data from some Google Cloud services, such as App Engine, and from applications instrumented with the Cloud Trace API, it can help you answer the following questions: How long does it take my application to handle a given request? Why is it taking my application so long to handle a request? Why do some of my requests take longer than others? What is the overall latency of requests to my application? Has latency for my application increased or decreased over time? What can I do to reduce application latency? What are my application's dependencies? ## Footnote https://cloud.google.com/trace/docs/overview
39
Cloud Profiler
Understanding the performance of production systems is notoriously difficult. Attempting to measure performance in test environments usually fails to replicate the pressures on a production system. Microbenchmarking parts of your application is sometimes feasible, but it also typically fails to replicate the workload and behavior of a production system. Continuous profiling of production systems is an effective way to discover where resources like CPU cycles and memory are consumed as a service operates in its working environment. But profiling adds an additional load on the production system: in order to be an acceptable way to discover patterns of resource consumption, the additional load of profiling must be small. Cloud Profiler is a statistical, low-overhead profiler that continuously gathers CPU usage and memory-allocation information from your production applications. It attributes that information to the source code that generated it, helping you identify the parts of your application that are consuming the most resources, and otherwise illuminating your applications performance characteristics. Types of profiling available Cloud Profiler supports different types of profiling based on the language in which a program is written. The following table summarizes the supported profile types by language: Profile type : CPU time Heap Allocated heap Contention Threads Wall time Languages : Go Java Node.js Python For complete information on the language requirements and any restrictions, see the language's how-to page. For more information about these profile types, see Profiling concepts. ## Footnote https://cloud.google.com/profiler/docs/about-profiler
40
Cloud Firestore
Cloud Firestore is a NoSQL, document-oriented database. Unlike a SQL database, there are no tables or rows. Instead, you store data in documents, which are organized into collections. Each document contains a set of key-value pairs. Cloud Firestore is optimized for storing large collections of small documents. All documents must be stored in collections. Documents can contain subcollections and nested objects, both of which can include primitive fields like strings or complex objects like lists. Collections and documents are created implicitly in Cloud Firestore. Simply assign data to a document within a collection. If either the collection or document does not exist, Cloud Firestore creates it. Cloud Firestore is the recommended enterprise-grade JSON-compatible document database, trusted by more than 250,000 developers. It's suitable for applications with rich data models requiring queryability, scalability, and high availability. It also offers low latency client synchronization and offline data access. ## Footnote https://firebase.google.com/docs/firestore/rtdb-vs-firestore
41
Firebase Realtime Database
The Firebase Realtime Database is a cloud-hosted database. Data is stored as JSON and synchronized in realtime to every connected client. When you build cross-platform apps with our Apple platforms, Android, and JavaScript SDKs, all of your clients share one Realtime Database instance and automatically receive updates with the newest data. Key capabilities Realtime Instead of typical HTTP requests, the Firebase Realtime Database uses data synchronization—every time data changes, any connected device receives that update within milliseconds. Provide collaborative and immersive experiences without thinking about networking code. Offline Firebase apps remain responsive even when offline because the Firebase Realtime Database SDK persists your data to disk. Once connectivity is reestablished, the client device receives any changes it missed, synchronizing it with the current server state. Accessible from Client Devices The Firebase Realtime Database can be accessed directly from a mobile device or web browser; there's no need for an application server. Security and data validation are available through the Firebase Realtime Database Security Rules, expression-based rules that are executed when data is read or written. Scale across multiple databases With Firebase Realtime Database on the Blaze pricing plan, you can support your app's data needs at scale by splitting your data across multiple database instances in the same Firebase project. Streamline authentication with Firebase Authentication on your project and authenticate users across your database instances. Control access to the data in each database with custom Firebase Realtime Database Security Rules for each database instance. ## Footnote https://firebase.google.com/docs/database
42
Bigtable
Bigtable is a sparsely populated table that can scale to billions of rows and thousands of columns, enabling you to store terabytes or even petabytes of data. A single value in each row is indexed; this value is known as the row key. Bigtable is ideal for storing large amounts of single-keyed data with low latency. It supports high read and write throughput at low latency, and it's an ideal data source for MapReduce operations. Bigtable is exposed to applications through multiple client libraries, including a supported extension to the Apache HBase library for Java. As a result, it integrates with the existing Apache ecosystem of open source big data software. Bigtable's powerful backend servers offer several key advantages over a self-managed HBase installation: Incredible scalability. Bigtable scales in direct proportion to the number of machines in your cluster. A self-managed HBase installation has a design bottleneck that limits the performance after a certain threshold is reached. Bigtable does not have this bottleneck, so you can scale your cluster up to handle more reads and writes. Simple administration. Bigtable handles upgrades and restarts transparently, and it automatically maintains high data durability. To replicate your data, add a second cluster to your instance, and replication starts automatically. No more managing replicas or regions; just design your table schemas, and Bigtable will handle the rest for you. Cluster resizing without downtime. You can increase the size of a Bigtable cluster for a few hours to handle a large load, then reduce the size of the cluster again—all without any downtime. After you change a cluster's size, it typically takes just a few minutes under load for Bigtable to balance performance across all of the nodes in your cluster. What it's good for Bigtable is ideal for applications that need high throughput and scalability for key-value data, where each value is typically no larger than 10 MB. Bigtable also excels as a storage engine for batch MapReduce operations, stream processing/analytics, and machine-learning applications. You can use Bigtable to store and query all of the following types of data: Time-series data, such as CPU and memory usage over time for multiple servers. Marketing data, such as purchase histories and customer preferences. Financial data, such as transaction histories, stock prices, and currency exchange rates. Internet of Things data, such as usage reports from energy meters and home appliances. Graph data, such as information about how users are connected to one another. Bigtable storage model Bigtable stores data in massively scalable tables, each of which is a sorted key-value map. The table is composed of rows, each of which typically describes a single entity, and columns, which contain individual values for each row. Each row is indexed by a single row key, and columns that are related to one another are typically grouped into a column family. Each column is identified by a combination of the column family and a column qualifier, which is a unique name within the column family. Each intersection of a row and column can contain multiple cells. Each cell contains a unique timestamped version of the data for that row and column. Storing multiple cells in a column provides a record of how the stored data for that row and column has changed over time. Bigtable tables are sparse; if a column is not used in a particular row, it does not take up any space. ## Footnote https://cloud.google.com/bigtable/docs/overview
43
Dataprep
Cloud Dataprep is used to prepare data for analysis and machine learning Cloud Dataprep est l'outil de préparation de données en libre-service de Google, conçu en collaboration avec Alteryx. Dans cet atelier, vous allez apprendre à nettoyer et à enrichir plusieurs ensembles de données à l'aide de Cloud Dataprep. Les exercices de cet atelier se basent sur un scénario fictif.
44
Cloud Memorystore
Fully managed in-memory Valkey, Redis* and Memcached service that offers sub millisecond data access, scalability, and high availability for a wide range of applications.
45
spot VMs preemtible
Compute Engine might preempt Spot VMs to reclaim the resources at any time. Compute Engine preempts Spot VMs for a variety of reasons—for example, system events. The probability that Compute Engine preempts Spot VMs is generally low, but might vary from day to day and from zone to zone depending on current conditions. Spot VMs are finite Compute Engine resources, so they might not always be available. Spot VMs can't live migrate to become standard VMs while they are running or be set to automatically restart when there is a host event. Due to the preceding limitations, Spot VMs are not covered by any Service Level Agreement and are excluded from the Compute Engine SLA. The Google Cloud Free Tier credits for Compute Engine do not apply to Spot VMs. Spot VMs are only available for supported machine types. Compute Engine sends a preemption notice to the VM in the form of an ACPI G2 Soft Off signal. You can use a shutdown script to handle the preemption notice and complete cleanup actions before the VM stops. The shutdown period for a preemption notice is best effort and up to 30 seconds Leverage preemptible VMs: Preemptible VMs are highly affordable compute instances that live up to 24 hours and that are up to 80% cheaper than regular instances. Preemptible VMs are a great fit for fault tolerant workloads such as big data, genomics, media transcoding, financial modelling and simulation. You can also use a mix of regular and preemptible instances to finish compute-intensive workloads faster and cost-effectively, by setting up a specialized managed instance group. ## Footnote https://cloud.google.com/compute/docs/instances/spot
46
database selection
https://cloud.google.com/products/databases?hl=en
47
Firebase Test Lab
Firebase Test Lab est une infrastructure de test d'applications cloud qui vous permet de tester votre application sur différents appareils et configurations afin d'obtenir une meilleure idée de ses performances auprès des utilisateurs réels. ## Footnote https://firebase.google.com/docs/test-lab?hl=fr