Files

2776 lines
358 KiB
XML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Cloud Blog</title><link>https://cloud.google.com/blog/</link><description>Cloud Blog</description><atom:link href="https://cloudblog.withgoogle.com/blog/rss/" rel="self"></atom:link><language>en</language><lastBuildDate>Tue, 07 May 2024 16:00:00 +0000</lastBuildDate><image><url>https://cloud.google.com/blog/static/blog/images/google.a51985becaa6.png</url><title>Cloud Blog</title><link>https://cloud.google.com/blog/</link></image><item><title>Product analytics for generative AI model and media asset companies using BigQuery</title><link>https://cloud.google.com/blog/products/data-analytics/perform-product-analysis-with-generative-ai-and-bigquery/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Over the last year, theres been a lot of change in the commercial image and video asset industry: New generative AI applications let users create their own still and live images based on prompts, and traditional stock-media asset providers are offering customers richer search experiences that have a deep understanding of the image/live image content and that expose it with a natural language interface. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To continually push the state of the art, these organizations must use data to evolve their products rapidly, for example to: &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Optimize still and live image generation models&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Identify inappropriate content, such as violence or nudity&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Analyze behavior to identify improvements to the user experience&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Recommend similar images or prompts based on previous activity&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Enhance static asset search capabilities&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To do this, they need unstructured images, live images, and audio data, combined with structured user-experience data and metadata about the assets they are interacting with, whether theyre static or AI-generated.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In this post, we outline a solution&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;based on our real-life engagements with leaders in the industry who operate at the scale of petabytes per day. This solution delivers several benefits:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Minimizes costs by avoiding duplicate data and storage, while facilitating AI model proximity to data for efficient inference&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Simplifies development and delivery by combining diverse data types in a unified data architecture&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Optimizes use of limited engineering resources through an integrated, scalable serverless platform that combines &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://cloud.google.com/storage?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud Storage&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Allows users to augment and transform their data according to the needs of their business &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Enables companies to develop lightweight, powerful analyses quickly and securely, to activate customer data and quickly iterate on the output of models&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;The challenge of unstructured data&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Generated (unstructured) image data, the (semi-structured) prompts that made them, as well as user behavior data (structured, in tables) for things like session time and frequency, are all rich in potential insights. For example, knowing which types of prompts lead to successfully generating an image — and those that dont — provides insights into product and model development opportunities. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;But combining these different data types often requires advanced analytics to interpret them meaningfully. Technologies like natural language processing and computer vision are at the forefront of extracting these kinds of valuable insights. However, integrating unstructured data within an existing analytics framework of structured data, for example user behavior data in database tables, is not without its hurdles. Common challenges include:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Data security standards:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Adhering to stringent data security standards to protect sensitive information is crucial. These standards include applying data masking to sensitive PII data and following least-privilege security principles for data access.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Data type silos:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Unstructured data is often stored separately from structured data, preventing effective analysis across data types, for example, filtering media assets (unstructured) based on user profiles (structured), as they reside in separate systems.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;High-performance, scalable cloud computing resources:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; The need for powerful computing resources is imperative to manage and analyze large unstructured datasets effectively due to the data's complexity, volume, and the potential need for real-time results. In addition, high performance networking allows for low-latency data transfers to enable the transfer of unstructured data between storage (Cloud Storage) and analytical layers (BigQuery, Vertex, etc.)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Maintaining data integrity across layers&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;:  As insights are extracted from unstructured data, preserving the original source of truth and ensuring consistency across intermediate (interstitial) layers is crucial for reliable, iterative analysis.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Streamlining data integration with Cloud Storage and BigQuery&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To overcome the challenges of working with unstructured data, &lt;/span&gt;&lt;a href="https://cloud.google.com/storage?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Storage&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; can be used to centralize data, using &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/object-table-introduction"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery object tables&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;enable consistent data access to varied sources through one analytical platform&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;. Below is an example of a simple yet effective architecture that harnesses BigQuery for both metadata generation and enhancement. This approach uses BigQuery's built-in generative AI functions, coupled with remote User Defined Functions (UDFs) that interface with &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; APIs. The integration elevates the process of data enrichment and analysis, and offers a more streamlined and efficient workflow.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;The power of BigQuery object tables&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In the example below, we focus on a static image use case, however, this same technique could be used for images created using generative AI. The true potential of this architecture lies in its versatility. The use of object tables in BigQuery means this pattern can be adapted to any form of unstructured data, for example images, audio, documents, opening up a world of possibilities for data science and analysis. This flexibility ensures the architecture can evolve with the changing needs and types of data, helping the solution withstand the test of time in the dynamic field of image curation and generation.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This architecture shows the integration of structured and unstructured data, utilizing the strengths of both to enhance platform capabilities. BigQuery serves as a central hub, amalgamating user data information (for example: user demographics, images viewed and used, session duration, session frequency), image metadata, and queries. Concurrently, external AI APIs augment this dataset with insights about the content of the images, for example describing what is happening in a scene (e.g. “a photographic image of a dog playing with a ball on grass”) . &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This convergence of data facilitates the training of sophisticated image-generation models, tailored to meet the specific requirements of the platform's users. It also unlocks advanced search and image-curation functionalities, enabling users to navigate through an extensive collection of images. The project's ability to provide access to external systems and empower data augmentation within BigQuery helps to centralize analytic workloads. This not only streamlines data analysis but also fosters informed decision-making.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Solution overview&lt;/strong&gt;&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_-_Model_Analytics.max-1000x1000.png"
alt="1 - Model Analytics"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The goal of the solution is to create a way to interact with unstructured data through BigQuery. Using BigQuery object tables to analyze unstructured data in Cloud Storage, you can perform analyses using generative AI models via remote functions, cloud APIs via Vertex AI, or perform inference by using BigQuery ML, and then join the results of these operations with the rest of your structured data in BigQuery.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Step 1. Creating an example dataset&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Prerequisites&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Data: Multiple image repositories on third-party sites like Kaggle and Hugging Face&lt;br/&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Project setup: To get started we need to activating essential project APIs:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;gcloud services enable cloudfunctions.googleapis.com&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;gcloud services enable cloudbuild.googleapis.com&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;gcloud services enable bigqueryconnection.googleapis.com&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;gcloud services enable &lt;/span&gt;&lt;a href="http://vision.googleapis.com" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;vision.googleapis.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Step 2. Create the object table&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The object table provides the reference to the non-structured data (e.g., audio, live images and images).  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To do this, we create the BigQuery BigLake remote connection, building a bridge between BigQuery and Cloud Storage:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Command for creation: &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;bq mk --connection --location=us-central1 \&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;--project_id=bq-object-tables-demo \&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;--connection_type=CLOUD_RESOURCE biglake-connection&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;To show the details of this new creation, use: &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;bq show --connection bq-object-tables-demo.us-central1.biglake-connection&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Then, give your BQ service account the correct permissions to access your Cloud Storage bucket.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Your &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;serviceAccountId&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; typically looks like this: &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;{"serviceAccountId": "bqcx-012345678910-abcd@gcp-sa-bigquery-condel.iam.gserviceaccount.com"&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;}`. And it needs the object viewer permission. This can be achieved by:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gsutil iam ch \\ serviceAccount:bqcx-012345678910-abcd@gcp-sa-bigquery-condel.iam.gserviceaccount.com:objectViewer gs://bq-object-tables-demo-data&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc2da5a30&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Make your object table in BigQuery in an existing dataset, or create a dataset for your object table.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Create the dataset with: &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;bq mk -d --data_location=us-central1 bq_object_table_demo-dataset&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This is a sample query you can use to create the object table&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;CREATE OR REPLACE EXTERNAL TABLE `bq-object-tables.bq_ot_dataset.bq_object_tables_external_table` \r\nWITH CONNECTION `bq-object-tables.us-east1.biglake-connection` OPTIONS ( object_metadata=&amp;quot;DIRECTORY&amp;quot;, uris = [\&amp;#x27;gs://bq-object-tables-demo-data/*\&amp;#x27; ], max_staleness=INTERVAL 30 MINUTE, metadata_cache_mode=&amp;quot;AUTOMATIC&amp;quot;);&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc2da5040&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The  max_staleness option lets you manage the trade-off between data freshness and performance by specifying a tolerable level of staleness for the materialized view; this can help improve query response times and reduce costs. By setting an appropriate value, you can achieve consistently high performance while keeping costs under control, even when working with large, frequently changing datasets&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Create metadata using Native BQ Functionality&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;These steps can all be automated into a Directed Acyclic Graph (DAG) for use in an orchestration tool such as &lt;/span&gt;&lt;a href="https://cloud.google.com/composer"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Composer&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Step 3. Reference the model from a native generative AI BQML function&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;First create the link back to the model in your BQ dataset like this: &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;# Create Model\r\nCREATE OR REPLACE MODEL\r\n`bq-object-tables.bq_ot_dataset.myvisionmodel`\r\nREMOTE WITH CONNECTION `bq-object-tables.us-east1.biglake-connection`\r\nOPTIONS (remote_service_type =&amp;#x27;cloud_ai_vision_v1&amp;#x27;);&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc2da5460&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Annotate image&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This code parses the images, extracts their contents and outputs a JSON array of words that describe the image and the models confidence that the description is correct. This function will then put the description into a table.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;# Annotate image\r\nSELECT *\r\nFROM ML.ANNOTATE_IMAGE(\r\n MODEL `mydataset.myvisionmodel`,\r\n TABLE `mydataset.mytable`,\r\n STRUCT([&amp;#x27;label_detection&amp;#x27;] AS vision_features)\r\n);&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc2da5d30&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Step 4. Create a UDF in BigQuery&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can create a Cloud function using &lt;/span&gt;&lt;a href="https://gist.github.com/hselbie/fde69b900c4c719656ab42cdfb897b88" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;this basic code&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If youre unsure how to create a cloud function, please see the docs for how to &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/data-analytics/extending-bigquery-functions"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;create a cloud function UDF&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Then, to deploy the Cloud Function, follow these steps:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;4.1. &lt;/span&gt;&lt;a href="https://cloud.google.com/functions/docs/deploying"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Deploy your Cloud Function&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;You may need to enable Cloud Functions API.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;You may need to enable Cloud Build APIs.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;4.2. &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/remote-functions#grant_permission_on_function"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Grant the BigQuery connection service account access to the Cloud Function&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;One way you can find the service account is by using the BigQuery cli show command&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;4.3. Reference the functions in BigQuery&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Create a BigQuery remote function to reference the Cloud Function UDF&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;CREATE OR REPLACE FUNCTION `mydataset.vision_safe_search`(signed_url_ STRING) RETURNS JSON\r\nREMOTE WITH CONNECTION `us.gcs-connection`\r\nOPTIONS(endpoint=&amp;#x27;https://region-myproject.cloudfunctions.net/vision_safe_search&amp;#x27;,\r\nmax_batching_rows = 1);&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc2da5190&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;CREATE OR REPLACE FUNCTION `mydataset.vision_annotation`(signed_url_ STRING) RETURNS JSON\r\nREMOTE WITH CONNECTION `us.gcs-connection`\r\nOPTIONS(endpoint=&amp;#x27;https://region-myproject.cloudfunctions.net/vision_annotation&amp;#x27;,\r\nmax_batching_rows = 1);&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc2da5a00&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Step 5. Use the function in a query &lt;/span&gt;&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;CREATE TABLE `mydataset.mid_processing` AS\r\nSELECT uri,mydataset.vision_safe_search(signed_url) as safe_search, mydataset.vision_annotation(signed_url) as annotation\r\nFROM EXTERNAL_OBJECT_TRANSFORM(\r\nTABLE `mydataset.imageall`,\r\n[&amp;quot;SIGNED_URL&amp;quot;]);&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc2da59a0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Tap into unstructured data with BigQuery object tables and AI&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This architecture demonstrates the power of streamlining data integration for centralized analyses through BigQuery. Although we reference image data for this example, this methodology is highly flexible; using object tables we can reference any type of unstructured data in Cloud Storage buckets that could also refer to audio files that might reference a call center AI use case, for example, or live image files relevant to training a computer vision model. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By centralizing data in Cloud Storage and BigQuery and intelligently using object tables, you can efficiently manage both structured and unstructured data. For our image-based example, this unified approach provides a rich dataset that contains user IDs, original prompts, prompt categories, image safety ratings, and even additional ML-generated prompts. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The potential applications for these metadata sets are huge. Product teams could use them to build more robust image-generation models or create an advanced image-search system, providing highly relevant results aligned with users' search terms and image descriptions. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Take the next step&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can get started today using this framework. For additional help, ask your Google Cloud account manager to reach out to the&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;a href="https://cloud.google.com/solutions/data-cloud-isvs?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Built with BigQuery&lt;/span&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;team&lt;/span&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt;.&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The Built with BigQuery team helps Independent Software Vendors (ISVs) and data providers build innovative applications with &lt;/span&gt;&lt;a href="https://cloud.google.com/data-cloud?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Data Cloud&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Participating companies can: &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Accelerate product design and architecture through access to designated experts who can provide insight into key use cases, architectural patterns, and best practices&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Amplify success with joint marketing programs to drive awareness, generate demand, and increase adoption&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><pubDate>Tue, 07 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/data-analytics/perform-product-analysis-with-generative-ai-and-bigquery/</guid><category>Partners</category><category>AI &amp; Machine Learning</category><category>Developers &amp; Practitioners</category><category>Data Analytics</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Product analytics for generative AI model and media asset companies using BigQuery</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/data-analytics/perform-product-analysis-with-generative-ai-and-bigquery/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Annie Xu</name><title>Sr. Customer Engineer, Analytics, Google Cloud</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Hugo Selbie</name><title>Customer &amp; Partner Solutions Engineer, Gen AI, Google Cloud</title><department></department><company></company></author></item><item><title>Whats new with Active Assist: New Hub UI and four new recommendations</title><link>https://cloud.google.com/blog/products/management-tools/active-assist-gets-new-hub-and-recommendations/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The &lt;/span&gt;&lt;a href="https://cloud.google.com/solutions/active-assist"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Active Assist&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; portfolio of intelligent tools can help you reduce costs, increase performance, improve security, and even help you make more sustainable decisions. Today, were excited to announce some new Active Assist features that address some of our customers largest concerns. These features unlock some key functionality that help you better understand and use recommendations, all aimed to help make managing and optimizing your cloud simpler and easier. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Revamped Recommendation Hub&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://console.cloud.google.com/home/recommendations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Recommendation Hub&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; is a centralized page on Google Cloud that helps you view all of your recommendations in one place across multiple categories: cost, security, performance, reliability, manageability, and even sustainability. We recently made improvements to help you better understand the recommendations you have and to help you focus on the ones that are the most impactful: &lt;/span&gt;&lt;/p&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;1. Organization-view of recommendations&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;One of our most in-demand features: you can now view all recommendations across all of your projects in your organization in one UI! Simply change the picker at the top left of the screen to choose an organization, and Active Assist shows all the recommendations under your organization (as long as you have the correct IAM permissions).&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/hubble-1.gif"
alt="hubble-1"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;2. Pre-filtered recommendations by value category&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;You can now view all of your recommendations under one category in a simple  &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;table view, so you can prioritize and focus on the recommendations that are the most &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;relevant and important to you.&lt;/span&gt;&lt;/p&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;3. Custom sorting and filtering&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;With our new table views, you can sort and filter by different fields, such as product category, recommendation, cost savings, priority, etc. so you can find and view recommendations more easily. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/hubble-2.gif"
alt="hubble-2"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Four new recommendations&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Were continually adding new recommendations to the Active Assist portfolio based on customer feedback, to help you manage risk and optimize operations. &lt;/span&gt;&lt;/p&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;1. Cloud deprecation and breaking change recommendations&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;At Google Cloud we take pains to provide backwards compatibility for our services. However, from time to time, we need to evolve the platform in a way that could impact some users e.g., for security purposes. In addition to following a stringent process to minimize customer impact, Active Assist now includes recommendations about potential breaking changes, providing an additional mechanism for customers to learn about them.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/hub-3.max-1000x1000.png"
alt="hub-3"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Our new &lt;/span&gt;&lt;a href="https://cloud.google.com/recommender/docs/deprecation-change-recommender"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;cloud deprecation and breaking changes recommender&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; helps identify Cloud resources that will be affected by upcoming deprecations and breaking changes while providing guidelines on how to manage them. Like our other recommendations, you can view them through our &lt;/span&gt;&lt;a href="https://console.cloud.google.com/home/recommendations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Recommendation Hub UI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, API, and BigQuery export. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Deprecation and breaking change recommendations are offered at no charge and are available for all users today. Making sure you get ahead of these changes is important to help prevent any disruptions to your environment and ensure you are on the most reliable and supported services. &lt;/span&gt;&lt;/p&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;2. IAM for BigQuery recommendations&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Weve expanded the popular IAM Recommender to include &lt;/span&gt;&lt;a href="https://cloud.google.com/policy-intelligence/docs/review-apply-role-recommendations-datasets"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;IAM recommendations on BigQuery datasets&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. If your principals have roles on BigQuery datasets but they are not using all of the permissions within that role, you can now receive recommendations to remove or replace any of those roles. These recommendations help you enforce the principle of least privilege by ensuring that principals have only the permissions that they actually need. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can view your recommendations through UI, API, or BigQuery export. The recommendations are currently free but will require Security Command Center Premium after April 29th. &lt;/span&gt;&lt;/p&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;3. Advisory Notifications recommendations&lt;br/&gt;&lt;/strong&gt;&lt;a href="https://cloud.google.com/advisory-notifications/docs/recommendations-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Advisory Notifications&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; provides IAM policy recommendations to ensure the right parties within your organization have access to view critical security and privacy notifications in the Google Cloud console, so that they can receive and quickly address security notifications. &lt;/span&gt;&lt;/p&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;4. Recent change recommendations&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;We want to help you detect and mitigate issues (e.g., service outages) caused by misconfigurations to your important cloud resources. The new &lt;/span&gt;&lt;a href="https://cloud.google.com/recommender/docs/recent-change-recommendations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;recent change recommendations&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; automatically flags recent risky changes to cloud resources that are identified as important based on their usage and other signals. For example, if you deleted a highly used project, recent change recommendations will proactively warn you about the risks associated with the change, helping to identify — and prevent — unintended issues.. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Were excited about these latest &lt;/span&gt;&lt;a href="https://cloud.google.com/recommender/docs/change-risk-recommendations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;change risk recommendations&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and hope they will help you both prevent and mitigate misconfigurations and risky changes to your infrastructure. Try out the new features on &lt;/span&gt;&lt;a href="https://console.cloud.google.com/home/recommendations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Recommendation Hub&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; yourself. If you have any feedback, please feel free to reach out to &lt;/span&gt;&lt;a href="mailto:active-assist-feedback@google.com"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;active-assist-feedback@google.com&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-related_article_tout"&gt;
&lt;div class="uni-related-article-tout h-c-page"&gt;
&lt;section class="h-c-grid"&gt;
&lt;a href="https://cloud.google.com/blog/products/management-tools/introducing-active-assist-change-risk-recommenders/"
data-analytics='{
"event": "page interaction",
"category": "article lead",
"action": "related article - inline",
"label": "article: {slug}"
}'
class="uni-related-article-tout__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3 uni-click-tracker"&gt;
&lt;div class="uni-related-article-tout__inner-wrapper"&gt;
&lt;p class="uni-related-article-tout__eyebrow h-c-eyebrow"&gt;Related Article&lt;/p&gt;
&lt;div class="uni-related-article-tout__content-wrapper"&gt;
&lt;div class="uni-related-article-tout__image-wrapper"&gt;
&lt;div class="uni-related-article-tout__image" style="background-image: url('')"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="uni-related-article-tout__content"&gt;
&lt;h4 class="uni-related-article-tout__header h-has-bottom-margin"&gt;Active Assist change risk recommenders: Introducing a new way to prevent misconfigurations&lt;/h4&gt;
&lt;p class="uni-related-article-tout__body"&gt;Active Assist change risk recommendations help prevent and detect common misconfigurations to help reduce risk, and improve operational r...&lt;/p&gt;
&lt;div class="cta module-cta h-c-copy uni-related-article-tout__cta muted"&gt;
&lt;span class="nowrap"&gt;Read Article
&lt;svg class="icon h-c-icon" role="presentation"&gt;
&lt;use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mi-arrow-forward"&gt;&lt;/use&gt;
&lt;/svg&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/a&gt;
&lt;/section&gt;
&lt;/div&gt;
&lt;/div&gt;</description><pubDate>Tue, 07 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/management-tools/active-assist-gets-new-hub-and-recommendations/</guid><category>AI &amp; Machine Learning</category><category>Databases</category><category>Management Tools</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Whats new with Active Assist: New Hub UI and four new recommendations</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/management-tools/active-assist-gets-new-hub-and-recommendations/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Sharon Fang</name><title>Product Manager</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Ryan Ismert</name><title>Product Manager</title><department></department><company></company></author></item><item><title>repareo adopts cloud-based microservices architecture to scale its auto repair business</title><link>https://cloud.google.com/blog/products/application-modernization/how-repareo-is-modernizing-auto-repair-with-google-cloud/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When it comes to auto repair, most of us are at the mercy of our mechanic. We take our car to the local garage, pay for the job, and hope for the best. And with little transparency into the work that has been done, or the costs involved, we can be left feeling unsure whether we got value for money.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;At &lt;/span&gt;&lt;a href="https://www.repareo.de/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;repareo&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, we are transforming the customer experience of vehicle repair, modernizing the market to make it e-commerce ready, while giving customers full transparency over the car-repair process. Now, they can describe their vehicle problem on our site and immediately receive a list of local garages, including customer reviews, cost breakdowns, and availability, allowing them to make an informed decision about where to take their car. And because our site has direct interfaces with the garages booking systems, customers are able to book their preferred garage and appointment directly on our site, saving time calling garages for availability. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Outgrowing our monolithic architecture&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This year, we will be launching our new infrastructure on Google Cloud. Previously, repareo was built on a monolithic system using a small, hosted server, which was both easy for our small development team to maintain and allowed us to grow the business in a cost-efficient way. However, as we added more features and services, our monolith grew, which had an impact on our development speed, creating a bottleneck for the rest of our application. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Reliability became an issue too. repareo is integrated with car management fleets and leasing companies, and many drivers access our services through their car leasing app, making us highly dependent on third-party APIs to function effectively. As we grew, the increase in traffic resulted in these APIs becoming sluggish. During periods of peak traffic, such as the German tire-change season, we would see a 300% surge in traffic, placing a significant strain on our server, which was unable to scale effectively, causing our services to grind to a halt. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Modernizing infrastructure to modernize the market&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The turning point came last year, when we signed a major deal with a leading global e-commerce player to integrate with its vehicle parts marketplace, enabling customers to book an installation during the checkout process. Realizing that we would need our infrastructure to be able to handle an expected tenfold increase in demand, while conforming with our new service-level agreements (SLAs), we decided it was time to move to the cloud. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We knew that a migration would bring other benefits too, enabling us to build a microservices architecture to develop services in modules, as well as allowing us to place certain workloads close to a leading global eCommerce player in vehicle parts in California, for fast response times. As we looked at cloud providers, Google Cloud stood out for the range of technologies and services it offered, with &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://cloud.google.com/apigee?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Apigee&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; particularly impressing us as uniquely advanced solutions in the market. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Beyond the technology, however, we were just as impressed with Google Clouds deep understanding of our industry and its business network within the automotive sector, as well as by the personal relationship we quickly built with the Google Cloud team. Migrating to a new provider is a once-in-a-lifetime decision, a marriage of sorts, and with Google Cloud the relationship immediately felt like it was built to last. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;A robust, reliable system for a smoother customer experience&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Were currently halfway through our migration, which has proved to be a steep learning curve for us, given the scale of the undertaking for our small team of developers. However, Apigee has helped to make the migration smooth by enabling us to easily set up a staging environment to test and adjust our system before going live, with no impact on our users. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We expect to have completed the migration in less than six months in total. Once live, we will have a robust, scalable system, capable of meeting the needs of a significantly larger user base. Building and managing our APIs with Apigee means we will be able to use the caching system to cache the high number of API requests on the site, allowing us to offer high-performance buffering algorithms without having to drastically increase the scale of the underlying system. And because Apigees logging system is so well developed, we will easily be able to spot and remedy any integration issues, to ensure our APIs function effectively. As a result, our customers will enjoy a smooth, reliable booking system and real-time repair updates, while garages will benefit from far wider reach. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We wont need to worry about being able to handle fluctuations in demand either, as the autoscale feature of &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Kubernetes Engine&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (GKE) will automatically scale up our workloads to meet surges in traffic and scale down again during quiet periods to help ensure we arent using more compute than necessary. This cost-efficient provisioning means we will no longer have to worry about the ability of our system to handle periods of peak traffic, with our customers benefiting from a fast, reliable service. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Taking our developers up a gear with easy-to-use, managed services&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Our development efficiency has already significantly improved, thanks to the built-in features and managed services of Google Cloud. Apigee, for example, has a built-in key management system to enable APIs to communicate securely, which means our development team doesnt need to spend time and money building our own system. Similarly, the fact that &lt;/span&gt;&lt;a href="https://cloud.google.com/sql?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud SQL&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; is a managed database means we dont need to spend time updating and maintaining it. GKE, meanwhile, improves our developer efficiency thanks to its easy integration with automation tools, increasing our deployment speed by at least 15%.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;All of this means that our developers are free to focus on the core business logic and developing new features, such as new RPA-based technology to gather appointment availability from garage websites, which we were able to build and release inside a week, where it would have taken a month using the old infrastructure.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;A firm foundation for sustained growth&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With a number of other significant deals in the pipeline, repareo is now entering a period of sustained growth as we rapidly increase our customer base and prepare to enter new markets. That level of scaling simply wouldnt be possible without Google Cloud, with its global network and regional data centers making it easy to move into any new region and enjoy rapid response times. While its scalable architecture means we can be confident that our infrastructure will always be able to scale with us.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As we continue our mission to make auto repair more transparent and convenient for more people, we are confident that with Google Cloud we have the right provider to help move our business into the fast lane.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Tue, 07 May 2024 08:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/application-modernization/how-repareo-is-modernizing-auto-repair-with-google-cloud/</guid><category>Infrastructure Modernization</category><category>Customers</category><category>Application Modernization</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/image_30.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>repareo adopts cloud-based microservices architecture to scale its auto repair business</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/image_30.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/application-modernization/how-repareo-is-modernizing-auto-repair-with-google-cloud/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Philipp Haac</name><title>CEO, repareo</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Tobias Reisner</name><title>CTO &amp; Co-Founder, repareo</title><department></department><company></company></author></item><item><title>Maintain business continuity across regions with BigQuery managed disaster recovery</title><link>https://cloud.google.com/blog/products/data-analytics/bigquery-gets-managed-disaster-recovery/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Geographical redundancy is a fundamental part of building a resilient cloud-based data strategy. For many years, BigQuery has offered an industry-leading 99.99% &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/sla"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;uptime service-level agreement&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (SLA) for availability within a single geographical region. Full redundancy across two data centers within a single region is included with every BigQuery dataset you create and is managed in a completely transparent manner. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For customers looking for enhanced redundancy across large geographic regions, we are now introducing &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;managed disaster recovery&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; for BigQuery. This feature, now in preview, offers automated failover of compute and storage and a new cross-regional SLA tailored for business-critical workloads. This feature enables you to ensure business continuity in the unlikely event of a total regional infrastructure outage. Managed disaster recovery also provides failover configurations for capacity reservations, so you can manage query and storage failover behavior. This feature is available through &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/editions-intro"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery Enterprise Plus edition&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;How does it work?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Customers using BigQuerys enterprise plus edition can now configure their capacity reservations to enable automated failover across distinct geographic regions. Extending the capabilities of BigQuerys &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/data-replication"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;cross-region dataset replication&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, failover reservations ensure that the location of both data and compute resources are coordinated during a disaster recovery event.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/image1_fRF1oyb.png"
alt="Image 1 - First image on blog"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Slot capacity in the secondary region for enterprise plus edition reservations are provisioned and maintained automatically at &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;no additional cost&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;. Some competitive products require customers to duplicate their compute clusters in the secondary location.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In the event of a total regional outage, the secondary region can be promoted to the primary role for both compute and data. With BigQuerys query routing layer, failover is completely transparent to end users and tools.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Primary region:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; The region containing the current primary replica of a &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/datasets-intro"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;dataset&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. This is also the region where the dataset data can be modified (e.g. loads, DDL, or DML).&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Secondary region:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; The region where the failover reservation standby capacity and replicated datasets are available in the case of a regional outage.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Failover reservation:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; An enterprise plus edition reservation configured with a primary/secondary region pair. Note: Datasets are attached to failover reservations. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The dataset replica in the primary region is the &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;primary replica&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, and the replica in the secondary region is the &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;secondary replica&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;. These roles are swapped during the failover process.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The primary replica is writeable, and the secondary replica is read-only. Writes to the primary replica are asynchronously replicated to the secondary replica. Within each region, the data is stored redundantly in two zones. Network traffic never leaves the Google Cloud network.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;What is a region pair? &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;A region pair in BigQuerys managed disaster recovery is a pair of regions that are geographically supported by &lt;/span&gt;&lt;a href="https://cloud.google.com/storage/docs/availability-durability#turbo-replication"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;turbo replication&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and compute redundancy. Within the defined region pair, BigQuery replicates data between the two regions and manages secondary available capacity. This replication allows BigQuery managed disaster recovery to provide high availability and durability for data. Customers are able to define their desired region pair (based on the supported regions) per failover reservation. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Supported region pairs&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;BigQuerys managed disaster recovery feature supports failover reservations across specific region pairs (&lt;/span&gt;&lt;a href="https://cloud.google.com/storage/docs/locations#location-dr"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;similar to Cloud Storage, for regions within a geographic area&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;). You can designate either region in a pair for your initial primary or secondary region.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong style="vertical-align: baseline;"&gt;Capacity in the secondary region&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;BigQuery ensures that the capacity of your primary region will be available in your secondary region within five minutes of a failover. This assurance applies to your reservation baseline, whether its used or not. BigQuery also provides the same level of &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/slots-autoscaling-intro"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;autoscaling&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; availability as provided in the primary.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;How much does it cost?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;BigQuery's managed disaster recovery feature is available with the &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/editions-intro"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Enterprise Plus edition&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Standby compute capacity in the secondary region is included with the per slot-hour price with no requirement to purchase separate standby capacity. As an option, you may choose to provision additional Enterprise Plus reservations in the secondary region, specifically for read-only queries.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Managed disaster recovery customers are billed for &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/data-replication"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;replicated storage&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; in the primary and secondary regions for associated datasets. At GA, this feature will automatically use &lt;/span&gt;&lt;a href="https://cloud.google.com/storage/docs/managing-turbo-replication"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;turbo replication&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for data transfer between regions. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div align="left"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;
&lt;div style="color: #5f6368; overflow-x: auto; overflow-y: hidden; width: 100%;"&gt;&lt;table&gt;&lt;colgroup&gt;&lt;col/&gt;&lt;col/&gt;&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;SKU&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Billing description&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Enterprise Plus Edition&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;$0.10 / slot-hr (ex. US Pricing)&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Storage&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Storage bytes in the secondary region are billed at the same list price as storage bytes in the primary region. See &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/pricing#storage"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;BigQuery Storage pricing&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for more information.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Data transfer&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td style="vertical-align: top; border: 1px solid #000000; padding: 16px;"&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Managed disaster recovery uses turbo replication*&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Data transfer used during replication:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;is charged based on physical bytes&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;is charged on a per physical GB replicated basis. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Note: &lt;/span&gt;&lt;a href="https://cloud.google.com/storage/pricing#north-america_1"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Turbo replication will be 2x pricing of “default replication” &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="vertical-align: baseline;"&gt;* &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Turbo replication is not available during preview but will be enabled automatically at general availability (GA).&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Recovery Time Objective (RTO)&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Promotion of a secondary reservation and associated datasets takes less than five minutes, even if the primary region is down. All queries in flight are canceled and rejected during the RTO timeline.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Recovery Point Objective (RPO)&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Data will be less than 15 minutes old in secondary dataset replicas configured for failover reservation between supported region pairs, turbo replication enabled and only after initial replication is completed (also known as backfill). &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Note: Turbo replication and RPO/RPO with SLA are not available during preview.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Configuration in action&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;During preview, managed disaster recovery configuration is supported via the BigQuery Console (UI) and SQL. The following workflow shows how you can set up and manage disaster recovery in BigQuery:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/Image_2_-_Second_image_on_blog.max-1000x1000.png"
alt="Image 2 - Second image on blog"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Create a replica for a given dataset&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To replicate a dataset, use the &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#alter_schema_add_replica_statement"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;ALTER SCHEMA ADD REPLICA DDL statement&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;After you add a replica, it takes time for the initial copy operation to complete. You can still run queries referencing the primary replica while the data is being replicated, with no reduction in query-processing capacity.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;-- Create the primary replica in the primary region.\r\nCREATE SCHEMA my_dataset OPTIONS(location=&amp;#x27;us-west1&amp;#x27;);\r\n-- Create a replica in the secondary region.\r\nALTER SCHEMA my_dataset\r\nADD REPLICA `us-east1`\r\nOPTIONS(location=&amp;#x27;us-east1&amp;#x27;);&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc4aa93d0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Configure a failover reservation + attach a dataset&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The first step is to create a failover reservation and specify its secondary location. Specifying a secondary location can also be done for existing Enterprise Plus reservations.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;CREATE RESERVATION `project1.region-us-west1.my_failover_reservation` \r\n OPTIONS (slot_capacity = 200, edition = ENTERPRISE_PLUS,\r\n secondary_location=&amp;#x27;us-east1);&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc4aa9d30&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The next step is to associate one or more datasets with the failover reservation. The dataset needs to be replicated in the same primary / secondary region as specified in the reservation.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;ALTER SCHEMA `my_dataset`\r\n SET OPTIONS (failover_reservation = \r\n `project1.my_failover_reservation`);&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc4aa9190&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Promote the failover reservation + dataset in the secondary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Fail over the reservation and associated datasets. This must be performed from the secondary region.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;ALTER RESERVATION `project1.region-us-east1.my_failover_reservation` \r\n SET OPTIONS (is_primary = true);&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc4aa91c0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Fail back to original primary&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Fail back the reservation and associated datasets (performed from the new secondary/old primary).&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;ALTER RESERVATION `project1.region-us-west1.my_failover_reservation` \r\n SET OPTIONS (is_primary = true);&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc4aa91f0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Getting started&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Business continuity is paramount for customers with mission-critical data environments. We are excited to make the preview of BigQuerys managed disaster recovery feature available for your testing. You can learn more about  managed disaster recovery and how to get started in the BigQuery &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/managed-disaster-recovery"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;managed disaster recovery QuickStart&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 06 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/data-analytics/bigquery-gets-managed-disaster-recovery/</guid><category>Management Tools</category><category>Data Analytics</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Maintain business continuity across regions with BigQuery managed disaster recovery</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/data-analytics/bigquery-gets-managed-disaster-recovery/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Larry Henderson</name><title>Product Manager</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Brian Welcker</name><title>Director, Product Management</title><department></department><company></company></author></item><item><title>Advancing the art of AI-driven security with Google Cloud</title><link>https://cloud.google.com/blog/products/identity-security/advancing-the-art-of-ai-driven-security-with-google-cloud-at-rsa/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The advent of generative AI has unlocked new opportunities to empower defenders and security professionals. We have already seen how AI can transform malware analysis at scale as we work to deliver better outcomes for defenders. In fact, using Gemini 1.5 Pro, we were recently able to &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/gemini-for-malware-analysis"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;reverse engineer and analyze&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; the decompiled code of the WannaCry malware in a single pass — and identify the killswitch — in only 34 seconds. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Our vision for AI is to accelerate your ability to protect and defend against threats by shifting from manual, time-intensive efforts to assisted and, ultimately, &lt;/span&gt;&lt;a href="https://inthecloud.withgoogle.com/security-product-vision-ai-security/download.html" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;semi-autonomous security&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; — while providing you with curated tools and services to &lt;/span&gt;&lt;a href="https://services.google.com/fh/files/misc/best-practices-for-securely-deploying-ai-on-google-cloud.pdf" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;secure your AI data, models, applications, and infrastructure&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. We do this by empowering defenders with Gemini in Security, which uses SecLM, our security-tuned API, as well as providing tools and services to manage AI risk to your environment. Our Mandiant experts are able to help you secure your AI journey wherever you are.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_CbJIeSS.max-1000x1000.png"
alt="1"&gt;
&lt;/a&gt;
&lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="5bgn0"&gt;Managing AI risk and empowering defenders with gen AI.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Today at the RSA Conference in San Francisco, were sharing more on our vision for the intersection between AI and cybersecurity, including how we help organizations secure AI systems and provide AI tools to support defenders. We are introducing new AI offerings from Mandiant Consulting and new features in Security Command Center Enterprise to help address security challenges when adopting AI. We are also announcing the general availability of Gemini across several security offerings including &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/introducing-google-threat-intelligence-actionable-threat-intelligence-at-google-scale-at-rsa"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Threat Intelligence&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/introducing-google-security-operations-intel-driven-ai-powered-secops-at-rsa"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Security Operations&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to further empower defenders with generative AI.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;New services leverage security and AI expertise from Google&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As customers integrate AI into every area of their business, they tell us that securing their use of AI is essential. The recent &lt;/span&gt;&lt;a href="https://services.google.com/fh/files/misc/csa_state_of_ai_and_security_survey_google_cloud.pdf" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;State of AI and Security Survey Report&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; from the &lt;/span&gt;&lt;a href="https://cloudsecurityalliance.org/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Security Alliance&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; highlighted that while many professionals are confident in their organizations ability to protect AI systems, there is still a significant portion that recognize the risks of underestimating threats. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Our &lt;/span&gt;&lt;a href="https://safety.google/cybersecurity-advancements/saif/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Secure AI Framework&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (SAIF) provides a taxonomy of risks associated with AI workloads and recommended mitigations. Today we are announcing new offerings from &lt;/span&gt;&lt;a href="http://cloud.google.com/security/solutions/mandiant-ai-consulting"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Mandiant Consulting&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; that can help organizations support SAIF and secure the use of AI. Mandiant's AI consulting services can help assess the security of your AI pipelines and test your AI defense and response with &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/transform/prompt-findings-our-ai-red-teams-first-report-qa"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;red teaming&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. These services can also help your defenders identify and implement ways to use AI to enhance cyber defenses and streamline investigative capabilities. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“The use of AI opens up a world of possibilities and enterprises recognize that in order to take advantage of the potential of these innovations, they need to get ahead of new security risks,” said Jurgen Kutscher, vice president, Mandiant Consulting, Google Cloud. “From helping secure training data to assessing AI applications for vulnerabilities, our Mandiant Consulting experts can provide recommendations based on Googles own experience protecting and deploying AI. Were excited to bring these new services to market to help our clients leverage AI more securely and transform their operations."&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/NSS_demo_RSA_2024_small.gif"
alt="NSS demo RSA 2024 small"&gt;
&lt;/a&gt;
&lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="oojmj"&gt;Notebook Security Scanner identifies package vulnerabilities and recommends next steps to remediate individual packages.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Securing AI workloads against risks&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We are also announcing new AI-protection capabilities that can help our customers implement SAIF by building on our release of &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/introducing-security-command-center-enterprise"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Security Command Center Enterprise&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; — our cloud risk-management solution that fuses cloud security and enterprise security operations: &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Notebook Security Scanner&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, now available in preview, detects and provides remediation advice for vulnerabilities introduced by open-source software installed in managed notebooks.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Model Armor&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, expected to be in preview in Q3, can&lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt; &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;enable customers to inspect, route, and protect foundation model prompts and responses. It can help customers &lt;/span&gt;&lt;a href="https://cloud.google.com/transform/5-gen-ai-security-terms-busy-business-leaders-should-know"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;mitigate risks&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; such as prompt injections, jailbreaks, toxic content, and sensitive data leakage. Model Armor will integrate with products across Google Cloud, including Vertex AI. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If youd like to learn more about early access for Model Armor, you can&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://forms.gle/egcAxwmyaQzaeZH4A" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;sign up here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/3_Sfm220W.gif"
alt="3"&gt;
&lt;/a&gt;
&lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="thm68"&gt;Model Armor allows users to configure policies and set content safety filters to help block or redact inappropriate model prompts and responses.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Empowering defenders with new gen AI security tools&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Today, weve also shared how security teams can better defend against threats with &lt;/span&gt;&lt;a href="https://cloud.google.com/security/products/security-operations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Security Operations&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, our AI-powered platform to help empower SOC teams to more easily detect and respond to threats. Gemini in Security Operations now includes a new assisted investigation feature that navigates users through the platform based on the context of an investigation. It can help hunt for the latest threats with vital information from Google Threat Intelligence and MITRE, analyze security events, create detections using natural language, and recommend next steps to take. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Users can also ask Gemini to create a response playbook using natural language, which can simplify the time-consuming task of manually constructing one. The user can further refine the generated playbook and simulate its execution. These new enhancements can give security teams a boost across the detection and response lifecycle. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“Gemini in Security Operations is enabling us to enhance the efficiency of our Cybersecurity Operations Center program as we continue to drive operational excellence,” said Ronald Smalley, senior vice president, cybersecurity operations, Fiserv. “Detection engineers can create detections and playbooks with less effort, and security analysts can find answers quickly with intelligent summarization and natural language search. This is critical as SOC teams continue to manage increasing data volumes and need to detect, validate, and respond to events faster.“&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/4_Mtsip4A.gif"
alt="4"&gt;
&lt;/a&gt;
&lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="thm68"&gt;Gemini in Security Operations aids investigations and helps users easily create rules for detections.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We also are introducing &lt;/span&gt;&lt;a href="https://cloud.google.com/security/products/threat-intelligence/?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Threat Intelligence&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, a new offering that can help you reduce the time it takes to identify and protect against novel threats by bringing together investigative learnings from Mandiant frontline experts, the VirusTotal intel community, and Google threat insights from protecting billions of devices and user accounts. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With Gemini in Threat Intelligence, analysts can now conversationally search Mandiants vast frontline research to understand threat actor behaviors in seconds, and read AI-powered summaries of relevant open-source intelligence (OSINT) articles the platform automatically ingests to help reduce investigation time. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“Our main objective is to understand the purpose of the threat actor. The AI summaries provided by Gemini in Threat Intelligence make it easy to get an overview of the actor, information about relevant entities, and which regions they're targeting,” said the director of information security at a leading multinational professional services organization. “The information flows really smoothly and helps us gather the intelligence we need in a fraction of the time."&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Plus, Gemini in Threat Intelligence includes &lt;/span&gt;&lt;a href="https://blog.virustotal.com/2024/01/uncovering-hidden-threats-with.html" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Code Insight&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, which can inspect more than 200 file types, summarize their unique properties, and identify potentially malicious code. Gemini makes it easier for security professionals to understand the threats that matter most to their organization and take action to respond.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/5_qBjrMG1.gif"
alt="5"&gt;
&lt;/a&gt;
&lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="thm68"&gt;Gemini in Google Threat Intelligence allows users to conversationally search Mandiants vast corpus of frontline research.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Make Google part of your security team&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With rapid advances in AI technology, the line of what is possible is a moving target. We have a &lt;/span&gt;&lt;a href="https://inthecloud.withgoogle.com/security-product-vision-ai-security/download.html" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;vision&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;for a world in which the practice of “doing security” is less laborious and more durable, as AI offloads routine tasks and frees the experts to focus on the most complex issues. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Organizations can now address security challenges with the same capabilities that Google uses to keep more people and organizations safe online than anyone else in the world&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To learn more about AI and security, and the rest of Google Cloud Securitys co&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;mprehensive portfolio&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;, come meet us in person at our &lt;/span&gt;&lt;a href="https://www.rsaconference.com/usa/expo-and-sponsors/sponsor-details/google-cloud%20security-1690826518852001xqzp" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;RSA Conference booth&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (N5644). You can also catch us at our RSA Conference &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/your-insiders-guide-to-google-cloud-security-at-rsa-conference-2024"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;keynotes, presentations, and meetups&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and get the latest &lt;/span&gt;&lt;a href="http://cloud.google.com/security/ai"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;AI and Security updates here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 06 May 2024 13:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/identity-security/advancing-the-art-of-ai-driven-security-with-google-cloud-at-rsa/</guid><category>Security &amp; Identity</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/AI-driven_security.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Advancing the art of AI-driven security with Google Cloud</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/AI-driven_security.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/identity-security/advancing-the-art-of-ai-driven-security-with-google-cloud-at-rsa/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Steph Hay</name><title>Senior Director, Google Cloud Security</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Umesh Shankar</name><title>Chief Technologist, Google Cloud Security</title><department></department><company></company></author></item><item><title>Introducing Google Security Operations: Intel-driven, AI-powered SecOps</title><link>https://cloud.google.com/blog/products/identity-security/introducing-google-security-operations-intel-driven-ai-powered-secops-at-rsa/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In the generative AI-era, security teams are looking for a fully-operational, high-performing security operations solution that can drive productivity while empowering defenders to detect and mitigate new threats.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Today at the RSA Conference in San Francisco, were announcing &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/advancing-the-art-of-ai-driven-security-with-google-cloud-at-rsa"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;AI innovations across the Google Cloud Security portfolio&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, including &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/introducing-google-threat-intelligence-actionable-threat-intelligence-at-google-scale-at-rsa"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Threat Intelligence&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and the latest release of Google Security Operations. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Todays update is designed help to reduce the do-it-yourself complexity of SecOps and enhance the productivity of your entire Security Operations Center.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;
&lt;div class="article-module article-video "&gt;
&lt;figure&gt;
&lt;a class="h-c-video h-c-video--marquee"
href="https://youtube.com/watch?v=R1zObTV2oZo"
data-glue-modal-trigger="uni-modal-R1zObTV2oZo-"
data-glue-modal-disabled-on-mobile="true"&gt;
&lt;div class="article-video__aspect-image"
style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/1_-_Google_Cloud_YouTube__Brand_Anthem.max-1000x1000.jpg);"&gt;
&lt;span class="h-u-visually-hidden"&gt;Introducing Google Security Operations&lt;/span&gt;
&lt;/div&gt;
&lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
&lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="h-c-modal--video"
data-glue-modal="uni-modal-R1zObTV2oZo-"
data-glue-modal-close-label="Close Dialog"&gt;
&lt;a class="glue-yt-video"
data-glue-yt-video-autoplay="true"
data-glue-yt-video-height="99%"
data-glue-yt-video-vid="R1zObTV2oZo"
data-glue-yt-video-width="100%"
href="https://youtube.com/watch?v=R1zObTV2oZo"
ng-cloak&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Turn intelligence into action&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;At &lt;/span&gt;&lt;a href="https://cloud.withgoogle.com/next/session-library?filters=track-security-professionals#all" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Next 24&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, we shared how Applied Threat Intelligence can help teams turn intelligence into action, uncover more threats with less effort, and unlock deeper threat hunting and investigation workflows. Today we are unveiling new features that will use AI to automatically generate detections based on new threat discoveries. Coming later this year, this new capability will help enable you to identify malicious activity operating in your environment, and share clear directions that guide you through triage and response. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“Google Security Operations provides access to unique threat intelligence and advanced capabilities that are highly integrated into the platform. It enables security teams to surface the latest threats in a turnkey way that doesnt require complicated engineering,” said Michelle Abraham, research director, IDC. ”Google is a potential partner for organizations in the fight against existing and emerging threats.”&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_lLkyWjS.max-1000x1000.png"
alt="image1"&gt;
&lt;/a&gt;
&lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="06wt8"&gt;Google Security Operations is a unified, AI and intel-driven platform for threat detection, investigation, and response.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Uncover the latest threats with curated detections&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To help reduce manual processes and provide better security outcomes for our customers, &lt;/span&gt;&lt;a href="https://cloud.google.com/security/products/security-operations"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Security Operations &lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;includes a rich set of curated detections. Developed and maintained regularly by Google and Mandiant experts, curated detections can enable customers to detect threats relevant to their environment. Notable new curated detections include:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud detections&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; can addresses serverless threats, cryptomining incidents across Google Cloud, all Google Cloud and Security Command Center Enterprise findings, anomalous user behavior rules, machine learning-generated lists of prioritized endpoint alerts (based on factors such as user and entity context), and baseline coverage for AWS including identity, compute, data services, and secret management. We have also added detections based on learnings from the Mandiant &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/a-year-in-the-cybersecurity-trenches-with-mandiant-managed-defense"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Managed Defense team&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Detections are now available in Google Security Operations Enterprise and Enterprise Plus packages. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Frontline threat detections&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; can provide coverage for recently-detected methodologies, and is based on threat actor tactics, techniques and procedures (TTPs), including from nation-states and newly-detected malware families. New threats discovered by Mandiants elite team, including during incident response engagements, are then made available as detections. It is now available in the Google Security Operations Enterprise Plus package. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Drive productivity for all with AI-powered SecOps &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The addition of Gemini in Security Operations can elevate the skills of your security team. It can help reduce the time security analysts spend writing, running, and refining searches and triaging complex cases by approximately sevenfold. Security teams can search for additional context, better understand threat actor campaigns and tactics, initiate response sequences and receive guided recommendations on next steps — all using natural language. Today we are sharing two exciting updates to Gemini in Security Operations.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Now generally available, the &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Investigation Assistant&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; feature can help security professionals make faster decisions and respond to threats with more precision and speed by answering questions, summarizing events, hunting for threats, creating rules, and receiving recommended actions based on the context of investigations.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/2_-_Investigation_Assistant.gif"
alt="2 - Investigation Assistant"&gt;
&lt;/a&gt;
&lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="06wt8"&gt;Investigation Assistant can help answer questions, summarize events, hunt for threats, create rules, and recommend actions.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Playbook Assistant&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, now in preview, can help teams easily build response playbooks, customize configurations, and incorporate best practices — helping simplify time-consuming tasks that require deep expertise.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/original_images/3_-_Playbook_Assistant.gif"
alt="3 - Playbook Assistant"&gt;
&lt;/a&gt;
&lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="06wt8"&gt;Playbook Assistant can help build response playbooks, customize configurations, and incorporate best practices.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Reduce manual work with autonomous parsers  &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Getting data into the system and maintaining the pipeline is a critical yet time consuming task in security operations. As log sources change and new fields need to be extracted, security engineers and architects are often required to spend considerable time writing new parsing logic and ensuring backward compatibility. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Today we are excited to announce that Google Security Operations can now &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;automatically parse log files&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; by extracting all key-value pairs to make them available for search, rules, and analytics. Available in preview, automatic parsing can help reduce the maintenance overhead of parsers in general, and also reduce the time consuming task of creating custom parsers. It supports JSON-based logs, and we will be adding support for other log formats.  Automatically parsing log files can help security teams have the right data and context, making for faster and more effective investigations and detection authoring.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;
&lt;div class="article-module article-video "&gt;
&lt;figure&gt;
&lt;a class="h-c-video h-c-video--marquee"
href="https://youtube.com/watch?v=23rAFK1l4l8"
data-glue-modal-trigger="uni-modal-23rAFK1l4l8-"
data-glue-modal-disabled-on-mobile="true"&gt;
&lt;div class="article-video__aspect-image"
style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/4-_Google_Cloud_YouTube__WhyCustomersLove.max-1000x1000.jpg);"&gt;
&lt;span class="h-u-visually-hidden"&gt;Hear Why Customers Love Google Security Operations&lt;/span&gt;
&lt;/div&gt;
&lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
&lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="h-c-modal--video"
data-glue-modal="uni-modal-23rAFK1l4l8-"
data-glue-modal-close-label="Close Dialog"&gt;
&lt;a class="glue-yt-video"
data-glue-yt-video-autoplay="true"
data-glue-yt-video-height="99%"
data-glue-yt-video-vid="23rAFK1l4l8"
data-glue-yt-video-width="100%"
href="https://youtube.com/watch?v=23rAFK1l4l8"
ng-cloak&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Raise the bar for defense&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For customers in need of expert support for managing Google Security Operations, weve got you covered. Google Security Operations can also work in concert with Mandiant Managed Defense and Mandiant Hunt, which can help you to reduce risks to your organization. Mandiant's team of seasoned defenders, analysts, and threat hunters work seamlessly with your security team and the AI-infused capabilities of Google Security Operations to quickly and effectively hunt or monitor, detect, triage, investigate, and respond to incidents. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;And for our public sector customers that may have more specialized requirements, we offer &lt;/span&gt;&lt;a href="https://youtu.be/Uw5glgDmDhc?t=1709" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google SecOps CyberShield&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to help governments worldwide build an enhanced cyber threat capability. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To learn more about Google Security Operations, and the rest of Google Cloud Securitys comprehensive portfolio including an &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/chrome-enterprise-expands-ecosystem-to-strengthen-endpoint-security-at-rsa"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;expanded Chrome Enterprise ecosystem&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, come meet us in person at our &lt;/span&gt;&lt;a href="https://www.rsaconference.com/usa/expo-and-sponsors/sponsor-details/google-cloud%20security-1690826518852001xqzp" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;RSA Conference booth&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (N5644). You can also catch us at our &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/your-insiders-guide-to-google-cloud-security-at-rsa-conference-2024"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;keynotes, presentations, and meetups&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; including our session, “&lt;/span&gt;&lt;a href="https://www.rsaconference.com/usa/agenda/session/Bye-Bye%20DIY%20Frictionless%20Security%20Operations%20with%20Google" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Bye-Bye DIY: Frictionless Security Operations with Google&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;,” on Tuesday, May 7, at 1:15 p.m. PDT. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Not attending RSAC? Join us for our upcoming webinar, “&lt;/span&gt;&lt;a href="https://www.brighttalk.com/webcast/18282/610656?utm_source=GoogleCloudSecurity&amp;amp;utm_medium=email&amp;amp;utm_campaign=610656" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Stay ahead of the latest threats with intelligence-driven security operations&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;,” on Wednesday, May 22, at 11:00 a.m. PDT. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 06 May 2024 13:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/identity-security/introducing-google-security-operations-intel-driven-ai-powered-secops-at-rsa/</guid><category>Security &amp; Identity</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/0-_blog_header_-_19132_Security_BlogHeader_2.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Introducing Google Security Operations: Intel-driven, AI-powered SecOps</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/0-_blog_header_-_19132_Security_BlogHeader_2.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/identity-security/introducing-google-security-operations-intel-driven-ai-powered-secops-at-rsa/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Chris Corde</name><title>Director, Product Management</title><department></department><company></company></author></item><item><title>Introducing Google Threat Intelligence: Actionable threat intelligence at Google scale</title><link>https://cloud.google.com/blog/products/identity-security/introducing-google-threat-intelligence-actionable-threat-intelligence-at-google-scale-at-rsa/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For decades, threat intelligence solutions have had two main challenges: They lack a comprehensive view of the threat landscape, and to get value from intelligence, organizations have to spend excess time, energy, and money trying to collect and operationalize the data.   &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Today at the RSA Conference in San Francisco, we are announcing &lt;/span&gt;&lt;a href="https://cloud.google.com/security/products/threat-intelligence/?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Threat Intelligence&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, a new offering that combines the unmatched depth of our Mandiant frontline expertise, the global reach of the VirusTotal community, and the breadth of visibility only Google can deliver, based on billions of signals across devices and emails. Google Threat Intelligence includes Gemini in Threat Intelligence, our AI-powered agent that provides conversational search across our vast repository of threat intelligence, enabling customers to gain insights and protect themselves from threats faster than ever before.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;“While there is no shortage of threat intelligence available, the challenge for most is to contextualize and operationalize intelligence relevant to their specific organization,” said Dave Gruber, principal analyst, Enterprise Strategy Group. “Unarguably, Google provides two of the most important pillars of threat intelligence in the industry today with VirusTotal and Mandiant. Integrating both into a single offering, enhanced with AI and Google threat insights, offers security teams a new means to operationalize actionable threat intelligence to better protect their organizations.”&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Unmatched visibility into threats&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Threat Intelligence provides unparalleled visibility into the global threat landscape. We offer deep insights from Mandiants leading incident response and threat research team, and combine them with our massive user and device footprint and VirusTotals broad crowdsourced malware database. &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Google threat insights: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Google protects 4 billion devices and 1.5 billion email accounts, and blocks 100 million phishing attempts per day. This provides us with a vast sensor array and a unique perspective on internet and email-borne threats that allow us to connect the dots back to attack campaigns.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Frontline intelligence:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Mandiant's eIite incident responders and security consultants dissect attacker tactics and techniques, using their experience to help customers defend against sophisticated and relentless threat actors across the globe in over 1,100 investigations annually.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Human-curated threat intelligence:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Mandiants global threat experts meticulously monitor threat actor groups for activity and changes in their behavior to contextualize ongoing investigations and provide the insights you need to respond. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Crowdsourced threat intelligence:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; VirusTotal's global community of over 1 million users continuously contributes potential threat indicators, including files and URLs, to offer real-time insight into emerging attacks.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Open-source threat intelligence&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: We use open-source threat intelligence to enrich our knowledge base with current discoveries from the security community.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--medium
h-c-grid__col
h-c-grid__col--4 h-c-grid__col--offset-4
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_-_vision_wheel.max-1000x1000.png"
alt="1 - vision wheel"&gt;
&lt;/a&gt;
&lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="g00bm"&gt;Google Threat Intelligence boasts a diverse set of sources that provide a panoramic view of the global threat landscape and the granular details needed to make informed decisions.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This comprehensive view allows Google Threat Intelligence to help protect your organization in a variety of ways, including external threat monitoring, attack surface management, digital risk protection, Indicators of Compromise (IOC) analysis, and expertise.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;AI-driven operationalization&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Traditional approaches to operationalizing threat intelligence are labor-intensive and can slow down your ability to respond to evolving threats, potentially taking days or weeks to respond.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;
&lt;div class="article-module article-video "&gt;
&lt;figure&gt;
&lt;a class="h-c-video h-c-video--marquee"
href="https://youtube.com/watch?v=QGUri8v4THc"
data-glue-modal-trigger="uni-modal-QGUri8v4THc-"
data-glue-modal-disabled-on-mobile="true"&gt;
&lt;div class="article-video__aspect-image"
style="background-image: url(https://storage.googleapis.com/gweb-cloudblog-publish/images/2_-_Code_Insights_thumbnail.max-1000x1000.png);"&gt;
&lt;span class="h-u-visually-hidden"&gt;Google Threat Intelligence - Code Insights&lt;/span&gt;
&lt;/div&gt;
&lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
&lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;figcaption class="article-video__caption h-c-page"&gt;
&lt;h4 class="h-c-headline h-c-headline--four h-u-font-weight-medium h-u-mt-std"&gt;Google Threat Intelligence uses Gemini to analyze potentially malicious code and provides a summary of its findings.&lt;/h4&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="h-c-modal--video"
data-glue-modal="uni-modal-QGUri8v4THc-"
data-glue-modal-close-label="Close Dialog"&gt;
&lt;a class="glue-yt-video"
data-glue-yt-video-autoplay="true"
data-glue-yt-video-height="99%"
data-glue-yt-video-vid="QGUri8v4THc"
data-glue-yt-video-width="100%"
href="https://youtube.com/watch?v=QGUri8v4THc"
ng-cloak&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By combining our comprehensive view of the threat landscape with Gemini, we have supercharged the threat research processes, augmented defense capabilities, and reduced the time it takes to identify and protect against novel threats. Customers now have the ability to condense large data sets in seconds, quickly analyze suspicious files, and simplify challenging manual threat intelligence tasks.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;How Gemini helps simplify and assist with threat intelligence&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Gemini 1.5 Pro is a valuable part of Google Threat Intelligence, and weve integrated it so that it can more efficiently and effectively assist security professionals in combating malware.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Gemini 1.5 Pro &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;offers the worlds longest context window, with support for up to &lt;/span&gt;&lt;a href="https://blog.google/technology/ai/google-gemini-next-generation-model-february-2024/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;1 million tokens&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. It &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;can dramatically simplify the technical and labor-intensive process of reverse engineering malware — one of the most advanced malware-analysis techniques available to cybersecurity professionals. In fact, it was able to process the entire decompiled code of the malware file for &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/threat-intelligence/gemini-for-malware-analysis"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;WannaCry in a single pass&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, taking 34 seconds to deliver its analysis and identify the killswitch.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We also offer a Gemini-driven entity extraction tool to automate data fusion and enrichment. It can automatically crawl the web for relevant open source intelligence (OSINT), and classify online industry threat reporting. It then converts this information to knowledge collections, with corresponding hunting and response packs pulled from motivations, targets, tactics, techniques, and procedures (TTPs), actors, toolkits, and Indicators of Compromise (IoCs).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Threat Intelligence can &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;distill more than a decade of threat reports to produce comprehensive, custom summaries in seconds.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Make Google part of your security team&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Threat Intelligence is just one way we can help you in your threat intelligence journey. Whether you need cyber threat intelligence training for your staff, assistance with prioritizing complex threats, or even a dedicated threat analyst embedded in your team, our experts can act as an extension of your own team.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Threat Intelligence is part of Google Cloud Securitys comprehensive security portfolio, which includes &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/introducing-google-security-operations-intel-driven-ai-powered-secops-at-rsa"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Security Operations&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/security/consulting/mandiant-services/?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Mandiant Consulting&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/cloud-ciso-perspectives-tour-the-new-security-command-center-enterprise/"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Security Command Center Enterprise&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/chrome-enterprise-expands-ecosystem-to-strengthen-endpoint-security-at-rsa"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Chrome Enterprise&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. With our offerings, organizations can address security challenges with the same capabilities Google uses to keep more people and organizations safe online than anyone else in the world.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To learn more about &lt;/span&gt;&lt;a href="https://cloud.google.com/security/products/threat-intelligence?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Threat Intelligence&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and the rest of Google Cloud Securitys comprehensive portfolio, come meet us in person at our &lt;/span&gt;&lt;a href="https://www.rsaconference.com/usa/expo-and-sponsors/sponsor-details/google-cloud%20security-1690826518852001xqzp" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;RSA Conference booth&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (N5644), and catch us at our &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/your-insiders-guide-to-google-cloud-security-at-rsa-conference-2024"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;keynotes, presentations, and meetups&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;You can also register for our upcoming &lt;/span&gt;&lt;a href="https://series.brighttalk.com/series/6490?utm_source=MandiantNA&amp;amp;utm_medium=BrightTALK&amp;amp;utm_campaign=6490" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Threat Intelligence use-cases webinar series&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and read our expert analysis and in-depth research at the Google Cloud &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/threat-intelligence"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Threat Intelligence blog&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 06 May 2024 13:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/identity-security/introducing-google-threat-intelligence-actionable-threat-intelligence-at-google-scale-at-rsa/</guid><category>Security &amp; Identity</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/vision_circle.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Introducing Google Threat Intelligence: Actionable threat intelligence at Google scale</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/vision_circle.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/identity-security/introducing-google-threat-intelligence-actionable-threat-intelligence-at-google-scale-at-rsa/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Sunil Potti</name><title>VP/GM, Google Cloud Security</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Sandra Joyce</name><title>VP, Google Threat Intelligence</title><department></department><company></company></author></item><item><title>Chrome Enterprise expands ecosystem to strengthen endpoint security and Zero Trust access</title><link>https://cloud.google.com/blog/products/identity-security/chrome-enterprise-expands-ecosystem-to-strengthen-endpoint-security-at-rsa/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The modern workplace relies on web-based applications and cloud services, making browsers and their sensitive data a primary target for attackers. While the risks are significant, &lt;/span&gt;&lt;a href="https://chromeenterprise.google/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Chrome Enterprise&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; can help organizations simplify and strengthen their endpoint security with secure enterprise browsing. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Following our recent &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/introducing-chrome-enterprise-premium"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Chrome Enterprise Premium&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; launch, today at the RSA Conference in San Francisco, were announcing a growing ecosystem of security providers who are working with us to extend Chrome Enterprises browser-based protections and help enterprises protect their users working on the web and across corporate applications. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Expanding Zero Trust protections with Zscaler&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;&lt;span style="vertical-align: baseline;"&gt;Chrome Enterprise Premium offers advanced security across SaaS and private web applications for enterprises. Many organizations rely on &lt;/span&gt;&lt;a href="https://www.zscaler.com/press/zscaler-joins-forces-google-offer-unparalleled-zero-trust-data-and-threat-protection" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Zscaler Private Access (ZPA)&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; as an improved option over VPNs and firewalls to provide secure, Zero Trust access to private applications on-premises and in the cloud. Now security operations teams can add a layer of additional safeguards through Chrome Enterprise Premium, including: &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Data protections&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: &lt;span style="vertical-align: baseline;"&gt;Critical DLP functions including data exfiltration controls, copy, paste, and print restrictions, and watermarking capabilities. This complements Zscaler's data protection across endpoints, email, SaaS and cloud.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Threat prevention&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Advanced malware scanning, real-time phishing security, and credential protections, augmenting Zscaler's inline inspection of encrypted traffic and built in threat protections.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Security insights&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;: Additional telemetry and reporting across insider and external risks.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google has collaborated with Zscaler to provide enterprises with a &lt;/span&gt;&lt;a href="https://www.zscaler.com/resources/solution-briefs/zs-private-access-google-chrome-enterprise.pdf" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;solution guide&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; that enables organizations to configure their network security products alongside Chrome Enterprise Premium for deeper security and protections.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Browser-based device trust with Cisco Duo&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As attacks targeting end-users become more sophisticated, a multi-layered defense that includes a strong device access policy is crucial. Signals including user identity, device security, and location can enable dynamic, risk-based access decisions that further protect corporate data. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Enterprises can now use &lt;/span&gt;&lt;a href="https://duo.com/partnerships/technology-partners/select-partners/google" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Duo Trusted Endpoints policy&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to enforce&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;a href="https://duo.com/product/device-trust" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;device trust&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; using built-in Chrome Enterprise signals to deny access from unknown devices — without having to deploy additional agents and extensions. This integration allows organizations to:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Verify endpoint trust at login, and block unknown devices&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Manage device access from a centralized Duo dashboard&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Adjust granular policies for an organization of any size in a few clicks&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_-_CE_and_Duo_Screenshot.max-1000x1000.png"
alt="2 - CE and Duo Screenshot"&gt;
&lt;/a&gt;
&lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="9ox4v"&gt;Duo's Trusted Endpoints feature lets organizations grant secure access to applications with policies that verify systems using signals from Chrome.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Data loss prevention with Trellix&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Data loss remains a top concern for enterprises, and the browser is a critical point for stopping data leaks. &lt;/span&gt;&lt;a href="https://www.trellix.com/assets/data-sheets/trellix-dlp-for-chrome-enterprise-data-sheet.pdf" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Trellix DLP&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for Chrome Enterprise is now available as an integration to customers managing Chrome from the cloud. With the Trellix DLP integration, organizations can prevent data leaks in Chrome by:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Monitoring and blocking file uploads with sensitive content&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Tracking and preventing sensitive content from being copied and pasted to websites&lt;/span&gt;&lt;/li&gt;
&lt;li role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Controlling print activity in Chrome browser and on local workstations&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_-_CE_and_Trellix_Screenshot.max-1000x1000.png"
alt="3 - CE and Trellix Screenshot"&gt;
&lt;/a&gt;
&lt;figcaption class="article-image__caption "&gt;&lt;p data-block-key="9ox4v"&gt;When sensitive information is detected in Chrome, the user is immediately notified with a pop-up.&lt;/p&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Current Trellix DLP and Cisco Duo customers can implement these integrations by enrolling browsers into &lt;/span&gt;&lt;a href="https://chromeenterprise.google/products/cloud-management/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Chrome Enterprise Core&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and setting up a one-time configuration, at no additional cost. Learn more about the Trellix DLP integration here and Cisco Duo integration &lt;/span&gt;&lt;a href="https://chromeenterprise.google/solutions/integrations/?modal-id=ciscoduo" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Take the next step&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To learn more about Chrome Enterprise, and the rest of Google Cloud Securitys comprehensive portfolio including our RSAC announcements on &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/advancing-the-art-of-ai-driven-security-with-google-cloud-at-rsa"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud Security and AI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/introducing-google-threat-intelligence-actionable-threat-intelligence-at-google-scale-at-rsa"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Threat Intelligence&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/introducing-google-security-operations-intel-driven-ai-powered-secops-at-rsa"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Security Operations&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, come meet us in person at our &lt;/span&gt;&lt;a href="https://www.rsaconference.com/usa/expo-and-sponsors/sponsor-details/google-cloud%20security-1690826518852001xqzp" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;RSA Conference booth&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (N5644), and catch us at our &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/identity-security/your-insiders-guide-to-google-cloud-security-at-rsa-conference-2024"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;keynotes, presentations, and meetups&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. You can also learn more about &lt;/span&gt;&lt;a href="https://chromeenterprise.google/products/chrome-enterprise-premium/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Chrome Enterprise here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Mon, 06 May 2024 13:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/identity-security/chrome-enterprise-expands-ecosystem-to-strengthen-endpoint-security-at-rsa/</guid><category>Chrome Enterprise</category><category>Security &amp; Identity</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/1-_Blog_header_banner.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Chrome Enterprise expands ecosystem to strengthen endpoint security and Zero Trust access</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/1-_Blog_header_banner.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/identity-security/chrome-enterprise-expands-ecosystem-to-strengthen-endpoint-security-at-rsa/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Kiran Nair</name><title>Senior Product Manager, Chrome Enterprise, Google</title><department></department><company></company></author></item><item><title>Uncomplicating the complex: How Spanner simplifies microservices-based architectures</title><link>https://cloud.google.com/blog/products/databases/why-spanner-is-a-good-fit-for-microservices-based-applications/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;In the realm of modern application design, developers have a range of choices available to them for crafting architectures that are not only simple, but also scalable, performant and resilient. Container platforms like Kubernetes (k8s) offer users the ability to seamlessly adjust node and pod specifications, so that services can scale. This scalability does not come at the expense of elasticity, and also ensures consistent performance for service consumers. So its no surprise that Kubernetes has become the de facto standard for building distributed and resilient systems in medium-to-large organizations.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Unfortunately, the level of maturity and standardization in the Kubernetes space available to system designers in the application layer doesnt usually extend to the database layer that powers these services. And it goes without saying that the database layer also needs to be elastic, scalable, highly available, and resilient. &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Further, the challenges are amplified when these services:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Are required to manage (transactional) states or &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Orchestrate distributed processes across multiple (micro-) services. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Traditional relational database management software (RDBMS) brings with it side effects that are not aligned with a microservices way of thinking, and entails fairly significant trade-offs. In the sections below, we dive deeper into the scalability, availability and operational challenges faced by application designers specifically within the database tier. We then conclude with a description of how Spanner can help you build microservices-based systems without the often unspoken “impedance mismatch” between the application layer and the database layer.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;We look at this problem from a scalability and availability perspective, specifically in the context of databases that cater to OLTP workloads. We explore the intricacies involved in accommodating highly variable workloads, shedding light on the complexities associated with managing higher demands through the utilization of both replicas and sharding techniques.&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Wanted: scalability and availability&lt;/strong&gt;&lt;/h2&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;When it comes to scaling a traditional relational database, you have two choices (leaving aside caching strategies):&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Scale up:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; To scale a database vertically, you typically augment its resources by adding more CPU power, increasing memory, or adding faster disks. However, these scale-up procedures usually incur downtime, affecting the availability of dependent services. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Scale out:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Although vertically scaling up databases can be effective initially, it eventually encounters limitations. The alternative is to scale out database traffic, by introducing additional read replicas, employing sharding techniques, or even a combination of both. These methods come with their own trade-offs and introduce complexities, which lead to operational overhead.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;In terms of &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;availability&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, databases require maintenance, resulting in the need to coordinate regular periods of downtime. Relational databases can also be prone to hardware defects, network partitions, or subject to data center outages that bring a host of DR scenario challenges that you need to address and plan for. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Examples of planned downtime:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;OS or database engine upgrades or patches &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Schema changes - Most database engines require downtime for the duration of a schema change&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Examples of unplanned downtime&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Zonal or regional outages&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Network partitions&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Most “mature” practices for handling traditional RDBMSs run counter to modern application design principles and can significantly impact the availability and performance of services. Depending on the nature of the business, this can have consequences for revenue streams, compliance with regulations, or adversely impact customer satisfaction.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Lets go over some of the key challenges associated with RDBMSs.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Challenges associated with read-replicas&lt;/strong&gt;&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1-READ-REPLICAS.max-1000x1000.png"
alt="1-READ-REPLICAS"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Database read replicas are a suitable tool for scaling out read operations and mitigating planned downtime, so that reads are at least available to the application layer. &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;In order to reduce load on the primary database instance, replicas can be created to distribute read load across multiple machines and thus handle more read requests concurrently. &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Replication between the primary and secondary replicas is usually done asynchronously. This means there can be a lag between when data is written to the primary database and when it is replicated to the read replicas. This can result in read operations getting slightly outdated (stale) data if they are directed to the replicas. This also dictates that guaranteed consistent queries need to be directed to primary instances. Synchronous replication is rarely an option, in particular, not in geo-distributed topologies, as it is complex, and comes with a range of issues such as:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Limiting the scalability of the system, as every write operation must wait for confirmation from the replica, causing performance bottlenecks and increasing latency&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Introducing a single point of failure — if the replica becomes unavailable or experiences issues, it can impact the availability of the primary database as well&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;And lastly, write throughput can become bottlenecked due to the limit on how much write traffic a single database can handle without performance degradation. Scaling writes still requires vertical scaling (more powerful hardware) or sharding (splitting data across multiple databases), which can lead to downtime, additional costs, and limits imposed by non-linearly escalating operational toil. Now lets look at sharding challenges in a bit more detail.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Sharding challenges&lt;/strong&gt;&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2-SHARDING.max-1000x1000.png"
alt="2-SHARDING"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Sharding is a powerful tool for database scalability. When implemented correctly, it can enable applications to handle a much larger volume of read and write transactions. However, sharding does not come without its challenges and brings its own set of complexities that need careful navigation.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;There are multiple ways to shard databases. For instance, &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;they can be split by user id ranges, &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;regions or &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;channels (e.g. web, mobile) etc.. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;As shown in the above example, sharding by user id or region can lead to significant performance improvements, as smaller data ranges are hosted by individual databases and the traffic can be spread across these databases.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Key considerations:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Deciding on the “right” kind of sharding: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;One of the primary challenges of sharding is the initial setup. Deciding on a sharding key, whether it be user ID, region, or another attribute, requires a deep understanding of your data access patterns. A poorly chosen sharding key can result in uneven data distribution, known as "shard imbalance," which can significantly dull the performance benefits of sharding.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Data integrity&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; is another significant concern. When data is spread across multiple shards, maintaining foreign-key relationships becomes difficult. Transactions that span multiple shards become complex and can result in increased latency and decreased integrity.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Operational complexity: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Sharding introduces operational complexity. Managing multiple databases requires a more sophisticated approach to maintenance, backups, and monitoring. Each shard may need to be backed up separately, and restoring a sharded database to a consistent state can be challenging.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Re-sharding: &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;As an application grows, the chosen sharding scheme might need to change. This process involves redistributing the data across a new set of shards, which can be time-consuming and risky, often requiring significant downtime or degraded performance during the transition.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Increased development complexity:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Application logic can become more complex because developers must account for the distribution of data. This could mean additional logic for routing queries to the correct shard, handling partial failures, and ensuring that transactions that need to operate across shards maintain consistency.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Exploding complexity and operations&lt;/strong&gt;&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3-COMPLEXITY.max-1000x1000.png"
alt="3-COMPLEXITY"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Over time, database complexity can grow along with increased traffic, adding further toil to operations. For large systems, a combination of sharding along with attached scale-out read replicas might be required to help ensure cost-effective scalability and performance.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;This combined dual-strategy approach, while effective in handling increasing traffic, significantly ramps up the complexity of the system's architecture. The above illustration captures the need to add scalability and availability to a transactional relational database powering a service. It doesnt even include full details on DR (e.g. backups), or geo-redundancy, nor does it cater to zero-to-low RPO/RTO requirements. &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Furthermore, the dual-strategy approach described above can:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;negatively impact the ease of service maintenance &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;increase operational demands, and &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;elevate the risk associated with the resolution of incidents&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;strong style="vertical-align: baseline;"&gt;Doesnt NoSQL address this?&lt;/strong&gt;&lt;/h2&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;NoSQL databases began to emerge in the early 2000s as a response to traditional RDBMSs above-mentioned limitations. In the new era of big data and web-scale applications, NoSQL databases were designed to overcome the challenges of scalability, performance, flexibility and availability that were imposed by the growing volume of semi-structured data. &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;However, the key tradeoff they made was to drop sound relational models, SQL, and support for ACID-compliant transactions. However, many prominent system architects have questioned the wisdom of abandoning these well-worn relational concepts for OLTP workloads, as they are essential features that still power mission-critical applications. As such, theres been a recent trend to (re)introduce relational database features into NoSQL databases, such as ACID transactions in MongoDB and Cassandra Query Language (CQL) in Cassandra.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style="text-align: justify;"&gt;&lt;strong style="vertical-align: baseline;"&gt;Enter Spanner&lt;/strong&gt;&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--medium
h-c-grid__col
h-c-grid__col--4 h-c-grid__col--offset-4
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/4-SIMPLIFY-WITH-SPANNER.max-1000x1000.png"
alt="4-SIMPLIFY-WITH-SPANNER"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p style="text-align: justify;"&gt;&lt;a href="https://cloud.google.com/spanner"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Spanner&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; eliminates much of this complexity and helps facilitate a simple and easy-to-maintain architecture without most of the above-mentioned compromises. It combines relational concepts and features (SQL, ACID transactions) with seamless horizontal scalability, providing geo-redundancy with up to 99.999% availability that you want when designing a microservices-based application.&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;We want to emphasize that were not arguing that Spanner is &lt;/span&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;only&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; a good fit for microservices. All the things that make Spanner a great fit for microservices also make it great for monolithic applications. &lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;To summarize, a microservices architecture built on Spanner allows software architects to design systems where both the application and database provide:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;“Scale insurance” for future growth scenarios&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;An easy way to handle traffic spikes&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Cost efficiency through Spanners elastic and instant compute provisioning&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Up to 99.999% availability with geo-redundancy&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;No downtime windows (for maintenance or other upgrades)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Enterprise-grade security such as encryption at rest and in-transit&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Features to cater for transactional workloads&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation" style="text-align: justify;"&gt;&lt;span style="vertical-align: baseline;"&gt;Increases in developer productivity (e.g. SQL)&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can &lt;/span&gt;&lt;a href="https://goo.gle/SpannerDatabaseUnlimited" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;learn more&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; about what makes Spanner unique and how its being used today. Or &lt;/span&gt;&lt;a href="https://cloud.google.com/spanner/docs/free-trial-quickstart"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;try it yourself for free&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for 90-days or for as little as $65 USD/month for a production-ready instance that grows with your business without downtime or disruptive re-architecture.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 03 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/databases/why-spanner-is-a-good-fit-for-microservices-based-applications/</guid><category>Spanner</category><category>Databases</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Uncomplicating the complex: How Spanner simplifies microservices-based architectures</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/databases/why-spanner-is-a-good-fit-for-microservices-based-applications/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Szabolcs Rozsnyai</name><title>Senior Staff Solutions Architect, Spanner</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Karthi Thyagarajan</name><title>Senior Staff Solutions Architect, Spanner</title><department></department><company></company></author></item><item><title>Making API calls exactly once when using Workflows</title><link>https://cloud.google.com/blog/products/application-development/using-single-execution-calls-with-workflows/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;h2&gt;&lt;strong style="vertical-align: baseline;"&gt;Introduction&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;One challenge with any distributed system, including &lt;/span&gt;&lt;a href="https://cloud.google.com/workflows"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Workflows&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, is ensuring that requests sent from one service to another are processed exactly once, when needed; for example, when placing a customer order in a shipping queue, withdrawing funds from a bank account, or processing a payment.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In this blog post, well provide an example of a website invoking Workflows, and Workflows in turn invoking&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;a &lt;/span&gt;&lt;a href="https://cloud.google.com/functions"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Function&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Well show how to make sure both Workflows and the Cloud Function logic only runs once. Well also talk about how to invoke Workflows exactly once when using &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/introducing-workflows-callbacks"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;HTTP callbacks&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/pubsub"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Pub/Sub&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; messages, or &lt;/span&gt;&lt;a href="https://cloud.google.com/tasks"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Tasks&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong style="vertical-align: baseline;"&gt;Invoke Workflows exactly once&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Imagine you have an online store and youre using Workflows to create new orders, save to Firestore, and process payments by calling a Cloud Function:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_hVpeh5J.max-1000x1000.png"
alt="image1"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;A new customer order comes in, the website makes an API call to Workflows but receives an error. Two possible scenarios are:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt; (1) The request is lost and the workflow is never invoked:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--medium
h-c-grid__col
h-c-grid__col--4 h-c-grid__col--offset-4
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image2_1VaigE8.max-1000x1000.png"
alt="image2"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;(2) The workflow is invoked and executes successfully, however the response is lost:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--medium
h-c-grid__col
h-c-grid__col--4 h-c-grid__col--offset-4
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image3_Lfq82pR.max-1000x1000.png"
alt="image3"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;How can you make sure the workflow executes once?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To solve this, the website retries the same request. One easy solution is to check if a document already exists in Firestore:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;main:\r\n params: []\r\n steps:\r\n - init:\r\n assign:\r\n - project_id: ${sys.get_env(&amp;quot;GOOGLE_CLOUD_PROJECT_ID&amp;quot;)}\r\n - order_id: &amp;quot;12345&amp;quot; # In practice we would pass in the order ID as a workflow parameter, e.g. ${params[0]}\r\n - firestore_collection: &amp;quot;orders&amp;quot;\r\n - URL: https://us-central1-&amp;lt;your_project_id&amp;gt;.cloudfunctions.net/processpayment\r\n - create_document:\r\n try:\r\n call: googleapis.firestore.v1.projects.databases.documents.createDocument\r\n args:\r\n collectionId: ${firestore_collection}\r\n parent: ${&amp;quot;projects/&amp;quot; + project_id + &amp;quot;/databases/(default)/documents&amp;quot;}\r\n query:\r\n documentId: ${order_id}\r\n except:\r\n as: e\r\n steps:\r\n - endEarly:\r\n return: ${e} # Exception is raised, e.g. ${e.code == 409} if doc already exists\r\n - processPayment:\r\n ...&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc698f910&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;processPayment &lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;step will execute only if a document is successfully created. This is effectively a 1-bit state machine, idempotent, and a valid solution. The downside of this solution is that its not extensible. We might want to complete additional work in this handler before changing states, or expand the number of states within the system. Next, lets continue with a more advanced solution for the same problem.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong style="vertical-align: baseline;"&gt;Invoke Cloud Functions from Workflows exactly once&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Lets see what happens when the workflow uses a Cloud Function to process the payment. You might have the following step to call Cloud Functions:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;- processPayment:\r\n call: http.post\r\n args:\r\n url: https://us-central1-&amp;lt;your_project_id&amp;gt;.cloudfunctions.net/processpayment\r\n auth:\r\n type: OIDC&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc698feb0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By default, Workflows offers &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;at-most-once&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; delivery (no retries) with HTTP requests. Thats usually OK because 99.9+% of the time, the call is successful, and a response is received.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In the rare case of failure, a &lt;/span&gt;&lt;a href="https://cloud.google.com/workflows/docs/reference/syntax/error-types#error-tags"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;ConnectionError&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; might be raised. As in the website-to-workflow situation discussed previously, the workflow cant tell which scenario occurred. Similarly, you can add retries. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Lets add a &lt;/span&gt;&lt;a href="https://cloud.google.com/workflows/docs/reference/syntax/retrying#default-retry-policy"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;default retry policy&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to handle this:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;- processPayment:\r\n try:\r\n call: http.post\r\n args:\r\n url: https://us-central1-&amp;lt;your_project_id&amp;gt;.cloudfunctions.net/processpayment\r\n auth:\r\n type: OIDC\r\n retry: ${http.default_retry} # Retries up to 5 times, includes &amp;#x27;ConnectionError&amp;#x27;&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc698f0a0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Let's say the second delivery scenario occurs where the request is received by the Cloud Function but the response is lost. By adding retries, Workflows will likely invoke the Cloud Function multiple times. When this happens, how do you ensure that the code in the Cloud Function only runs once? &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Youll need to add extra logic to the Cloud Function to check and update the payment state in Firestore:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image4_HtrYAfU.max-1000x1000.png"
alt="image4"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Lets also assume you want to track the workflow &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;EXECUTION_ID&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; in Firestore and use the following &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;order_state &lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;enum to allow for additional flexibility in payment processing:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;payment_not_processed // Initial state when an order is created\r\npayment_declined // Payment was not successful\r\npayment_successful // Payment processed successfully\r\n...&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc85b8c40&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can expand on the previous workflow and call a Cloud Function to process the payment:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;main:\r\n params: []\r\n steps:\r\n - init:\r\n assign:\r\n - project_id: ${sys.get_env(&amp;quot;GOOGLE_CLOUD_PROJECT_ID&amp;quot;)}\r\n - order_id: &amp;quot;12345&amp;quot; # In practice we would pass in the order ID as a workflow parameter, e.g. ${params[0]}\r\n - firestore_collection: &amp;quot;orders&amp;quot;\r\n - URL: https://us-central1-&amp;lt;your_project_id&amp;gt;.cloudfunctions.net/processpayment\r\n - create_document:\r\n try:\r\n call: googleapis.firestore.v1.projects.databases.documents.createDocument\r\n args:\r\n collectionId: ${firestore_collection}\r\n parent: ${&amp;quot;projects/&amp;quot; + project_id + &amp;quot;/databases/(default)/documents&amp;quot;}\r\n query:\r\n documentId: ${order_id}\r\n body:\r\n fields:\r\n order_state: # We set an initial state\r\n stringValue: &amp;quot;payment_not_processed&amp;quot;\r\n workflow_id: # And also track this workflow execution ID\r\n stringValue: ${sys.get_env(&amp;quot;GOOGLE_CLOUD_WORKFLOW_EXECUTION_ID&amp;quot;)}\r\n except:\r\n as: e\r\n steps:\r\n - endEarly:\r\n return: ${e} # Exception is raised, e.g. ${e.code == 409} if doc already exists\r\n - processPayment:\r\n try:\r\n call: http.post\r\n args:\r\n url: ${URL} # Might get called multiple times!\r\n auth:\r\n type: OIDC\r\n body:\r\n order_id: ${order_id}\r\n result: r\r\n retry: ${http.default_retry}\r\n - returnStep:\r\n return: ${r}&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc85b8670&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Heres the Cloud Function (Node.js v20) that processes the payment:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;const functions = require(\&amp;#x27;@google-cloud/functions-framework\&amp;#x27;);\r\nconst firestore = require(\&amp;#x27;@google-cloud/firestore\&amp;#x27;);\r\n\r\n\r\nfunctions.http(\&amp;#x27;helloHttp\&amp;#x27;, (req, res) =&amp;gt; {\r\n const fs = new firestore.Firestore();\r\n try{\r\n// Reads the current state from Firestore and updates it within the same transaction to make this handler idempotent. Using a transaction is important. Note: It could be run multiple times but will only be committed once.\r\n return fs.runTransaction(t =&amp;gt; {\r\n const docRef = fs.doc(&amp;quot;orders/&amp;quot; + req.body.order_id);\r\n return t.get(docRef).then(doc =&amp;gt; {\r\n console.log(doc, \&amp;#x27;=&amp;gt;\&amp;#x27;, doc);\r\n var state = doc.data().order_state\r\n // Only process the order if we haven\&amp;#x27;t already\r\n if (state == &amp;quot;payment_not_processed&amp;quot;) {\r\n // Do payment stuff, e.g. debit account from another Firestore document\r\n // ...\r\n //\r\n state = &amp;quot;payment_successful&amp;quot;\r\n t.update(docRef, {order_state: state})\r\n res.status(200).send(state);\r\n return\r\n }\r\n res.status(200).send(&amp;quot;request ignored, state already: &amp;quot; + state);\r\n });\r\n }).then(result =&amp;gt; {\r\n console.log(\&amp;#x27;Transaction result: \&amp;#x27;, result);\r\n });\r\n } catch (e) {\r\n console.log(\&amp;#x27;Transaction failure:\&amp;#x27;, e);\r\n } \r\n});&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc8110610&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;code style="vertical-align: baseline;"&gt;package.json&lt;/code&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;{\r\n &amp;quot;dependencies&amp;quot;: {\r\n &amp;quot;@google-cloud/functions-framework&amp;quot;: &amp;quot;^3.3.0&amp;quot;,\r\n &amp;quot;@google-cloud/firestore&amp;quot;: &amp;quot;^7.6.0&amp;quot;\r\n }\r\n}&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc81107f0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The key takeaway is that all payment processing work occurs within a &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;transaction&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;, making all actions idempotent. The code within the transaction might run multiple times due to Workflows retries, but its only committed once. &lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong style="vertical-align: baseline;"&gt;What about HTTP callbacks, Pub/Sub, Cloud Tasks?&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;So far, weve talked about how to make website-to-workflow and Workflows to Cloud Functions requests, exactly once. There are other ways of invoking or resuming Workflows such as &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/topics/developers-practitioners/introducing-workflows-callbacks"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;HTTP callbacks&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, Pub/Sub messages or Cloud Tasks. How do you make those requests exactly once? Lets take a look.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Callbacks&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The good news is that Workflows HTTP callbacks are fully idempotent by default. Its safe to retry a callback if it fails. For example:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;- createCallbackStep:\r\n call: events.create_callback_endpoint\r\n args:\r\n http_callback_method: &amp;quot;POST&amp;quot;\r\n result: callback_details\r\n- sendOutURL:\r\n call: http.post\r\n args:\r\n url: &amp;quot;https://your-endpoint.com/foo&amp;quot;\r\n body:\r\n callback_to_use: ${callback_details.url}\r\n...\r\n- callbackWaitStep:\r\n call: events.await_callback\r\n args:\r\n callback: ${callback_details}&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc8110220&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Lets assume that the first callback returns an error to the external caller. Based on the error, the caller might not know if the workflow callback was received, and should retry the callback. On the second callback, the caller will receive one of the following HTTP status codes:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;429&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; indicates that the first callback was received successfully. The second callback is rejected by the workflow.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;200&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; indicates that the second callback was received successfully. The first callback was either never received, or was received and processed successfully. If the latter, the second callback is not processed because &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;await_callback &lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;is called only once. The second callback is discarded at the end of the workflow.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;404&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; indicates that a callback is not available. Either the first callback was received and processed and the workflow has completed, or the workflow is not running (and has failed, for example). To confirm this, youll need to send an API request to query the workflow execution state.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For more details, see &lt;/span&gt;&lt;a href="https://cloud.google.com/workflows/docs/creating-callback-endpoints#invoke-once"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Invoke a workflow exactly once using callbacks&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Pub/Sub messages &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When using Pub/Sub to &lt;/span&gt;&lt;a href="https://cloud.google.com/workflows/docs/trigger-workflow-eventarc"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;trigger&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; a new workflow execution, Pub/Sub uses &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;at-least-once&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; delivery with Workflows, and will retry on any delivery failure. Pub/Sub messages are automatically deduplicated. You dont need to worry about duplicate deliveries in that time window (24 hours).&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Cloud Tasks&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Cloud Tasks is commonly used to &lt;/span&gt;&lt;a href="https://cloud.google.com/workflows/docs/tutorials/buffer-workflows-executions"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;buffer workflow executions&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and provides &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;at-least-once &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;delivery but it &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;doesnt&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; have message deduplication. Workflow handlers &lt;/span&gt;&lt;a href="https://cloud.google.com/tasks/docs/dual-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;should be idempotent&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;strong style="vertical-align: baseline;"&gt;Conclusion&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Exactly-once request processing is a hard problem. In this blog post, weve outlined some scenarios where you might need exactly-once request processing when youre using Workflows. We also provided some ideas on how you can implement it. The exact solution will depend on the actual use case and the services involved.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 03 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/application-development/using-single-execution-calls-with-workflows/</guid><category>Developers &amp; Practitioners</category><category>Application Development</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Making API calls exactly once when using Workflows</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/application-development/using-single-execution-calls-with-workflows/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Randy Spruyt</name><title>Workflows Team Lead</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Mete Atamel</name><title>Cloud Developer Advocate</title><department></department><company></company></author></item><item><title>Scalable multi-tenancy management with Config Sync and team scopes</title><link>https://cloud.google.com/blog/products/containers-kubernetes/how-to-use-config-sync-team-scopes/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Ensuring application and service teams have the resources they need is crucial for platform administrators. &lt;/span&gt;&lt;a href="https://cloud.google.com/anthos/fleet-management/docs/team-management"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Fleet team management&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; features in Google Kubernetes Engine (GKE) make this easier, allowing each team to function as a separate “tenant” within a fleet. In conjunction with &lt;/span&gt;&lt;a href="https://cloud.google.com/anthos-config-management/docs/config-sync-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Config Sync&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, a GitOps service in GKE, platform administrators can streamline resource management for their teams across the fleet.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Specifically, with Config Sync team scopes, platform admins can define fleet-wide and team-specific cluster configurations such as resource quotas and network policies, allowing each application team to manage their own workloads within designated namespaces across clusters.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Let's walk through a few scenarios.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Separating resources for frontend and backend teams&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Let's say you need to provision resources for frontend and backend teams, each requiring their own tenant space. Using team scopes and fleet namespaces, you can control which teams access specific namespaces on specific member clusters.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For example, the backend team might access their &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;bookstore&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;shoestore&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; namespaces on &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;us-east-cluster&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;us-west-cluster&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; clusters, while the frontend team has their &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;frontend-a&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;frontend-b&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; namespaces on all three member clusters.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_-_intro.max-1000x1000.jpg"
alt="1 - intro"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Unlocking Dynamic Resource Provisioning with Config Sync&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;You can enable Config Sync by default at the fleet level using Terraform. Heres a sample Terraform configuration:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;resource &amp;quot;google_gke_hub_feature&amp;quot; &amp;quot;feature&amp;quot; {\r\n name = &amp;quot;configmanagement&amp;quot;\r\n location = &amp;quot;global&amp;quot;\r\n provider = google\r\n fleet_default_member_config {\r\n configmanagement {\r\n config_sync {\r\n source_format = &amp;quot;unstructured&amp;quot;\r\n git {\r\n sync_repo = &amp;quot;https://github.com/GoogleCloudPlatform/anthos-config-management-samples&amp;quot;\r\n sync_branch = &amp;quot;main&amp;quot;\r\n policy_dir = &amp;quot;fleet-tenancy/config&amp;quot;\r\n secret_type = &amp;quot;none&amp;quot;\r\n }\r\n }\r\n }\r\n }\r\n}&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc89155b0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Note: Fleet defaults are only applied to new clusters created in the fleet.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This Terraform configuration enables Config Sync as a &lt;/span&gt;&lt;a href="https://cloud.google.com/anthos/fleet-management/docs/manage-features#configure_fleet-level_defaults"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;default fleet-level feature&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. It installs Config Sync and instructs it to fetch Kubernetes manifests from a &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/anthos-config-management-samples/tree/main/fleet-tenancy/config" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Git repository&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (specifically, the “main” branch and the “fleet-tenancy/config” folder). This configuration automatically applies to all clusters subsequently created within the fleet. This approach offers a powerful way of configuring manifests across fleet clusters without the need for manual installation and configuration on individual clusters.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Now that youve configured Config Sync as a default fleet setting, you might want to sync specific Kubernetes resources to designated namespaces and clusters for each team. Integrating Config Sync with team scopes streamlines this process.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Setting team scope&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; &lt;br/&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Following this example, lets assume you want to apply a different network policy for the backend team compared to the frontend team. Fleet team management features simplify the process of provisioning and managing infrastructure resources for individual teams, treating each team as a separate “tenant” within the fleet. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To manage separate tenancy, as shown in the above team scope diagram, first &lt;/span&gt;&lt;a href="https://cloud.google.com/anthos/fleet-management/docs/setup-teams"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;set up team scopes&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for the backend and frontend teams. This involves defining fleet-level namespaces and adding fleet member clusters to each team scope.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Now, let's dive into those Kubernetes manifests that Config Sync syncs into the clusters.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Applying team scope in Config Sync&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Each &lt;/span&gt;&lt;a href="https://cloud.google.com/anthos/fleet-management/docs/team-management#fleet_team_management_overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;fleet namespace&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; in the cluster is automatically labeled with &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;fleet.gke.io/fleet-scope: &amp;lt;scope name&amp;gt;&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. For example, the backend team scope contains the fleet namespaces &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;bookstore&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;shoestore&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, both labeled with &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;fleet.gke.io/fleet-scope: backend&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Config Sync's &lt;/span&gt;&lt;a href="https://cloud.google.com/anthos-config-management/docs/how-to/namespace-scoped-objects#namespaceselectors_in_unstructured_repositories"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;NamespaceSelector&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; utilizes this label to target specific namespaces within a team scope. Here's the configuration for the backend team:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;apiVersion: configmanagement.gke.io/v1\r\nkind: NamespaceSelector\r\nmetadata:\r\n name: backend-scope\r\nspec:\r\n mode: dynamic\r\n selector:\r\n matchLabels:\r\n fleet.gke.io/fleet-scope: backend&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc8915970&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Applying NetworkPolicies for the backend team&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;By annotating resources with &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;configmanagement.gke.io/namespace-selector: &amp;lt;NamespaceSelector name&amp;gt;&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, they're automatically applied to the right namespaces. Heres the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;NetworkPolicy&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; of the backend team:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;apiVersion: networking.k8s.io/v1\r\nkind: NetworkPolicy\r\nmetadata:\r\n name: be-deny-all\r\n annotations:\r\n configmanagement.gke.io/namespace-selector: backend-scope\r\nspec:\r\n ingress:\r\n - from:\r\n - podSelector: {}\r\n podSelector:\r\n matchLabels: null&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc8915160&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;NetworkPolicy&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; is automatically provisioned in the backend team's &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;bookstore&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;shoestore&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; namespaces, adapting to fleet changes like adding or removing namespaces and member clusters.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_-_add_networkpolicy.max-1000x1000.jpg"
alt="2 - add networkpolicy"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Extending the concept: ResourceQuotas for the frontend team&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Here's how a &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;ResourceQuota&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; is dynamically applied to the frontend team's namespaces:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;apiVersion: configmanagement.gke.io/v1\r\nkind: NamespaceSelector\r\nmetadata:\r\n name: frontend-scope\r\nspec:\r\n mode: dynamic\r\n selector:\r\n matchLabels:\r\n fleet.gke.io/fleet-scope: frontend\r\n---\r\nkind: ResourceQuota\r\napiVersion: v1\r\nmetadata:\r\n name: fe-quota\r\n annotations:\r\n configmanagement.gke.io/namespace-selector: frontend-scope\r\nspec:\r\n hard:\r\n persistentvolumeclaims: &amp;quot;6&amp;quot;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc8915310&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Similarly, this &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;ResourceQuota&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; targets the frontend team's &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;frontend-a&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;frontend-b&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; namespaces, dynamically adjusting as the fleet's namespaces and member clusters evolve.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/3_-_add_resourcequota.max-1000x1000.jpg"
alt="3 - add resourcequota"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Delegating resource management with Config Sync: Empowering the backend team&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;To allow the backend team to manage their own resources within their designated &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;bookstore&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; namespace, you can use Config Sync's &lt;/span&gt;&lt;a href="https://cloud.google.com/anthos-config-management/docs/reference/rootsync-reposync-fields"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;RepoSync&lt;/code&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and a slightly different &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;NamespaceSelector&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Targeting a specific fleet namespace&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;To zero in on the backend team's &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;bookstore&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; namespace, the following &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;NamespaceSelector&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; targets both the team scope and the namespace name by labels:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;apiVersion: configmanagement.gke.io/v1\r\nkind: NamespaceSelector\r\nmetadata:\r\n name: backend-bookstore\r\nspec:\r\n mode: dynamic\r\n selector:\r\n matchLabels:\r\n fleet.gke.io/fleet-scope: backend\r\n kubernetes.io/metadata.name: bookstore&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc8915280&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Introducing RepoSync&lt;br/&gt;&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;Another Config Sync feature is &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;RepoSync&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, which lets you delegate resource management within a specific namespace. For security reasons, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;RepoSync&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; has no default access; you must explicitly grant the necessary RBAC permissions to the namespace.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Leveraging the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;NamespaceSelector&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, the following &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;RepoSync&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; resource and its respective &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;RoleBinding&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; can be applied dynamically to all &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;bookstore&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; namespaces across the backend team's member clusters. The &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;RepoSync&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; points it to a repository owned by the backend team:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;kind: RepoSync\r\napiVersion: configsync.gke.io/v1beta1\r\nmetadata:\r\n name: repo-sync\r\n annotations:\r\n configmanagement.gke.io/namespace-selector: backend-bookstore\r\nspec:\r\n sourceFormat: unstructured\r\n git:\r\n repo: https://github.com/GoogleCloudPlatform/anthos-config-management-samples\r\n branch: main\r\n dir: fleet-tenancy/teams/backend/bookstore\r\n auth: none\r\n---\r\nkind: RoleBinding\r\napiVersion: rbac.authorization.k8s.io/v1\r\nmetadata:\r\n name: be-bookstore\r\n annotations:\r\n configmanagement.gke.io/namespace-selector: backend-bookstore\r\nsubjects:\r\n- kind: ServiceAccount\r\n name: ns-reconciler-bookstore\r\n namespace: config-management-system\r\nroleRef:\r\n kind: ClusterRole\r\n name: admin\r\n apiGroup: rbac.authorization.k8s.io&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc8915be0&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Note: The &lt;/span&gt;&lt;code style="font-style: italic; vertical-align: baseline;"&gt;.spec.git&lt;/code&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt; section would reference the backend team's repository.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The backend teams repository contains a &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;ConfigMap&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;. Config Sync ensures that the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;ConfigMap&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; is applied to the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;bookstore&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; namespaces across all backend teams member clusters, supporting a GitOps approach to management.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Easier cross-team resource management&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Managing resources across multiple teams within a fleet of clusters can be complex. Google Cloud's fleet team management features, combined with Config Sync, provide an effective solution to streamline this process.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In this blog, we explored a scenario with frontend and backend teams, each requiring their own tenant spaces and resources (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;NetworkPolicies&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;ResourceQuotas&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;RepoSync&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;). Using Config Sync in conjunction with the fleet management features, we automated the provisioning of these resources, helping to ensure a consistent and scalable setup.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Next steps&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Learn how to &lt;/span&gt;&lt;a href="https://cloud.google.com/anthos-config-management/docs/how-to/fleet-tenancy"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;use Config Sync to sync Kubernetes resources to team scopes and namespaces&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;To experiment with this setup, visit the &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/anthos-config-management-samples/tree/main/fleet-tenancy" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;example repository&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Config Sync configuration settings are located within the &lt;/span&gt;&lt;a href="https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/gke_hub_feature#nested_config_sync" rel="noopener" target="_blank"&gt;&lt;code style="text-decoration: underline; vertical-align: baseline;"&gt;config_sync&lt;/code&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt; block&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; of the Terraform &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;google_gke_hub_feature&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; resource.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;For simplicity, this example uses a public Git repository. To use a private repository, &lt;/span&gt;&lt;a href="https://cloud.google.com/anthos-config-management/docs/how-to/installing-config-sync#git-creds-secret"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;create a Secret&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; in each cluster to store authentication credentials.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;To learn more about Config Sync, see &lt;/span&gt;&lt;a href="https://cloud.google.com/anthos-config-management/docs/config-sync-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Config Sync overview&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;To learn more about fleets, see &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine/fleet-management/docs" style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Fleet management overview&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</description><pubDate>Fri, 03 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/containers-kubernetes/how-to-use-config-sync-team-scopes/</guid><category>Management Tools</category><category>DevOps &amp; SRE</category><category>Containers &amp; Kubernetes</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Scalable multi-tenancy management with Config Sync and team scopes</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/containers-kubernetes/how-to-use-config-sync-team-scopes/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Janet Kuo</name><title>Staff Software Engineer, Google Cloud</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Kavitha Gowda</name><title>Product Manager, Google Cloud</title><department></department><company></company></author></item><item><title>Simplifying data modeling and schema generation in BigQuery using multi-modal LLMs</title><link>https://cloud.google.com/blog/products/data-analytics/how-to-use-an-llm-to-create-data-schemas-in-bigquery/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The intricate hierarchical data structures in data warehouses and lakes sourced from diverse origins can make data modeling a protracted and error-prone process. To quickly adapt and create data models that meet evolving business requirements without having to rework them excessively, you need data models that are flexible, modular and adaptable enough to accommodate many requirements. This requires advanced technologies, proficient personnel, and robust methodologies.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The advancements in generative AI offer numerous opportunities to address these challenges. Multimodal large language models (LLMs) can analyze examples of data in the data lake, including text descriptions, code, and even images of existing databases. By understanding this data and its relationships, LLMs can suggest or even automatically generate schema layouts, simplifying the laborious process of implementing the data model within the database, so developers can focus on higher value data management tasks.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In this blog, we walk you through how to use multimodal LLMs in BigQuery to create a database schema. To do so, well take a real-world example of entity relationship (ER) diagrams and examples of data definition languages (DDLs), and create a database schema in three steps. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For this demonstration, we will use Data Beans, a fictional technology company built on BigQuery that provides a SaaS platform to coffee sellers. Data Beans leverages BigQuerys integration with Vertex AI to access Google AI models like Gemini Vision Pro 1.0 to analyze unstructured data and integrate it with structured data, while using BigQuery to help with data modeling and generating insights. &lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;STEP1 : Create an entity relationship diagram &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The first step is to create an ER diagram using your favorite modeling tool, or to take a screenshot of an existing ER diagram. The ER diagram can contain primary key and foreign key relationships, and will then be used as an input to the Gemini Vision Pro 1.0 model to create relevant BigQuery DDLs.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/image1_DfJ9Xwj.max-1000x1000.png"
alt="image1"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;STEP2 : Create a prompt with the ER image as input&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Next, &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;to create the DDL statements in BigQuery, &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;w&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;rite a prompt to take an ER image as an input. The prompt should include detailed and relevant rules that the Gemini model should follow. In addition, make sure the prompt captures learnings from the previous iterations — in other words, be sure to update your prompt as you experiment and iterate it. These can be provided as examples to the model, for example a valid schema description for BigQuery. Providing a working example for the model to follow will help the model create a data definition DDL that follows your desired rules. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;## Prompt to guide the model\r\nllm_erd_prompt=f&amp;quot;&amp;quot;&amp;quot;Use BigQuery SQL commands to create the following:\r\n- Create a new BigQuery schema named &amp;quot;{dataset_id}&amp;quot;.\r\n- Use only BigQuery data types. Double and triple check this since it causes a lot of errors.\r\n- Create the BigQuery DDLs for the attached ERD.\r\n- Create primary keys for each table using the ALTER command. Use the &amp;quot;NOT ENFORCED&amp;quot; keyword.\r\n- Create foreign keys for each table using the ALTER command. Use the &amp;quot;NOT ENFORCED&amp;quot; keyword.\r\n- For each field add an OPTIONS for the description.\r\n- Cluster the table by the primary key.\r\n- For columns that can be null do not add &amp;quot;NULL&amp;quot; to the created SQL statement. BigQuery leaves this blank.\r\n- All ALTER TABLE statements should be at the bottom of the generated script.\r\n- The ALTER TABLE statements should be ordered by the primary key statements and then the foreign key statements. Order matters!\r\n- Double check your work especially that you used ONLY BigQuery data types.\r\n\r\n\r\nPrevious Errors that have been generated by this script. Be sure to check your work to avoid encountering these.\r\n- Query error: Type not found: FLOAT at [6:12]\r\n- Query error: Table test.company does not have Primary Key constraints at [25:1]\r\n\r\n\r\n## Example for model to influence from\r\nExample:\r\nCREATE TABLE IF NOT EXISTS `{project_id}.{dataset_id}.customer`\r\n(\r\n customer_id INTEGER NOT NULL OPTIONS(description=&amp;quot;Primary key. Customer table.&amp;quot;),\r\n country_id INTEGER NOT NULL OPTIONS(description=&amp;quot;Foreign key: Country table.&amp;quot;),\r\n customer_llm_summary STRING NOT NULL OPTIONS(description=&amp;quot;LLM generated summary of customer data.&amp;quot;),\r\n customer_lifetime_value STRING NOT NULL OPTIONS(description=&amp;quot;Total sales for this customer.&amp;quot;),\r\n customer_cluster_id FLOAT NOT NULL OPTIONS(description=&amp;quot;Clustering algorithm id.&amp;quot;),\r\n customer_review_llm_summary STRING OPTIONS(description=&amp;quot;LLM summary are all of the customer reviews.&amp;quot;),\r\n customer_survey_llm_summary STRING OPTIONS(description=&amp;quot;LLM summary are all of the customer surveys.&amp;quot;)\r\n)\r\nCLUSTER BY customer_id;\r\n\r\n\r\nCREATE TABLE IF NOT EXISTS `{project_id}.{dataset_id}.country`\r\n(\r\ncountry_id INTEGER NOT NULL OPTIONS(description=&amp;quot;Primary key. Country table.&amp;quot;),\r\ncountry_name STRING NOT NULL OPTIONS(description=&amp;quot;The name of the country.&amp;quot;)\r\n)\r\nCLUSTER BY country_id;\r\n\r\n\r\n\r\n\r\nALTER TABLE `{project_id}.{dataset_id}.customer` ADD PRIMARY KEY (customer_id) NOT ENFORCED;\r\nALTER TABLE `{project_id}.{dataset_id}.country` ADD PRIMARY KEY (country_id) NOT ENFORCED;\r\n\r\n\r\nALTER TABLE `{project_id}.{dataset_id}.customer` ADD FOREIGN KEY (country_id) REFERENCES `{project_id}.{dataset_id}.country`(country_id) NOT ENFORCED;\r\n&amp;quot;&amp;quot;&amp;quot;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc9189100&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Now you have an image of an ER diagram to present to your LLM.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;STEP 3: Call the Gemini Pro 1.0 Vision model &lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;After creating a prompt in Step 2, you are now ready to call the Gemini Pro 1.0 Vision model to generate the output by using the image of your ER diagram as an input (left side of Figure 1). You can do this in a number of ways — either directly from Colab notebooks using Python, or through BigQuery ML, leveraging its integration with Vertex AI: &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;imageBase64 = convert_png_to_base64(menu_erd_filename)\r\n\r\n\r\nllm_response = GeminiProVisionLLM(llm_erd_prompt, imageBase64, temperature=.2, topP=1, topK=32)&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc9189190&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Conclusions and resources&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In this demonstration, we saw how the multimodal Gemini model can streamline the creation of data and schemas. And while manually writing prompts is fine, it can be a daunting task when you need to do it at enterprise scale to create thousands of assets such as DDLs. Leveraging the above process, you can parameterize and automate prompt generation, dramatically speeding up the workflow and providing consistency across thousands of generated artifacts. You can find the complete Colab Enterprise notebook source code &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/data-beans/blob/main/colab-enterprise/gen-ai-demo/Menu-Synthetic-Data-Generation-GenAI.ipynb" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;BigQuery ML includes many new features to let you use Gemini Pro capabilities; for more, please see the &lt;/span&gt;&lt;a href="https://cloud.google.com/bigquery/docs/reference/standard-sql/bigqueryml-syntax-generate-text"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; Then, check out &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;this &lt;/span&gt;&lt;a href="https://www.brighttalk.com/webcast/20069/600727?utm_source=GoogleCloud&amp;amp;utm_medium=brighttalk&amp;amp;utm_campaign=600727" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;tutorial&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to learn how to apply Google's models to your data, deploy models, and operationalize ML workflows — all without ever moving your data from BigQuery&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;. Finally, &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;for a behind-the-scenes look on how we made this demo, watch this video on &lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=7zmPRPhWSGA" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;how to build an end-to-end data analytics and AI application&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; using advanced models like Gemini directly from BigQuery.&lt;/span&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;sup&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;Googlers Luis Velasco, Navjot Singh, Skander Larbi and Manoj Gunti contributed to this blog post. Many Googlers contributed to make these features a reality&lt;/span&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Fri, 03 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/data-analytics/how-to-use-an-llm-to-create-data-schemas-in-bigquery/</guid><category>AI &amp; Machine Learning</category><category>Data Analytics</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Simplifying data modeling and schema generation in BigQuery using multi-modal LLMs</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/data-analytics/how-to-use-an-llm-to-create-data-schemas-in-bigquery/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Adam Paternostro</name><title>Technical Lead, Google Cloud</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Firat Tekiner</name><title>Senior Staff Product Manager, Google Cloud</title><department></department><company></company></author></item><item><title>Introducing Dataflux Dataset for Cloud Storage to accelerate PyTorch AI training</title><link>https://cloud.google.com/blog/products/ai-machine-learning/introducing-new-pytorch-dataflux-dataset-abstraction/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Introduction&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Machine learning (ML) models thrive on massive datasets, and fast data loading is key for cost-effective ML training. We recently launched a PyTorch Dataset abstraction, the &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/dataflux-pytorch" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Dataflux Dataset&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, for accelerating data loading from Googles Cloud Storage. Dataflux provides up to 3.5x faster training times compared to fsspec, with small files. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Todays launch builds upon Googles commitment to open standards that spans over two decades of OSS contributions like TensorFlow, JAX, TFX, MLIR, KubeFlow, and Kubernetes, as well as sponsorship for critical OSS data science initiatives like Project Jupyter and NumFOCUS. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We also validated the Dataflux Dataset on &lt;/span&gt;&lt;a href="https://github.com/argonne-lcf/dlio_benchmark" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Deep Learning IO (DLIO) benchmarks&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and realized similar performance gains, even with larger files. Due to this broad performance boost, we recommend using Dataflux Dataset over other libraries or direct Cloud Storage API calls for training workflows.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Key Dataflux Dataset features include:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Direct Cloud Storage integration:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Eliminate the need to download data locally first.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Performance optimization:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Achieve up to 3.5x faster training times, especially with small files. &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;PyTorch Dataset primitive:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Work seamlessly with familiar PyTorch concepts.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Checkpointing support:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Save and load model checkpoints directly to/from Cloud Storage.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Using Dataflux Datasets&lt;/strong&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Prerequisites:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Python 3.8+&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Installation: &lt;/strong&gt;&lt;strong style="vertical-align: baseline;"&gt;$ &lt;/strong&gt;&lt;code style="vertical-align: baseline;"&gt;pip install gcs-torch-dataflux&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Authentication:&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Use Google Cloud &lt;/span&gt;&lt;a href="https://cloud.google.com/docs/authentication/provide-credentials-adc"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;application-default authentication&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong style="vertical-align: baseline;"&gt;Example: Loading images for training&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;There are only a few changes needed to enable the Dataflux Dataset. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;If youre using PyTorch and have data in Cloud Storage, you most likely have written your own Dataset implementation. The below snippet shows how easy it is to create a Dataflux Dataset. For further details, checkout our &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/dataflux-pytorch/tree/main" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GitHub&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; page.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;import numpy\r\nimport io\r\nfrom PIL import Image\r\nfrom dataflux_pytorch import dataflux_mapstyle_dataset\r\n\r\ndef transform(img_in_bytes): \r\n return numpy.asarray(\r\nImage.open(io.BytesIO(img_in_bytes)))\r\n\r\ndataset = dataflux_mapstyle_dataset.DatafluxMapStyleDataset(\r\n project_name=PROJECT_NAME,\r\n bucket_name=BUCKET_NAME,\r\n config=dataflux_mapstyle_dataset.Config(prefix=PREFIX),\r\n data_format_fn=transform,\r\n)\r\n\r\n# Use &amp;quot;dataset&amp;quot; as usual in your ML-Training loop in combination with PyTorch DataLoader.&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc84b2f70&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Under the hood&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To achieve such significant performance gains for Dataflux, we addressed the data-loading performance bottlenecks in ML training workflows. In a training run, data is loaded in batches from storage, and after some processing, is sent from CPU to GPU for ML-Training computations. If reading and constructing a batch takes longer than GPU computation, then the GPU is effectively stalled and underutilized, leading to longer training times.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When data is in a cloud-based object storage system (like Googles Cloud Storage), it takes longer to fetch the data than from a local disk, especially if the data is in small objects. This is due to time-to-first-byte latency. Once an object is opened though, the cloud storage platform provides high throughput. In Dataflux, we employ a Cloud Storage feature called &lt;/span&gt;&lt;a href="https://cloud.google.com/storage/docs/composing-objects"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Compose Objects&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; that can dynamically combine many smaller objects into a larger object. Then, instead of fetching (say) 1024 small objects (batch size), we only fetch 30 larger objects and download those to memory. The larger objects are then decomposed back to their individual smaller objects and served back as the dataset-samples. Any temporary composed objects created in the process are also cleaned up.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Another optimization that Dataflux Datasets employs is high-throughput parallel-listing, speeding up the initial metadata needed for the dataset. Dataflux uses a sophisticated algorithm called work-stealing to significantly speed up listings; with it, even the first AI training run, or “epoch,” is faster compared to Dataflux Datasets without parallel-listing, even on datasets that have tens of millions of objects.  &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Together, fast-listing and dynamic-composition help ensure that ML-training with Dataflux leads to minimal GPU stalls, leading to greatly reduced training time and increased accelerator utilization.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Fast-listing and dynamic-composition are part of the &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/dataflux-client-python" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Dataflux Client Libraries&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and available on &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/dataflux-pytorch/tree/main" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GitHub&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Dataflux Dataset uses these client libraries under the hood.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Dataflux is available now&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Give the &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/dataflux-pytorch/tree/main" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Dataflux Dataset for PyTorch&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (or the &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/dataflux-client-python" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Dataflux Python client library&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; if writing your own ML training dataset code) a try and &lt;/span&gt;&lt;a href="mailto:dataflux-customer-support@google.com"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;let us know&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; how it boosts your workflows! &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can learn more about this and our other storage AI related capabilities from our Google Cloud Next 24 recorded session “How to define a storage infrastructure for AI and analytical workloads”&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-video"&gt;
&lt;div class="article-module article-video "&gt;
&lt;figure&gt;
&lt;a class="h-c-video h-c-video--marquee"
href="https://youtube.com/watch?v=A4daQj9tnWk"
data-glue-modal-trigger="uni-modal-A4daQj9tnWk-"
data-glue-modal-disabled-on-mobile="true"&gt;
&lt;img src="//img.youtube.com/vi/A4daQj9tnWk/maxresdefault.jpg"
alt="How to define a storage infrastructure for AI and analytical workloads"/&gt;
&lt;svg role="img" class="h-c-video__play h-c-icon h-c-icon--color-white"&gt;
&lt;use xlink:href="#mi-youtube-icon"&gt;&lt;/use&gt;
&lt;/svg&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div class="h-c-modal--video"
data-glue-modal="uni-modal-A4daQj9tnWk-"
data-glue-modal-close-label="Close Dialog"&gt;
&lt;a class="glue-yt-video"
data-glue-yt-video-autoplay="true"
data-glue-yt-video-height="99%"
data-glue-yt-video-vid="A4daQj9tnWk"
data-glue-yt-video-width="100%"
href="https://youtube.com/watch?v=A4daQj9tnWk"
ng-cloak&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;</description><pubDate>Thu, 02 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/ai-machine-learning/introducing-new-pytorch-dataflux-dataset-abstraction/</guid><category>Developers &amp; Practitioners</category><category>AI &amp; Machine Learning</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Introducing Dataflux Dataset for Cloud Storage to accelerate PyTorch AI training</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/ai-machine-learning/introducing-new-pytorch-dataflux-dataset-abstraction/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Mayur Deshpande</name><title>Staff Software Engineer</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Abhishek Lal</name><title>Product Manager, Google Cloud</title><department></department><company></company></author></item><item><title>Private networking patterns to Vertex AI workloads</title><link>https://cloud.google.com/blog/products/networking/private-connectivity-to-vertex-workloads/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As enterprise strategic use cases for AI adoption increases, secure and reliable connectivity is more crucial than ever. Get ready to explore several private connections options for your Vertex AI workloads! In this blog, we'll dive into the existing options and reveal the services to get you connected on your AI journey.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Connectivity matrix &lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/start/introduction-unified-platform"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; is a suite of products which provide different AI workloads that provide varying functionalities. The default method to access Vertex AI APIs are public which is the case with Google APIs in general. &lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt;Depending on your architecture you may have the requirement to access your APIs privately, because of security and enterprise governance, which means traffic does not travel over the internet to the public address of the API. In these cases there are several options which we will explore later in the blog but it will vary depending on the Vertex AI product you are connecting to. The image below shows the connectivity matrix for &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/general/netsec-overview#support-table"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;accessing Vertex AI from on-premises and multicloud&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1-matrix.max-1000x1000.png"
alt="1-matrix"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Options&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As you can see from the previous matrix image there are several methods in addition to the public internet. These include:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/vpc/docs/private-service-connect"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Private Service Connect&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt; (PSC) for Google APIs&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - Provides private access to Google APIs over hybrid networking or within a Virtual Private Cloud (VPC) using a customer-specified IP address(s) and DNS endpoint name that can be leveraged for one or more use cases.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/vpc/docs/private-google-access"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Private Google Access&lt;/strong&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; - Provides private access to Google APIs over hybrid networking or within a Virtual Private Cloud (VPC) using a Google defined subnet.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;a href="https://cloud.google.com/vpc/docs/private-services-access"&gt;&lt;strong style="text-decoration: underline; vertical-align: baseline;"&gt;Private Service Access&lt;/strong&gt;&lt;/a&gt;&lt;strong style="vertical-align: baseline;"&gt; (PSA) &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;-  Google and other providers, collectively known as "service providers," can offer services hosted within a Google-managed VPC network. PSA enables you to define IP addresses for the managed services in addition to establishing VPC peering to access the internal IP addresses of these Google and third-party services over hybrid networking or within the VPC.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Private Service Connect endpoint&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - Enables consumers to securely access managed services hosted by Google or other providers from within their own Virtual Private Cloud (VPC) network or via hybrid networking, eliminating the need to define the producer's VPC network. Communication with managed services is established through PSC endpoints or backends defined by the consumer's IP space, facilitating multi-tenancy to producer services across VPCs.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Example &lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The following diagram shows a Vector Search architecture in which the Vector Search API is enabled and managed in a service project (appropriately named "serviceproject") as part of a &lt;/span&gt;&lt;a href="https://cloud.google.com/vpc/docs/shared-vpc"&gt;&lt;span style="vertical-align: baseline;"&gt;Shared VPC&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; deployment. The Vector Search Compute Engine resources are deployed as a Google-managed Infrastructure-as-a-Service (IaaS) in the service producer's VPC network.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cloud.google.com/vpc/docs/private-service-connect#endpoints"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Private Service Connect endpoints&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; are deployed in the consumer's VPC network (serviceproject) for index query, in addition to &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/general/googleapi-access-methods#psc"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Private Service Connect endpoints for Google APIs&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for private index creation deployed in the host project, the VPC where the cloud router resides. Both index creation and index query are accessible privately through hybrid networking or within the VPC. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If the organization requires public access to index query, you can leverage the same producer service as a Private Service Connect Network Endpoint Groups &lt;/span&gt;&lt;a href="https://cloud.google.com/load-balancing/docs/negs#psc-neg"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;(PSC NEG) &lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;backend to a External Load Balancer, thereby enabling public access to the endpoint while also providing WAF and DDoS capabilities when associated with &lt;/span&gt;&lt;a href="https://cloud.google.com/armor/docs/rule-tuning"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Armor&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2-vertex-psc.max-1000x1000.png"
alt="2-vertex-psc"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Get hands-on and learn more&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This topic is hot right now, and there are many approaches you can use. There are a few resources available that you can use to get some hands-on experience. Please check out the following tutorials.&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Tutorial&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/general/vertex-psc-vector-search"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Use Private Service Connect to access a Vector Search index from on-premises&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Tutorial&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/general/vertex-psc-gen-ai"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Use Private Service Connect to access Generative AI on Vertex AI from on-premises&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.  &lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Tutorial&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/general/vertex-psc-googleapis"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Use Private Service Connect to access Vertex AI online predictions from on-premises&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Tutorial &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;- &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/docs/general/vertex-psc-batch-predictions"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Use Private Service Connect to access Vertex AI batch predictions from on-premises&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To learn out more or share a thought find me on &lt;/span&gt;&lt;a href="https://www.linkedin.com/in/ammett/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Linkedin&lt;/span&gt;&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-related_article_tout"&gt;
&lt;div class="uni-related-article-tout h-c-page"&gt;
&lt;section class="h-c-grid"&gt;
&lt;a href="https://cloud.google.com/blog/products/networking/connect-google-cloud-to-on-prem-and-other-clouds/"
data-analytics='{
"event": "page interaction",
"category": "article lead",
"action": "related article - inline",
"label": "article: {slug}"
}'
class="uni-related-article-tout__wrapper h-c-grid__col h-c-grid__col--8 h-c-grid__col-m--6 h-c-grid__col-l--6
h-c-grid__col--offset-2 h-c-grid__col-m--offset-3 h-c-grid__col-l--offset-3 uni-click-tracker"&gt;
&lt;div class="uni-related-article-tout__inner-wrapper"&gt;
&lt;p class="uni-related-article-tout__eyebrow h-c-eyebrow"&gt;Related Article&lt;/p&gt;
&lt;div class="uni-related-article-tout__content-wrapper"&gt;
&lt;div class="uni-related-article-tout__image-wrapper"&gt;
&lt;div class="uni-related-article-tout__image" style="background-image: url('https://storage.googleapis.com/gweb-cloudblog-publish/images/networking_3Z7Xc6t.max-500x500.jpg')"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="uni-related-article-tout__content"&gt;
&lt;h4 class="uni-related-article-tout__header h-has-bottom-margin"&gt;Cross-Cloud Network: Private, customizable and flexible networking&lt;/h4&gt;
&lt;p class="uni-related-article-tout__body"&gt;Explore the Cross-Cloud Network architecture ebook and learn how Googles global scale network can support your enterprise multicloud and...&lt;/p&gt;
&lt;div class="cta module-cta h-c-copy uni-related-article-tout__cta muted"&gt;
&lt;span class="nowrap"&gt;Read Article
&lt;svg class="icon h-c-icon" role="presentation"&gt;
&lt;use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#mi-arrow-forward"&gt;&lt;/use&gt;
&lt;/svg&gt;
&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/a&gt;
&lt;/section&gt;
&lt;/div&gt;
&lt;/div&gt;</description><pubDate>Thu, 02 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/networking/private-connectivity-to-vertex-workloads/</guid><category>Hybrid &amp; Multicloud</category><category>Developers &amp; Practitioners</category><category>Networking</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/0-ai-hero.max-600x600.png" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Private networking patterns to Vertex AI workloads</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/0-ai-hero.max-600x600.png</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/networking/private-connectivity-to-vertex-workloads/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Ammett Williams</name><title>Developer Relations Engineer</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Deepak Michael</name><title>Networking Specialist Customer Engineer</title><department></department><company></company></author></item><item><title>RAG in production faster with Ray, LangChain and HuggingFace</title><link>https://cloud.google.com/blog/products/ai-machine-learning/rag-quickstart-with-ray-langchain-and-huggingface/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Were excited to announce the release of a &lt;/span&gt;&lt;a href="https://console.cloud.google.com/marketplace/product/google/rag-on-gke" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;quickstart solution&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/ai-on-gke/tree/main/applications/rag#rag-on-gke-application" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;reference architecture&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for retrieval augmented generation (RAG) applications, designed to accelerate your journey to production. In this post, youll learn how to quickly deploy a complete RAG application on &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Kubernetes Engine&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (GKE), and &lt;/span&gt;&lt;a href="https://cloud.google.com/sql/docs/postgres"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud SQL for PostgreSQL&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://github.com/pgvector/pgvector" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;pgvector&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, using Ray, LangChain, and Hugging Face.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;What is RAG?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;RAG can improve the outputs of foundation modes, such as large language models (LLMs), for a specific application. Rather than relying purely on knowledge developed during training, AI apps equipped for RAG can retrieve the information most relevant to a users prompt from an external knowledge base, then add that information to the prompt before sending it to the generative model. The knowledge base can come in various forms, such as a vector database, traditional search index, or relational database — and by accessing it, customer service chabots can look up help center articles, digital shopping assistants can tap into product catalogs and customer reviews, and AI-powered travel agents can deliver up-to-date flight and hotel information. &lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/1_RAG_Conceptual_Diagram_FINAL.max-1000x1000.png"
alt="1 RAG Conceptual Diagram FINAL"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;LLMs rely on their training data, which can quickly fall out of date and may not include data relevant to the applications domain. Re-training or fine-tuning an LLM to provide fresh, domain-specific data can be an expensive and complex process. RAG not only gives the LLM access to such data without training or-fine tuning. but can also guide an LLM toward factual responses, thereby reducing hallucinations and enabling applications to provide human-verifiable source material. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For more background on how RAG works, see our blog on &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/context-aware-code-generation-rag-and-vertex-ai-codey-apis"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;context-aware code generation&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;AI Infrastructure for RAG&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Prior to the rise of Generative AI, a typical application architecture might involve a database, a set of microservices, and a frontend. Even the most basic RAG applications introduce new requirements for serving LLMs, processing, and retrieving unstructured data. To meet these requirements, customers need infrastructure that is optimized specifically for AI workloads. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Many customers choose to access AI infrastructure like TPUs and GPUs via a fully managed platform, such as &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Others, however, prefer to manage their own infrastructure on top of GKE while leveraging open-source frameworks and open models. This blog post is for the latter group. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Building an AI platform from scratch involves a number of key decisions, such as which frameworks to use for model serving, which machine shapes to use for inference, how to protect sensitive data, how to meet cost and performance requirements, and how to scale as traffic grows. Each decision involves many tradeoffs against a vast and fast-changing landscape of generative AI tools.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;This is why we have developed a quickstart solution and reference architecture for RAG applications built on top of GKE, Cloud SQL, and open-source frameworks &lt;/span&gt;&lt;a href="https://www.ray.io/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Ray&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://www.langchain.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;LangChain&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://huggingface.co/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Hugging Face&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Our solution is designed to help you get started quickly and accelerate your journey to production with RAG best practices built-in from the start.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Benefits of RAG on GKE and Cloud SQL&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;GKE and Cloud SQL accelerate your journey to production in a variety of ways:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Load Data Fast&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - Use &lt;/span&gt;&lt;a href="https://docs.ray.io/en/latest/data/data.html" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Ray Data&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to seamlessly access data in parallel from your Ray cluster via GKEs &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GCSFuse driver&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Efficiently load your embeddings into &lt;/span&gt;&lt;a href="https://cloud.google.com/sql/docs/postgres"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud SQL for PostgreSQL&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://github.com/pgvector/pgvector" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;pgvector&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to perform low latency vector search at scale.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Fast deploy&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - Quickly deploy Ray, &lt;/span&gt;&lt;a href="https://jupyter.org/hub" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;JupyterHub&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and Hugging Face &lt;/span&gt;&lt;a href="https://huggingface.co/docs/text-generation-inference/en/index" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Text Generation Inference&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (TGI) to your GKE cluster&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Security made simple&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - Get &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/containers-kubernetes/move-in-ready-kubernetes-security-with-gke-autopilot"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;move-in ready Kubernetes security&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; with &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;GKE&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Filter out sensitive or toxic content using &lt;/span&gt;&lt;a href="https://cloud.google.com/sensitive-data-protection/docs/sensitive-data-protection-overview"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Sensitive Data Protection&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; (SDP). Leverage Google-standard authentication with &lt;/span&gt;&lt;a href="https://cloud.google.com/security/products/iap?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Identity-Aware Proxy&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; so users can seamlessly connect to your LLM frontend and Jupyter notebooks.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Cost efficiency &amp;amp; reduced management overhead&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - GKE reduces cluster maintenance and makes it easy to take advantage of cost-saving measures like &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine/docs/concepts/spot-vms"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;spot nodes&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; via YAML configuration.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Scalability -&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; GKE &lt;/span&gt;&lt;a href="https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-autoscaler"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;automatically&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; provisions nodes as traffic grows, eliminating the need for manual configuration to scale up.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong style="vertical-align: baseline;"&gt;Deploying RAG on GKE and Cloud SQL&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Our end-to-end &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/ai-on-gke/tree/main/applications/rag" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;RAG application&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/ai-on-gke/tree/main/applications/rag#rag-on-gke-application" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;reference architecture&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; provide the following:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Google Cloud project &lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;- configures your project with the needed prerequisites to run the RAG application, including a GKE Cluster and Cloud SQL for PostgreSQL and pgvector instance&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;AI frameworks&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - deploys Ray, JupyterHub, and Hugging Face TGI to GKE&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;RAG Embedding Pipeline&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - generates embeddings and populates the Cloud SQL for PostgreSQL and pgvector instance&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Example RAG Chatbot Application&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; - deploys a web-based RAG chatbot to GKE&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;div class="block-image_full_width"&gt;
&lt;div class="article-module h-c-page"&gt;
&lt;div class="h-c-grid"&gt;
&lt;figure class="article-image--large
h-c-grid__col
h-c-grid__col--6 h-c-grid__col--offset-3
"
&gt;
&lt;img
src="https://storage.googleapis.com/gweb-cloudblog-publish/images/2_RAG_High_Level_Architecture.max-1000x1000.png"
alt="2 RAG High Level Architecture"&gt;
&lt;/a&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The example chatbot application provides a web interface where users can interact with an open source LLM. It leverages data loaded by the RAG data pipeline into Cloud SQL for PostgreSQL with pgvector, providing more comprehensive and informative responses to user queries. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Our end-to-end RAG solution serves as a starting point for further development, demonstrating the potential of this technology for a wide range of applications. By combining the power of RAG with the scalability and flexibility of GKE and Cloud SQL as well as security features of Google Cloud, developers can build powerful and versatile applications that can handle complex tasks and provide valuable insights. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We plan to evolve this solution over time, including the ability to add custom data sets, replace models, and update the dataset and vector database with new documents.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For more information, please check our &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/ai-on-gke/blob/main/applications/rag/README.md" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;README&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/ai-on-gke/tree/main/applications/rag" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;github instructions&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;a href="https://cloud.google.com/architecture/rag-capable-gen-ai-app-using-gke"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;reference RAG architecture&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. You can also &lt;/span&gt;&lt;a href="https://www.youtube.com/watch?v=qwFCZKKFXd4" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;view our Google Cloud Next 2024 session&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; discussing RAG.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 02 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/ai-machine-learning/rag-quickstart-with-ray-langchain-and-huggingface/</guid><category>Containers &amp; Kubernetes</category><category>AI &amp; Machine Learning</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>RAG in production faster with Ray, LangChain and HuggingFace</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/ai-machine-learning/rag-quickstart-with-ray-langchain-and-huggingface/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Julie Amundson</name><title>Senior Staff Software Engineer</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Jason Soo Hoo</name><title>Software Engineering Manager</title><department></department><company></company></author></item><item><title>Sullivan County debuts generative AI chatbot, Saige, to answer constituent FAQs</title><link>https://cloud.google.com/blog/topics/public-sector/sullivan-county-debuts-generative-ai-chatbot-saige-to-answer-constituent-faqs/</link><description>&lt;div class="block-paragraph"&gt;&lt;p data-block-key="6t5sl"&gt;Sullivan County, New York, is home to the Catskills Mountains. Its a great place to live, play, and raise a family, and we have a robust group of visitors and tourists. We are also a fairly small county. Being on the cutting edge of technology isnt typically something people associate with local governments, and Im proud of Sullivan County for consistently innovating.&lt;/p&gt;&lt;p data-block-key="5cguk"&gt;Traditionally, in offices like ours, our teams are routinely answering rote questions about operating hours or document filing processes. These calls take up hours of their day theyd like to spend helping solve more complex problems. In 2023, we introduced a virtual agent powered by &lt;a href="https://cloud.google.com/dialogflow"&gt;Dialogflow&lt;/a&gt; that has helped us quickly provide our constituents with answers to simple questions. We embedded the agent into our chatbot on the &lt;a href="https://www.sullivanny.us/" target="_blank"&gt;county website&lt;/a&gt; to support those seeking information about our County Clerks and Treasurers offices.&lt;/p&gt;&lt;p data-block-key="enceg"&gt;With the chatbots support, weve seen a 62% reduction in call volume. This has allowed our teams to focus on resolving more complex issues. The success of that rollout attracted the attention of the other offices in the county, and we saw a chance to expand our chatbots capabilities.&lt;/p&gt;&lt;h3 data-block-key="eeoeu"&gt;&lt;b&gt;Simplifying generative AI with Vertex AI to overhaul a chatbot in 10 weeks&lt;/b&gt;&lt;/h3&gt;&lt;p data-block-key="fh15p"&gt;Although more than 40 offices in Sullivan County were excited to implement a chatbot, we were initially concerned about the time and effort it would take to tackle a project of that scale. Some leaders assumed that many chatbots would require manually combing through information on office websites and building chatbot workflows for each of them. Then, I was introduced to &lt;a href="https://cloud.google.com/vertex-ai-search-and-conversation?hl=en"&gt;Vertex AI Agent Builder&lt;/a&gt;. Vertex AI Agent Builder makes it easy, even for our nontechnical teams, to train machine learning models that grow and change over time. Since it can “learn,” we can create chatbots that scrape information from the respective office sites and dynamically determine the best answer to a question on any given day. We dont have to design any of those flows manually.&lt;/p&gt;&lt;p data-block-key="6an9e"&gt;My team worked with Google Cloud Premier Partner &lt;a href="https://quantiphi.com/partners/google-cloud/" target="_blank"&gt;Quantiphi&lt;/a&gt; to implement a generative AI-powered version of our virtual agent (who we call Saige), and their enthusiasm about the project was palpable. The project was completed and connected every department in the county in just ten weeks, thanks to the support from Quantiphi.&lt;/p&gt;&lt;h3 data-block-key="14gjh"&gt;&lt;b&gt;Improving interactions with constituents as Saige learns over time&lt;/b&gt;&lt;/h3&gt;&lt;p data-block-key="36rus"&gt;I grew up tinkering with computers in the 1980s, and Ive been told my entire life that computers will make our lives easier, but training people on new technologies is often cumbersome and complicated. I believe that if a task using technology is more difficult or time-consuming than doing it manually, no one will adopt that new tool. With Vertex AI, Im seeing technology make good on its promise to improve lives.&lt;/p&gt;&lt;p data-block-key="dki4l"&gt;Weve already seen Saige grow and evolve to make our jobs easier. As it gathered information from various department sites, it helped us identify sources that needed to be updated. If it responds to a question incorrectly, I can click “This was not helpful,” and ask the question again. Saige is able to search for and find new information immediately. This is especially valuable because information changes; holidays change operating hours or a file is updated, and our small teams dont have time to manually update every chatbot workflow.&lt;/p&gt;&lt;p data-block-key="3cqu9"&gt;As Saiges knowledge repository grows, our offices continue to get more and more time back to manage more complex issues that require the face-to-face, human touch. Our offices get more efficient, people get answers faster, and every interaction we have with a constituent helps inform the next.&lt;/p&gt;&lt;h3 data-block-key="9ieoq"&gt;&lt;b&gt;Setting new goals for an AI-powered Sullivan County&lt;/b&gt;&lt;/h3&gt;&lt;p data-block-key="5br2l"&gt;Hearing about new experiences from our teams and the people of Sullivan County is one thing, and its another to be able to truly measure impact. Weve implemented a &lt;a href="https://cloud.google.com/looker?hl=en"&gt;Looker&lt;/a&gt; dashboard that is helping us track exactly how much impact our chat features have on our offices. I can easily view total user sessions, success rates of chat interactions, and peak hours, so we can refine our support to best meet our communitys needs.&lt;/p&gt;&lt;p data-block-key="duhoq"&gt;I can also see what questions people are asking, which helps me to understand what subjects are trending. Gathering experiential data alongside quantifiable data helps us offer better services and information about popular topics, in more prominent places, on our websites.&lt;/p&gt;&lt;p data-block-key="4bmd7"&gt;When I think of the future of Sullivan Countys online resources, I think about what I would want as a constituent coming to our sites for information. As our chat function continues to improve over time, Id love to offer additional services directly through chat, such as payments or form submissions. All of these tools can come together to further augment our amazing staff and provide Sullivan County constituents with the best possible service.&lt;/p&gt;&lt;p data-block-key="5rhn3"&gt;Interested in seeing how the state of New York is transforming ? Learn more about &lt;a href="https://papers.govtech.com/How-GenAI-is-Transforming-Public-Sector-Services-in-New-York-142886.html?" target="_blank"&gt;how gen AI is transforming public sector services in New York&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 02 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/topics/public-sector/sullivan-county-debuts-generative-ai-chatbot-saige-to-answer-constituent-faqs/</guid><category>Public Sector</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/GCPNA009-002---Sullivan-County_siWv7DA.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Sullivan County debuts generative AI chatbot, Saige, to answer constituent FAQs</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/GCPNA009-002---Sullivan-County_siWv7DA.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/topics/public-sector/sullivan-county-debuts-generative-ai-chatbot-saige-to-answer-constituent-faqs/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Dan Hust</name><title>Director of Communications</title><department></department><company>Sullivan County</company></author></item><item><title>AI can be the catalyst to reignite your digital transformation</title><link>https://cloud.google.com/blog/products/application-modernization/register-for-building-apps-in-an-ai-era-webinar/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Be honest with me: Is your “digital transformation” stuck? Did you start in earnest a few years back, and now youre sitting on half-finished projects, uneven outcomes, and a distracted staff? It happens. Maintaining momentum for multi-year efforts isnt easy. Especially efforts that are increasingly broad and complex! We need a catalyst to focus our efforts, motivate our teams, and simplify our work. &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;Early signals tell us that generative AI is that missing catalyst, and Google Cloud is a unique partner for your journey.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;How you got stuck&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Digital transformation means many things to many people. Is it about becoming more efficient? Upgrading tools? Delivering new digital products to customers? Adopting a data-driven strategy? Changing internal culture? &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/transform/the-meaning-of-digital-transformation-is-changing"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;All of those things&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;? We dont always see a unifying purpose to these efforts thats capable of rallying an organization. This lack of focus often results in a dizzying array of disparate projects. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Some of these projects are focused on new customer experiences. You might have tried launching new mobile or web experiences with solid, but not spectacular, results. There are always a handful of backend projects initiated to adopt public cloud, establish a real-time data infrastructure, set up developer-friendly application platforms, and upgrade security services. This inevitably sparks modernization programs to make data more accessible, apps more scalable, and infrastructure more automated. Smart companies complement these technology efforts with promises to invest in a company culture that &lt;/span&gt;&lt;a href="https://dora.dev/devops-capabilities/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;embraces modern thinking and elite capabilities&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;None of those are bad things! But sometimes they come with unintended consequences:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;More complex infrastructure that straddles public cloud and private cloud&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Legacy systems straining under load and change rates that they werent designed for&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Regularly changing measures of success, from innovation to cost savings to optimization to efficiencies&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: disc; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Team demotivation, as this growing bag of projects seems increasingly disconnected from measurable outcomes&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Theres a better way. In our experience, a corporate investment in generative AI brings focus, meaning, and acceleration to a host of important IT efforts.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Why generative AI catalyzes your team&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;A business strategy with generative AI at the center benefits customers and employees. Why? For customers, it helps focus your attention on delivering more personalized and engaging experiences. There are &lt;/span&gt;&lt;a href="https://cloud.google.com/transform/101-real-world-generative-ai-use-cases-from-industry-leaders"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;at least 101 examples of that&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. For staff, it puts a spotlight on how everyone can use smarter tools to design, deliver, and operate products — whether those are data reports, software applications, or infrastructure platforms. Everyone gets to join in!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;And thats the thing. Its not just about generative AI; its about what it takes to be &lt;/span&gt;&lt;span style="font-style: italic; vertical-align: baseline;"&gt;good&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; at generative AI. Everyone needs to come together to fully commit to excellence in five supporting areas (that were usually left half-finished during a classic digital transformation):&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Automate your infrastructure&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Nows the time to establish a full range of automation for provisioning, upgrading, and deleting all of the machinery that supports your (AI-hosting) infrastructure.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Upgrade your data platform&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Your AI models wont be any good without good data. Timely, accurate data is critical, and that means investing in flexible data pipelines, scalable databases, and a data warehouse thats ready for AI.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Improve your developer experience&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. To build with AI, your developers need the tools, frameworks, and platform services that help them iterate quickly. Its also time to finish those cultural upgrades that unleash your teams.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Modernize your security practices&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Embracing generative AI requires a whole set of data, application, and infrastructure security considerations. You wont deploy it if you dont trust it. Its key to make the necessary upgrades to your security posture.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;Finish your cloud migration&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Its going to be hard to maximize the value of generative AI outside of the public cloud. Places like Google Cloud are purpose-built to support the access to innovation, elasticity, and scale that are so important right now.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;What you need to succeed&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Looking to avoid some of the challenges of past transformations? Theres more than one way to proceed with your generative AI strategy, but at Google Cloud, we see three crucial building blocks for your success.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You need &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;proximity&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. Generative AI models and apps require proximity to dependent data. From AlloyDB to BigQuery, Google Clouds data services give you the speed, scale, and price performance to keep your AI-based systems grounded by your unique information. And especially now, you need &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;proximity to expertise&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; for your journey. This is a period of excitement and change, so you want Googles world-class team partnering with you to help you architect, deliver, and optimize your AI-based solutions.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You need an &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;integrated AI platform&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. This isnt the time for building out complex, brittle, do-it-yourself AI platforms. Too much is evolving too quickly. Buy innovation and flexibility, not complexity. Our &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/compute/whats-new-with-google-clouds-ai-hypercomputer-architecture"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;unique AI hypercomputer&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI platform for MLOps&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, and &lt;/span&gt;&lt;a href="https://cloud.google.com/products/gemini"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini for Google Cloud&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; offer best-in-class vertical and horizontal integrations that help you build, run, and optimize better than anywhere else.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Finally, you need cross-organization &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;productivity assistance&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt;. AI is not just about different output; its about a different way of working. &lt;/span&gt;&lt;a href="https://workspace.google.com/solutions/ai/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini for Google Workspace&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; helps everyone be more creative and productive. &lt;/span&gt;&lt;a href="https://cloud.google.com/products/gemini/code-assist"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini Code Assist&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; gives software developers powerful tools for understanding and writing quality software. &lt;/span&gt;&lt;a href="https://cloud.google.com/products/gemini/cloud-assist"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Gemini Cloud Assist&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; will bring game-changing AI assistance to teams that need to troubleshoot and optimize their cloud systems.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Ready to get unstuck? Register for our &lt;/span&gt;&lt;a href="https://cloudonair.withgoogle.com/events/building-applications-in-the-ai-era?utm_source=google&amp;amp;utm_medium=blog&amp;amp;utm_campaign=FY24-Q2-global-Prod931-onlineevent-er-Building-Apps-in-the-AI-Era&amp;amp;utm_content=launch_blog&amp;amp;utm_term=-" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Building Apps in an AI Era webinar&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to learn more about how Google Cloud can help you innovate faster, deliver unparalleled customer experiences, and secure a lasting competitive advantage.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 02 May 2024 13:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/application-modernization/register-for-building-apps-in-an-ai-era-webinar/</guid><category>AI &amp; Machine Learning</category><category>Application Modernization</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>AI can be the catalyst to reignite your digital transformation</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/application-modernization/register-for-building-apps-in-an-ai-era-webinar/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Richard Seroter</name><title>Chief Evangelist, Google Cloud</title><department></department><company></company></author></item><item><title>Your modernization journey starts with the endpoint. A Forrester Consulting study shows why.</title><link>https://cloud.google.com/blog/products/chrome-enterprise/your-modernization-journey-starts-with-the-endpoint-a-forrester-consulting-study-shows-why/</link><description>&lt;div class="block-paragraph"&gt;&lt;p data-block-key="axxn5"&gt;In todays digital age, endpoints are a business requirement for collaborating with coworkers, engaging with customers, and building great products. However, with a rise in cyber attacks, increased scrutiny on cost, and pressure to innovate, IT departments require a new kind of endpoint that improves user experience, simplifies management, increases security and reduces costs—which are some of the key traits of what we refer to as the modern endpoint.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="axxn5"&gt;We commissioned Forrester Consulting to survey 652 IT professionals to explore the meaning of a modern endpoint to IT departments, which Forrester further defines in the study as “a mix of multiple next-generation capabilities that center around artificial intelligence (AI), web-based applications, the cloud, and the integration of data.” &lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="pogf7"&gt;The study found that IT leaders are “prioritizing initiatives that lead to a modern endpoint.” In particular, the study found that “IT leaders are prioritizing AI, web-based applications, and endpoint management in the cloud because these initiatives are core to a modern endpoint and will allow businesses to evolve with their employees and customers needs.”&lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;&lt;p data-block-key="4uh1f"&gt;Specific to AI, the study found that IT respondents' “number-one priority over the next 12 months is to enable end users to take advantage of AI on the endpoint.”&lt;sup&gt;1&lt;/sup&gt; The study talks specifically to productivity gains for IT staff, who can use AI to “automate repetitive tasks, analyze data from endpoint devices and plan maintenance, or analyze user behavior to create more personalized computing experiences.” &lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="pogf7"&gt;Businesses starting their journey to a true modern endpoint should consider adopting ChromeOS. In this blog post, well visit three of the four key findings from the Forrester Consulting study &lt;a href="http://inthecloud.withgoogle.com/forrester-next-generation-endpoint-report/home.html" target="_blank"&gt;“Delivering the Next-Generation endpoint&lt;/a&gt;,” and show how ChromeOS can help businesses realize their modern endpoint needs.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3 data-block-key="pogf7"&gt;&lt;b&gt;1. Endpoint security, management, and deployment are the top barriers to a modern endpoint.&lt;/b&gt;&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="pogf7"&gt;In the study, Forrester consulting found that IT respondents indicated that they spent nearly half of their working hours on endpoint security (19%), management (15%), and deployment (14%).&lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;&lt;p data-block-key="4qmts"&gt;ChromeOS can help IT departments reduce time securing, managing, and deploying devices. With regards to security, ChromeOS is built to be secure at every layer: at the lowest level, every ChromeOS device relies on Verified Boot which checks for tampering; second, every app and tab on ChromeOS is sandboxed, meaning each app has a clear perimeter in which it can operate; and third, by making the web the core application platform, apps are simply secure by design, with much more control over how they interact with powerful device features. This means that ransomware simply can't run on ChromeOS devices.*&lt;/p&gt;&lt;p data-block-key="f99jj"&gt;The result? There has never been a successful ransomware or virus attack reported on ChromeOS devices—ever.*&lt;/p&gt;&lt;p data-block-key="6t5mo"&gt;ChromeOS can be centrally managed alongside your other devices via the web-based Google Admin console. From there, IT administrators gain a comprehensive view, allowing them to monitor and manage devices, track application deployments and versions, and control device policies and settings at scale, with changes applied across the fleet in seconds. Additionally, admins can revoke user access and securely wipe data from devices when necessary.&lt;/p&gt;&lt;p data-block-key="5lvbl"&gt;With zero-touch enrollment, its possible to deploy a fleet of ChromeOS devices without IT interaction. ChromeOS devices can be shipped directly to your end users, who can then get started in minutes—with policies, settings and apps all instantly applied on first boot as the user connects to the internet and signs in.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3 data-block-key="pogf7"&gt;&lt;b&gt;2. Web applications are the key to a modern endpoint.&lt;/b&gt;&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="pogf7"&gt;While AI was identified as ITs top priority, the study identified the second-highest priority over the next 12 months as the need to embrace more web-based applications, with 81% of respondents saying that “adopting web-based applications is part of their organizations digital transformation goals.”&lt;sup&gt;1&lt;/sup&gt; Forrester Consulting also found that 90% of surveyed IT respondents believe the future of end user computing is web-based and 78% of respondents indicated that companies that dont embrace the web will be left behind.&lt;sup&gt;1&lt;/sup&gt;&lt;/p&gt;&lt;p data-block-key="dk5q8"&gt;The study found that IT departments perceive web-based applications not only as collaboration drivers, but as beneficial for IT departments as well. Why? Quoted from the study, “When the majority of applications that employees use are web-based, it makes all other elements of endpoint management easier to achieve, from simplifying management and improving security to unlocking the power of AI.”&lt;sup&gt;1&lt;/sup&gt; In addition to the security benefits mentioned previously, the web helps businesses streamline ecosystem support, access, and deployment.&lt;/p&gt;&lt;p data-block-key="ahmuq"&gt;With &lt;a href="http://support.google.com/chromebook/answer/9658361?hl=en&amp;amp;co=GENIE.Platform%3DDesktop" target="_blank"&gt;progressive web apps&lt;/a&gt;, key software partnerships featured in &lt;a href="http://chromeos.google/resources/recommended/" target="_blank"&gt;Chrome Enterprise Recommended&lt;/a&gt;, simple application management, and more, ChromeOS can be the catalyst for businesses to realize the benefits of the web.&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;h3 data-block-key="pogf7"&gt;&lt;b&gt;3. Achieving a modern endpoint benefits the business.&lt;/b&gt;&lt;/h3&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="pogf7"&gt;Finally, let's talk about cost. Forrester Consulting found that moving towards a modern endpoint would reduce costs to the IT department by roughly 19%, with 57% believing it will help reduce costs for the IT department.&lt;sup&gt;1&lt;/sup&gt; Modern endpoints help IT departments save beyond the endpoint—including infrastructure costs, security software, support costs, and more.&lt;/p&gt;&lt;p data-block-key="cplpd"&gt;ChromeOS devices can help streamline IT, slashing overall costs beyond the hardware, saving businesses $463 per device on average according to IDC.&lt;sup&gt;2&lt;/sup&gt; These savings carry over even when deploying &lt;a href="http://www.google.com/chromebook/discover/chromebookplus/" target="_blank"&gt;Chromebook Plus&lt;/a&gt;, a category of high performance laptops with powerful AI capabilities, and greater hardware specs at a greater value. Chromebook Plus comes with 10 years of automatic updates, staying secure and usable for even longer.&lt;/p&gt;&lt;p data-block-key="a9jqt"&gt;Embracing a modern endpoint strategy with ChromeOS can solve the most pressing IT challenges faced today. Check out the &lt;a href="http://inthecloud.withgoogle.com/forrester-next-generation-endpoint-report/home.html" target="_blank"&gt;Forrester Consulting Study&lt;/a&gt; to learn more about the modern endpoint, or contact one of our team members to &lt;a href="https://chromeos.google/contact/" target="_blank"&gt;learn more about ChromeOS.&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-paragraph"&gt;&lt;p data-block-key="d62p6"&gt;&lt;i&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/i&gt; &lt;a href="http://inthecloud.withgoogle.com/forrester-next-generation-endpoint-report/home.html" target="_blank"&gt;&lt;sup&gt;Forrester Consulting 2024 Modern Endpoint Research, sponsored by Google, April 2024&lt;/sup&gt;&lt;/a&gt;&lt;/p&gt;&lt;p data-block-key="6h6da"&gt;&lt;i&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/i&gt; &lt;a href="http://services.google.com/fh/files/misc/idc_business_value_of_chrome_os_paper.pdf" target="_blank"&gt;&lt;i&gt;&lt;sup&gt;IDC Business Value Paper, sponsored by Google, The Business Value of ChromeOS, doc #49920522, March 2024&lt;/sup&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&lt;p data-block-key="etj2b"&gt;&lt;i&gt;&lt;sup&gt;*As of May 2024 there has been no evidence of any documented, successful virus attack or ransomware attack on ChromeOS. Data based on ChromeOS monitoring of various national and internal databases.&lt;/sup&gt;&lt;/i&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Thu, 02 May 2024 09:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/chrome-enterprise/your-modernization-journey-starts-with-the-endpoint-a-forrester-consulting-study-shows-why/</guid><category>Chrome Enterprise</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/2023_Wagtail_hero_template_2436x1200_0mwtXaa.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Your modernization journey starts with the endpoint. A Forrester Consulting study shows why.</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/2023_Wagtail_hero_template_2436x1200_0mwtXaa.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/chrome-enterprise/your-modernization-journey-starts-with-the-endpoint-a-forrester-consulting-study-shows-why/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Rob Beard</name><title>Product Manager</title><department>ChromeOS</department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Max Kayen</name><title>Product Marketing Manager</title><department>ChromeOS</department><company></company></author></item><item><title>Enhancing iEEG seizure identification and similarity search with Google Cloud</title><link>https://cloud.google.com/blog/products/databases/neuropace-scales-ml-workloads-with-vertex-ai/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Globally, epilepsy affects approximately 50 million people. Located in Mountain View, CA, NeuroPace, Inc.&lt;sup&gt;1&lt;/sup&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; is committed to transforming the lives of those living with epilepsy by reducing or eliminating their seizures. The company's RNS® System,&lt;sup&gt;2&lt;/sup&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; a responsive neurostimulation device, monitors brain activity to detect seizure precursors and delivers targeted electrical stimulation to prevent seizures. This device also captures iEEG (intracranial electroencephalogram) data, with over 15 million recordings from over 5,000 patients collected to date, making it the largest collection of ambulatory iEEG records available. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;NeuroPace's AI team has developed electrographic seizure classifier models using clinical trial data from the RNS System and has fine-tuned these models through &lt;/span&gt;&lt;a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10354337/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;transfer learning&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to identify seizure onset times. Previously, machine learning (“ML”) training was constrained by the limited number of Graphical Processing Units (GPUs) available in on-premises virtual machines (VMs), slowing down the optimization of models and training processes. NeuroPace tackled this challenge by scaling ML workloads with Google Cloud, moving away from on-premises VMs and utilizing &lt;/span&gt;&lt;a href="https://cloud.google.com/vertex-ai/?hl=en"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Vertex AI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for more efficient training and hyperparameter tuning.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Leveraging Google Cloud AI infrastructure&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Google Cloud's technologies have significantly improved and accelerated NeuroPaces ML training capabilities. Searching through more than a million iEEG records to identify similar ones, a task that previously took minutes to hours, can now be completed in milliseconds using Google's &lt;/span&gt;&lt;a href="https://cloud.google.com/alloydb/ai"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;AlloyDB AI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, part of the &lt;/span&gt;&lt;a href="https://cloud.google.com/alloydb"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;AlloyDB for PostgreSQL&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; database. Further, the integration of Vertex AI, GPUs, Compute Engine, and Google Cloud Storage has revolutionized NeuroPaces ML training processes, enhancing scalability, automation, and efficiency.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Vertex AI, Google Clouds AI development platform, supports the entire ML workflow, including data engineering, model training, deployment, and monitoring. This integration enables NeuroPace's AI team to use various GPUs for model training, with &lt;/span&gt;&lt;a href="https://cloud.google.com/blog/products/compute/introducing-g2-vms-with-nvidia-l4-gpus"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;L4 GPUs&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; offering better price-performance compared to on-premises resources. With it, theyve developed a cloud-native ML training system, achieving desired scalability and efficiency through Vertex AI and GPUs.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Patient similarity search with AlloyDB AI&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Identifying similar electrophysiological features across epilepsy patients has the potential to aid in discovering effective treatment options. NeuroPace has conducted research studies to identify similar iEEG patterns within a large dataset of over 1 million time-series iEEG records, utilizing the built-in vector search capabilities in AlloyDB AI. By employing IVFFlat and HNSW indexing methods, searches for similar iEEG records in this dataset can now be executed in approximately ten milliseconds.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;AlloyDB AI enables storing data embeddings in vector form directly in the database, facilitating easier and faster similarity searches compared to standard PostgreSQL. This eliminates the need for elaborate external processing pipelines.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;The next-generation disease management system&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Data captured from the NeuroPace RNS System may provide insights into seizure trends and triggers leading to optimizing and personalizing epilepsy treatment.&lt;sup&gt;3&lt;/sup&gt;&lt;/span&gt;&lt;span style="vertical-align: baseline;"&gt; The research efforts to integrate Google Cloud's infrastructure with NeuroPace's RNS System data are directed towards creating a sophisticated disease management system for epilepsy, emphasizing tailored treatments and enhanced patient well-being.&lt;/span&gt;&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;sup&gt;&lt;em&gt;1. &lt;a href="https://www.neuropace.com/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;https://www.neuropace.com/&lt;/span&gt;&lt;/a&gt;&lt;/em&gt;&lt;/sup&gt;&lt;br/&gt;&lt;sup&gt;&lt;em&gt;2. &lt;span style="vertical-align: baseline;"&gt;Rx Only. The RNS® System is an adjunctive therapy for adults with refractory, partial onset seizures with no more than 2 epileptogenic foci. See important safety information at &lt;/span&gt;&lt;a href="http://www.neuropace.com/safety/" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;http://www.neuropace.com/safety/.&lt;/span&gt;&lt;/a&gt;&lt;/em&gt;&lt;/sup&gt;&lt;br/&gt;&lt;sup&gt;&lt;em&gt;3. &lt;span style="vertical-align: baseline;"&gt;The RNS System does not currently incorporate functionality that is based upon or utilizes AI features.&lt;/span&gt;&lt;/em&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Wed, 01 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/databases/neuropace-scales-ml-workloads-with-vertex-ai/</guid><category>Customers</category><category>Databases</category><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Enhancing iEEG seizure identification and similarity search with Google Cloud</title><description></description><site_name>Google</site_name><url>https://cloud.google.com/blog/products/databases/neuropace-scales-ml-workloads-with-vertex-ai/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Sharanya Desai, Ph.D.</name><title>Technical Fellow, Director of AI, NeuroPace, Inc.</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Iris Fang</name><title>Enterprise Customer Engineer, Google Cloud</title><department></department><company></company></author></item><item><title>Managing Cloud Storage soft delete at scale</title><link>https://cloud.google.com/blog/products/storage-data-transfer/understanding-cloud-storages-new-soft-delete-feature/</link><description>&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Have you ever accidentally deleted your data? Unfortunately, many of us have, which is why most operating systems on personal computers have a recycle bin / trash can where you can go to get your files back. On the enterprise side, these accidental deletions can be at a much larger scale sometimes involving millions or even billions of objects. There is also the prospect of someone gaining unauthorized access to your data and either performing a ransomware attack to try to hold your data hostage or simply deleting it!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We recently launched &lt;/span&gt;&lt;a href="https://cloud.google.com/storage/docs/soft-delete"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;soft delete&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for Cloud Storage, an important new data protection feature compatible with all existing Cloud Storage features and workloads. It offers improved protection against accidental and malicious data deletion by providing you with a way to retain and restore recently deleted data at enterprise scale. With soft delete in place, you may also find that your organization can move more quickly when “pruning” old data, knowing that soft delete provides an undo mechanism in case of any mistakes.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In this blog, we provide you with the tools and insights you need to optimize your soft delete settings, even at scale, so that you use soft delete to protect your data based on its business criticality.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;How does soft delete work and how is it billed?&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;When soft delete is enabled, deleted objects are retained in a hidden soft-deleted state for the soft delete retention duration set on that bucket, instead of being permanently deleted. If you need any of the soft-deleted objects back, simply run a restore and they are copied back to live state.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We introduced soft delete with a seven-day retention duration enabled on all existing buckets and as the default for newly created buckets. Soft delete is on by default because accidental deletion events are unfortunately all too common and much of the data stored in Cloud Storage is business-critical in nature. In addition to the seven-day default, you can select any number of days between 7 and 90, or you can disable the feature entirely.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Soft delete usage is billed based on the storage class of the recently deleted objects. In many cases, this only increases bills by a few percentage points, which hopefully represents a good value for the amount of protection that soft delete provides. However, enabling soft delete on buckets that contain a large amount of short-lived (frequently deleted) data can result in large billing increases, since an object deleted after an hour would be billed for the one hour the object was live, plus seven days of soft delete usage.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;How valuable is your data?&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;In order to get to a state where soft delete protects you from data deletion risks that have the lowest economical impact, we recommend that you ask yourself the following three questions:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;How important is my organizations data?&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Are we storing temporary objects or media transcodes that could be easily regenerated if they were lost? Soft delete protection is unlikely to be worth it in these cases. Or are we storing data that would put my business and/or customer relationships at risk if it were lost? Soft delete could provide a vital level of protection here.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;What level of data protection do we already have?&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; If Cloud Storage has the only copy of your business-critical data, then soft delete protection would be much more important than if you were storing long-term backups of all your data in another Google Cloud region, on-prem, or with another cloud provider.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;strong style="vertical-align: baseline;"&gt;How much data protection can we afford?&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; Soft delete can be much less expensive than performing traditional enterprise backups, but can still have a significant impact on billing,  depending mostly on your deletion rates. We recommend considering the cost of soft delete relative to your overall Google Cloud bill rather than only storage because it is protecting your business data relied on by your overall workloads. You may find that leaving soft delete enabled on all your buckets only has a single digit percentage impact on your cloud bill, which may be worth it given the protection it provides against both accidental and malicious deletion events.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Once you have a good idea as to where and how much you want to use soft delete, the next steps depend on your architectural choices and the overall complexity of your organizations cloud presence. For the rest of this blog, well cover how to assess soft deletes impact and act on that information, starting with bucket-level metrics, then acting on bucket-level settings within a project, using Terraform for management, and concluding with organizational-level management approaches.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;Assessing bucket-level impacts&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can estimate bucket-level soft delete costs using &lt;/span&gt;&lt;a href="https://cloud.google.com/monitoring/api/v3/metrics"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Cloud Monitoring metrics&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and visualize them using the &lt;/span&gt;&lt;a href="https://cloud.google.com/monitoring/charts/metrics-explorer"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Metrics Explorer&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. You might want to inspect a handful of buckets that are representative of different kinds of datasets to get a better idea of which ones are more and less expensive to protect with soft delete.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Storage metrics&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Recently, we introduced &lt;/span&gt;&lt;a href="https://cloud.google.com/monitoring/api/metrics_gcp#gcp-storage"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;new storage metrics&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; that allow you to break down the object counts, bytes, and byte seconds by storage class, and then further by live vs. noncurrent vs. soft-deleted vs. multipart. These breakdowns can be extremely useful even beyond any soft delete analysis you may want to perform. In addition, you can now inspect the deletion rate using the new deleted_bytes metric:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;storage/v2/deleted_bytes&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; metric is a delta count of deleted bytes per bucket, grouped by storage class. It can be used to estimate soft delete billing impact, even if soft delete is disabled or set to a different retention duration than the one being considered.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For example, the absolute cost of soft delete can be calculated as follows: Soft delete retention duration × deleted bytes × &lt;/span&gt;&lt;a href="https://cloud.google.com/storage/pricing"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;storage price&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. For example, the cost (assuming us-central1 and Standard storage) of enabling a 7-day soft delete policy with 100,000 GB of deletions during the course of a month is (7 / 30.4375 days) × 100,000 GB × $0.02/GB mo = $459.96 (where 30.4375 is the average number of days per month).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;The relative cost of soft delete can also be calculated by comparing the &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;storage/v2/deleted_bytes&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; metric to the existing &lt;/span&gt;&lt;strong style="vertical-align: baseline;"&gt;storage/v2/total_byte_seconds&lt;/strong&gt;&lt;span style="vertical-align: baseline;"&gt; metric: soft delete retention duration × deleted bytes / total bytes. Continuing from the above example and given 1,000,000 GB-months of storage for the month, the relative cost of enabling soft delete in this case is: (7 / 30.4375 days) × 100,000 GB / 1,000,000 GB = 2.3% impact.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;Metrics Explorer&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;You can use the &lt;/span&gt;&lt;a href="https://cloud.google.com/monitoring/charts/metrics-explorer"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Metrics Explorer&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to create charts that visualize estimated soft delete costs for a given bucket:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;In the navigation panel of the Google Cloud console, select Monitoring, and then select Metrics explorer (&lt;/span&gt;&lt;a href="https://pantheon.corp.google.com/monitoring/metrics-explorer" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Go to Metrics explorer&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Verify that &lt;/span&gt;&lt;a href="https://cloud.google.com/monitoring/mql"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;MQL&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; is selected in the Language toggle.&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Enter the following query into the query editor:&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;quot;{\r\n fetch gcs_bucket :: storage.googleapis.com/storage/v2/deleted_bytes\r\n | value val(0) * 604800.0&amp;#x27;s&amp;#x27;\r\n | group_by [resource.bucket_name, metric.storage_class], window(), .sum;\r\n fetch gcs_bucket :: storage.googleapis.com/storage/v2/total_byte_seconds\r\n | filter metric.type != &amp;#x27;soft-deleted-object&amp;#x27;\r\n | group_by [resource.bucket_name, metric.storage_class], window(1d), .mean\r\n | group_by [resource.bucket_name, metric.storage_class], window(), .sum\r\n}\r\n| every 30d\r\n| within 360d\r\n| ratio&amp;quot;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc22f0070&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Note: This query assumes a 7-day (604,800 seconds) soft delete window.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;Taking action within a project&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If you are a storage administrator making decisions about soft delete settings within a project, you may want to go over your list of buckets manually and make decisions based on your business knowledge of what should be protected versus what can go without soft delete. For a larger number of buckets, you might choose to use the above metrics to generate a list of buckets that exceed a billing impact threshold (e.g. 20% impact) on all your buckets and then disable soft delete on those buckets.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To assist with this, we published a &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/storage/cost-analysis" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;soft delete billing impact Python script&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; on Github that generates a list of buckets in a project that exceed the percentage of billing impact that you specify, factoring in the storage classes of objects inside a bucket. The script can also be used to update the soft delete policies based on a specified relative cost threshold.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;We recommend you use the &lt;/span&gt;&lt;a href="https://cloud.google.com/sdk/gcloud/"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Google Cloud CLI&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; to configure soft delete settings on one or more buckets within a project. After &lt;/span&gt;&lt;a href="https://cloud.google.com/sdk/docs/install-sdk"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;installing&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; and &lt;/span&gt;&lt;a href="https://cloud.google.com/docs/authentication/gcloud"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;signing in&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, the following &lt;/span&gt;&lt;a href="https://cloud.google.com/sdk/gcloud/reference/storage"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;gcloud storage&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; commands are examples of actions you may want to take to enable, update, or disable soft delete policies within a specified project:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;# Set your project ID\r\n$ gcloud config set project $MY_PROJECT_ID\r\n\r\n# Disable Soft Delete on one bucket\r\n$ gcloud storage buckets update --clear-soft-delete gs://example-bucket\r\n\r\n# Disable Soft Delete on a list of buckets\r\n$ cat buckets.txt | gcloud storage buckets update -I --clear-soft-delete\r\n\r\n# Disable Soft Delete on all buckets in the project\r\n$ gcloud storage buckets update --clear-soft-delete gs://*\r\n\r\n# Enable Soft Delete on one bucket\r\n$ gcloud storage buckets update --soft-delete-duration=7d gs://example-bucket\r\n\r\n# Enable Soft Delete on a list of buckets\r\n$ cat buckets.txt | gcloud storage buckets update -I --soft-delete-duration=7d\r\n\r\n# Enable Soft Delete on all buckets in the project with a 14-day retention duration\r\n$ gcloud storage buckets update --soft-delete-duration=14d gs://*&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc22f0340&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;Taking action with Terraform&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If you use an orchestration layer like &lt;/span&gt;&lt;a href="https://cloud.google.com/docs/terraform"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Terraform&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;, adapting to soft delete should be as simple as updating your templates and deciding on the soft delete retention duration for each workload. This could also involve creating new templates dedicated to short-lived data so that soft delete is disabled for buckets created from those templates. Once youve defined your settings, Terraform can update existing buckets to conform to the templates, and new buckets should be created with your intended settings.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;With Terraform, the primary thing you need to do is to update your template(s) to include a soft delete policy. Here is an example of setting the soft delete retention duration to seven days (604800 seconds) in a &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;google_storage_bucket&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; resource:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;resource &amp;quot;google_storage_bucket&amp;quot; &amp;quot;bucket&amp;quot; {\r\n name = &amp;quot;example-bucket&amp;quot;\r\n location = &amp;quot;US&amp;quot;\r\n …\r\n soft_delete_policy {\r\n retention_duration_seconds = 604800\r\n }\r\n ...\r\n}&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc22f0160&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To disable soft delete instead, simply set &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;retention_duration_seconds = 0&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;For more information, please also see: &lt;/span&gt;&lt;a href="https://cloud.google.com/storage/docs/terraform-create-bucket-upload-object"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Use Terraform to create storage buckets and upload objects&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;Taking action across a large organization&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;If you work for a large enterprise with thousands of projects and millions of buckets and mostly dont use an orchestration layer, then a manual approach is not realistic, and you will need to make decisions at scale. If this is your situation, we recommend that you first learn about the bucket-level metrics and how to take action within a project as described earlier. In this section, well extend these techniques to the organization level. Again, we assume you have already installed an up-to-date version of the gcloud CLI which you will need for this section.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To implement a policy across even the most complex of organizations, you will likely need to approach it in three steps using the gcloud command line environment:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Obtain permissions: ensure you can list and change bucket-level settings across the organization&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Assess: decide on an impact threshold above which you will disable soft delete, and obtain a list of buckets surpassing that threshold&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li aria-level="1" style="list-style-type: decimal; vertical-align: baseline;"&gt;
&lt;p role="presentation"&gt;&lt;span style="vertical-align: baseline;"&gt;Act: disable soft delete on that list of buckets&lt;/span&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Obtain permissions&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Before you can do anything, you will need to identify someone with sufficient access permissions to analyze and change bucket-level configurations across your organization. This could be an existing &lt;/span&gt;&lt;a href="https://cloud.google.com/resource-manager/docs/creating-managing-organization"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;Organization Administrator&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt;. Alternatively, your Organization Administrator could create a custom role and assign it to you or another administrator for the specific purpose of managing soft delete settings:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gcloud iam roles create storageBucketsUpdate \\\r\n --organization=example-organization-id-1 \\\r\n --title=&amp;quot;Storage bucket update&amp;quot; \\\r\n --description=&amp;quot;Grants permission to get, list, and update Storage buckets.&amp;quot; \\\r\n --stage=GA \\\r\n --permissions=&amp;quot;storage.buckets.get,storage.buckets.list,storage.buckets.update&amp;quot;\r\n\r\ngcloud organization add-iam-policy-binding example-organization-id-1 \\\r\n --member=\&amp;#x27;user:test-user@example.com\&amp;#x27; \\\r\n --role=\&amp;#x27;storageBucketsUpdate\&amp;#x27; \\\r\n --condition=\&amp;#x27;expression=request.time &amp;lt; timestamp(&amp;quot;2024-07-01T00:00:00Z&amp;quot;),\\\r\n title=expires_2024_07_01,\\\r\n description=Expires at midnight on 2024-07-01\&amp;#x27;&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc22f0b20&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Note that once everything is done, at the end of this process, and your buckets are all updated, the Organization Administrator could safely delete this custom role if there wasnt an ongoing need for a role with continued access to these settings:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gcloud iam roles delete storageBucketsUpdate --organization=example-organization-id-1&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc22f0400&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Assess&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Armed with the power to act on bucket-level configurations across your organization, you can apply the project-level analysis above to obtain a list of all buckets across your organization that exceed your chosen impact threshold. Alternatively, you might choose to apply a uniform setting like 0d or 14d across all buckets in your organization.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="vertical-align: baseline;"&gt;Act&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;To update the soft delete policy for all your buckets across all your projects, you can iterate through all your projects, making the appropriate changes to the buckets in each project. For example, the following command disables soft delete on all buckets across your organization:&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;
&lt;div class="block-code"&gt;&lt;dl&gt;
&lt;dt&gt;code_block&lt;/dt&gt;
&lt;dd&gt;&amp;lt;ListValue: [StructValue([(&amp;#x27;code&amp;#x27;, &amp;#x27;gcloud projects list --format=&amp;quot;value(projectId)&amp;quot; | while read project\r\ndo\r\n gcloud storage buckets update --project=$project --clear-soft-delete gs://*\r\ndone&amp;#x27;), (&amp;#x27;language&amp;#x27;, &amp;#x27;&amp;#x27;), (&amp;#x27;caption&amp;#x27;, &amp;lt;wagtail.rich_text.RichText object at 0x3eefc8d9cc10&amp;gt;)])]&amp;gt;&lt;/dd&gt;
&lt;/dl&gt;&lt;/div&gt;
&lt;div class="block-paragraph_advanced"&gt;&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;Alternatively, you can use the &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;filter&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; option of &lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;projects list&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt; to only target a subset of your projects. For example, you might want to update projects with a specific label (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;--filter="labels.environment:prod"&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;) or with a certain parent (&lt;/span&gt;&lt;code style="vertical-align: baseline;"&gt;--filter="parent.id:123456789"&lt;/code&gt;&lt;span style="vertical-align: baseline;"&gt;).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;As a best practice, we recommend that you consider replacing the per-project action above with a command that selectively disables soft delete on specific bucket IDs. For example, you could loop through your project list, running the &lt;/span&gt;&lt;a href="https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/storage/cost-analysis" rel="noopener" target="_blank"&gt;&lt;span style="text-decoration: underline; vertical-align: baseline;"&gt;soft delete billing impact Python script&lt;/span&gt;&lt;/a&gt;&lt;span style="vertical-align: baseline;"&gt; for each project to update your bucket settings according to a % impact threshold you select to get a much more tailored outcome.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span style="vertical-align: baseline;"&gt;Summary&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span style="vertical-align: baseline;"&gt;By following the best practices in this blog and taking advantage of the available tooling and controls, we hope that you now feel more confident in your ability to protect your business-critical data with soft delete while simultaneously minimizing its billing impact.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</description><pubDate>Wed, 01 May 2024 16:00:00 +0000</pubDate><guid>https://cloud.google.com/blog/products/storage-data-transfer/understanding-cloud-storages-new-soft-delete-feature/</guid><category>Google Cloud Next</category><category>Storage &amp; Data Transfer</category><media:content height="540" url="https://storage.googleapis.com/gweb-cloudblog-publish/images/optimization_2022.max-600x600.jpg" width="540"></media:content><og xmlns:og="http://ogp.me/ns#"><type>article</type><title>Managing Cloud Storage soft delete at scale</title><description></description><image>https://storage.googleapis.com/gweb-cloudblog-publish/images/optimization_2022.max-600x600.jpg</image><site_name>Google</site_name><url>https://cloud.google.com/blog/products/storage-data-transfer/understanding-cloud-storages-new-soft-delete-feature/</url></og><author xmlns:author="http://www.w3.org/2005/Atom"><name>Geoffrey Noer</name><title>Group Product Manager</title><department></department><company></company></author><author xmlns:author="http://www.w3.org/2005/Atom"><name>Michael Roth</name><title>Software Engineer</title><department></department><company></company></author></item></channel></rss>