Category Archives: Google Cloud Platform Blog

Product updates, customer stories, and tips and tricks on Google Cloud Platform

Google Cloud Bigtable is generally available for petabyte-scale NoSQL workloads



In early 2000s, Google developed Bigtable, a petabyte-scale NoSQL database, to handle use cases ranging from low-latency real-time data serving to high-throughput web indexing and analytics. Since then, Bigtable has had a significant impact on the NoSQL storage ecosystem, inspiring the design and development of Apache HBase, Apache Cassandra, Apache Accumulo and several other databases.

Google Cloud Bigtable, a fully-managed database service built on Google's internal Bigtable service, is now generally available. Enterprises of all sizes can build scalable production applications on top of the same managed NoSQL database service that powers Google Search, Google Analytics, Google Maps, Gmail and other Google products, several of which serve over a billion users. Cloud Bigtable is now available in four Google Cloud Platform regions: us-central1, us-east1, europe-west1 and asia-east1, with more to come.

Cloud Bigtable is available via a high-performance gRPC API, supported by native clients in Java, Go and Python. An open-source, HBase-compatible Java client is also available, allowing for easy portability of workloads between HBase and Cloud Bigtable.

Companies such as Spotify, FIS, Energyworx and others are using Cloud Bigtable to address a wide array of use cases, for example:

  • Spotify has migrated its production monitoring system, Heroic, from storing time series in Apache Cassandra to Cloud Bigtable and is writing over 360K data points per second.
  • FIS is working on a bid for the SEC Consolidated Audit Trail (CAT) project, and was able to achieve 34 million reads/sec and 23 million writes/sec on Cloud Bigtable as part of its market data processing pipeline.
  • Energyworx is building an IoT solution for the energy industry on Google Cloud Platform, using Cloud Bigtable to store smart meter data. This allows it to scale without building a large DevOps team to manage its storage backend.

Cloud Platform partners and customers enjoy the scalability, low latency and high throughput of Cloud Bigtable, without worrying about overhead of server management, upgrades, or manual resharding. Cloud Bigtable is well-integrated with Cloud Platform services such as Google Cloud Dataflow and Google Cloud Dataproc as well as open-source projects such as Apache Hadoop, Apache Spark and OpenTSDB. Cloud Bigtable can also be used together with other services such as Google Cloud Pub/Sub and Google BigQuery as part of a real-time streaming IoT solution.

To get acquainted with Cloud Bigtable, take a look at documentation and try the quickstart. We look forward to seeing you build what's next!

Cloud SQL Second Generation performance and feature deep dive



Five years ago, we launched the First Generation of Google Cloud SQL and have helped thousands of companies build applications on top of it.

In that time, Google Cloud Platform’s innovations on Persistent Disk dramatically increased IOPS for Google Compute Engine, so we built Second Generation on Persistent Disk, allowing us to offer a far more performant MySQL solution at a fraction of the cost. Cloud SQL Second Generation now runs 7X faster and has 20X more storage capacity than its predecessor  with lower costs, higher scalability, automated backups that can restore your database from any point in time and 99.95% availability, anywhere in the world. This way you can focus on your application, not your IT solution.

Cloud SQL Second Generation performance gains are dramatic: up to 10TB of data, 20,000 IOPS, and 104GB of RAM per instance.

Cloud SQL Second Generation vs. the competition


So we know Cloud SQL Second Generation is a major advance from First Generation. But how does it compare with database services from Amazon Web Services?
  • Test: We used sysbench to simulate the same workload on three different services: Cloud SQL Second Generation, Amazon RDS for MySQL and Amazon Aurora.
  • Result: Cloud SQL Second Generation outperformed RDS for MySQL and performed better than Aurora when active thread count is low, as is typical for many web applications.
Cloud SQL sustains higher TPS (transactions per second) per thread than RDS for MySQL. It outperforms Aurora in configurations of up to 16 threads.
Details
The workload compares multi-zone (highly available) instances of Cloud SQL Second Generation, Amazon RDS for MySQL and Amazon Aurora running the latest offered MySQL version. The replication technology used by these three services differs significantly, and has a big impact on performance and latency. Cloud SQL Second Generation uses MySQL’s semi-synchronous replication, RDS for MySQL uses block-level synchronous replication and Aurora uses a proprietary replication technology.

To determine throughput, a Sysbench OLTP workload was generated from a MySQL client in the same zone as the primary database instance. The workload is a set of step load tests that double the number of threads (connections) with each run. The data set used is five times larger than total memory of the database instance to ensure that reads go to disk.

Transaction per second (TPS) results show that Cloud SQL and Aurora are faster than RDS for MySQL. Cloud SQL’s TPS is higher than Aurora at up to 16 threads. At 32 threads, variance and the potential for replication lag increase, causing Aurora’s peak TPS to exceed Cloud SQL’s at higher thread counts. The workload illustrates the differences in replication technology between the three services. Aurora exhibits minimal performance variance and consistent replication lag. Cloud SQL emphasizes performance, allowing for replication lag, which can increase failover times, but without putting data at risk.
Latency
We measured average end-to-end latency with a single client thread (i.e., “pure” latency measurement).
The latency comparison changes as additional threads are added. Cloud SQL exhibits lower latency than RDS for MySQL across all tests. Compared to Aurora, Cloud SQL’s latency is lower until 32 or more threads are used to generate load.
Running the benchmark


Environment configuration and sysbench parameters for our testing.

We used the following environment configuration and sysbench parameters for our testing.

Test instances:

  • Google Cloud SQL v2, db-n1-highmem-16 (16 CPU, 104 GB RAM), MySQL 5.7.11, 1000 GB PD SSD + Failover Replica
  • Amazon RDS Multi-AZ, db.r3.4xlarge (16 CPU, 122 GB RAM), MySQL 5.7.11, 1000 GB SSD, 10k Provisioned IOPS + Multi-AZ Replica
  • Amazon RDS Aurora, db.r3.4xlarge (16 CPU, 122 GB RAM), MySQL 5.6 (newest) + Replica

Test overview:
Sysbench runs were 100 tables of 20M rows each, for a total of 2B rows. In order to ensure that the data set didn't fit in memory, it was set to a multiple of the ~100 GB memory per instance, allowing sufficient space for binary logs used for replication. With 100x20M rows, the data set size as loaded was ~500 GB. Each step run was 30 minutes with a one minute "cool down" period in between, producing one report line per second of the runtime.

Load the data:

Ubuntu setup
sudo apt-get update
sudo apt-get install \
 git automake autoconf libtool make gcc \
 Libmysqlclient-dev mysql-client-5.6
git clone https://github.com/akopytov/sysbench.git
(apply patch)
./autogen.sh
./configure
make -j8
Test variables
export test_system=<test name>
export mysql_host=<mysql host>
export mysql_user=<mysql user>
export mysql_password=<mysql password>
export test_path=~/oltp_${test_system}_1
export test_name=01_baseline
Prepare test data
sysbench/sysbench \
 --mysql-host=${mysql_host} \
 --mysql-user=${mysql_user} \
 --mysql-password=${mysql_password} \
 --mysql-db="sbtest" \
 --test=sysbench/tests/db/parallel_prepare.lua \
 --oltp_tables_count=100 \
 --oltp-table-size=20000000 \
 --rand-init=on \
 --num-threads=16 \
 run
Run the benchmark:
mkdir -p ${test_path}
for threads in 1 2 4 8 16 32 64 128 256 512 1024
do
sysbench/sysbench \
 --mysql-host=${mysql_host} \
 --mysql-user=${mysql_user} \
 --mysql-password=${mysql_password} \
 --mysql-db="sbtest" \
 --db-ps-mode=disable \
 --rand-init=on \
 --test=sysbench/tests/db/oltp.lua \
 --oltp-read-only=off \
 --oltp_tables_count=100 \
 --oltp-table-size=20000000 \
 --oltp-dist-type=uniform \
 --percentile=99 \
 --report-interval=1 \
 --max-requests=0 \
 --max-time=1800 \
 --num-threads=${threads} \
 run
Format the results:
Capture results in CSV format
grep "^\[" ${test_path}/${test_name}_*.out \
 | cut -d] -f2 \
 | sed -e 's/[a-z ]*://g' -e 's/ms//' -e 's/(99%)//' -e 's/[ ]//g' \
 > ${test_path}/${test_name}_all.csv
Plot the results in R
status <- NULL # or e.g. "[DRAFT]"
config <- "Amazon RDS (MySQL Multi-AZ, Aurora) vs. Google Cloud SQL Second Generation\nsysbench 0.5, 100 x 20M rows (2B rows total), 30 minutes per step"
steps <- c(1, 2, 4, 8, 16, 32, 64, 128, 256, 512)
time_per_step <- 1800
output_path <- "~/oltp_results/"
test_name <- "01_baseline"
results <- data.frame(
 stringsAsFactors = FALSE,
 row.names = c(
   "amazon_rds_multi_az",
   "amazon_rds_aurora",
   "google_cloud_sql"
 ),
 file = c(
   "~/amazon_rds_multi_az_1/01_baseline_all.csv",
   "~/amazon_rds_aurora_1/01_baseline_all.csv",
   "~/google_cloud_sql_1/01_baseline_all.csv"
 ),
 name = c(
   "Amazon RDS MySQL Multi-AZ",
   "Amazon RDS Aurora",
   "Google Cloud SQL 2nd Gen."
 ),
 color = c(
   "darkgreen",
   "red",
   "blue"
 )
)
results$data <- lapply(results$file, read.csv, header=FALSE, sep=",", col.names=c("threads", "tps", "reads", "writes", "latency", "errors", "reconnects"))
# TPS
pdf(paste(output_path, test_name, "_tps.pdf", sep=""), width=12, height=8)
plot(0, 0,
 pch=".", col="white", xaxt="n", ylim=c(0,2000), xlim=c(0,length(steps)),
 main=paste(status, "Transaction Rate by Concurrent Sysbench Threads", status, "\n\n"),
 xlab="Concurrent Sysbench Threads",
 ylab="Transaction Rate (tps)"
)
for(result in rownames(results)) {
 tps <- as.data.frame(results[result,]$data)$tps
 points(1:length(tps) / time_per_step, tps, pch=".", col=results[result,]$color, xaxt="n", new=FALSE)
}
title(main=paste("\n\n", config, sep=""), font.main=3, cex.main=0.7)
axis(1, 0:(length(steps)-1), steps)
legend("topleft", results$name, bg="white", col=results$color, pch=15, horiz=FALSE)
dev.off()
# Latency
pdf(paste(output_path, test_name, "_latency.pdf", sep=""), width=12, height=8)
plot(0, 0,
 pch=".", col="white", xaxt="n", ylim=c(0,2000), xlim=c(0,length(steps)),
 main=paste(status, "Latency by Concurrent Sysbench Threads", status, "\n\n"),
 xlab="Concurrent Sysbench Threads",
 ylab="Latency (ms)"
)
for(result in rownames(results)) {
 latency <- as.data.frame(results[result,]$data)$latency
 points(1:length(latency) / time_per_step, latency, pch=".", col=results[result,]$color, xaxt="n", new=FALSE)
}
title(main=paste("\n\n", config, sep=""), font.main=3, cex.main=0.7)
axis(1, 0:(length(steps)-1), steps)
legend("topleft", results$name, bg="white", col=results$color, pch=15, horiz=FALSE)
dev.off()
# TPS per Thread
pdf(paste(output_path, test_name, "_tps_per_thread.pdf", sep=""), width=12, height=8)
plot(0, 0,
 pch=".", col="white", xaxt="n", ylim=c(0,60), xlim=c(0,length(steps)),
 main=paste(status, "Transaction Rate per Thread by Concurrent Sysbench Threads", status, "\n\n"),
 xlab="Concurrent Sysbench Threads",
 ylab="Transactions per thread (tps/thread)"
)
for(result in rownames(results)) {
 tps <- as.data.frame(results[result,]$data)$tps
 threads <- as.data.frame(results[result,]$data)$threads
 points(1:length(tps) / time_per_step, tps / threads, pch=".", col=results[result,]$color, xaxt="n", new=FALSE)
}
title(main=paste("\n\n", config, sep=""), font.main=3, cex.main=0.7)
axis(1, 0:(length(steps)-1), steps)
legend("topleft", results$name, bg="white", col=results$color, pch=15, horiz=FALSE)
dev.off()


Cloud SQL Second Generation features


But performance is only half the story. We believe a fully managed service should be as convenient as it is powerful. So we added new features to help you easily store, protect and manage your data.


Store and protect data
  • Flexible backups: Schedule automatic daily backups or run them on-demand. Backups are designed not to affect performance.
  • Precise recovery: Recover your instance to a specific point in time using point-in-time recovery.
  • Easy clones: Clone your instance so you can test changes on a copy before introducing them to your production environment. Clones are exact copies of your databases, but they're completely independent from the source. Cloud SQL offers a streamlined cloning workflow.
  • Automatic storage increase: Enable automatic storage increase and Cloud SQL will add storage capacity whenever you approach your limit.

Connect and Manage
  • Open standards: We embrace the MySQL wire protocol, the standard connection protocol for MySQL databases, so you can access your database from nearly any application, running anywhere.
  • Secure connections: Our new Cloud SQL Proxy creates a local socket and uses OAuth to help establish a secure connection with your application or MySQL tool. This makes secure connections easier for both dynamic and static IP addresses. For dynamic IP addresses, such as a developer’s laptop, you can help secure connectivity using service accounts, rather than modifying your firewall settings. For static IP addresses, you no longer have to set up SSL.


We’re obviously very proud of Cloud SQL, but don’t just take our word for it. Here’s what a couple of customers have had to say about Cloud SQL Second Generation:

As a SaaS Company, we manage hundreds of instances for our customers. Cloud SQL is a major component of our stack and when we beta tested Cloud SQL, we were able to see fantastic performance over our large volume customers. We immediately migrated a few of our major customers as we saw 7x performance improvements of their queries.                                                                                     – Rajesh Manickadas, Director of Engineering, Orangescape 
As a mobile application company, data management is essential to delivering the best product for our clients. Google Cloud SQL enables us to manage databases that grow at rates such as 120 - 150 million data points every month. In fact, for one of our clients, a $6B Telecommunications Provider, their database adds ~15 GB of data every month. At peak time, we hit around 400 write operations/second and yet our API calls average return time is still under 73ms.                                                                                                                                                   – Andrea Michaud, Head of Client Services, www.TeamTracking.us

Next steps

What’s next for Cloud SQL? You can look forward to continued Persistent Disk performance improvements, added virtual networking enhancements and streamlined migration tools to help First Generation users upgrade to Second Generation.

Until then, we urge you to sign up for a $300 credit to try Cloud SQL and the rest of GCP. Start with inexpensive micro instances for testing and development. When you’re ready, you can easily scale them up to serve performance-intensive applications.

You can also take advantage of our partner ecosystem to help you get started. To streamline data transfer, reach out to Talend, Attunity, Dbvisit and xPlenty. For help with visualizing analytics data, try Tableau, Looker, YellowFin and Bime by Zendesk. If you need to manage and monitor databases, ScaleArc and WebYog good bets, while Pythian and Percona are at the ready if you simply need extra support.

Tableau customers continue to adopt Cloud SQL at a growing rate as they experience the benefits of rapid fire analytics in the cloud. With the significant performance improvements in Cloud SQL Second Generation, it’s likely that that adoption will grow even faster.                                                                            – Dan Kogan, Director of Product Marketing & Technology Partners, Tableau 
Looker is excited to support a Tier 1 integration for the Google's Cloud SQL Second Generation as it goes into General Availability. When you combine the Looker Data Platform's in-database analytics approach with Cloud SQL's fully-managed database offering, customers get a real-time analytics and visualization environment in the cloud, enabling anyone in the organization to make data-driven decisions.                                                                                                                                           – Keenan Rice, VP Strategic Alliances, Looker 
Migrating database applications to the cloud is a priority for many customers and we facilitate that process with Attunity Replicate by simplifying migrations to Google Cloud SQL while enabling zero downtime. Cloud SQL Second Generation delivers even better performance, reliability and security which are key for expanding deployments for enterprise customers. Customers can benefit from these enhanced abilities and we look forward to working with them helping to remove any data transfer hurdles.                                                                                                  – Itamar Ankorion, Chief Marketing Officer, Attunity 

Things are really heating up for Cloud SQL, and we hope you’ll come along for the ride.

Advancing enterprise database workloads on Google Cloud Platform



We are committed to making Google Cloud Platform the best public cloud for your database workloads. From our managed database services to self-managed versions of your favorite relational or NoSQL database, we want enterprises with databases of all sizes and types to experience the best price-performance with the least amount of friction.

Today, we're excited to announce that all of our database storage products are generally available and covered by corresponding Service Level Agreements (SLAs). We're also releasing new performance and security support for Google Compute Engine. Whether you’re running a WordPress application with a Cloud SQL backend or building a petabyte-scale monitoring system, Cloud Platform is secure, reliable and able to store databases of all types.

Cloud SQL, Cloud Bigtable and Cloud Datastore are now generally available

Cloud SQL Second Generation, our fully-managed database service offering easy-to-use MySQL instances, has completed a successful beta and is now generally available. Since beta, we've added a number of enterprise features such as support for MySQL 5.7, point-in-time-recovery (PITR), automatic storage re-sizing and setting up failover replicas with a single click.

Performance is key to enterprise database workloads, and Cloud SQL is delivering industry-leading throughput with up to 2x more transactions per second at 50% of the latency per transaction when compared to Amazon Web Services (AWS) Relational Database Service (RDS) using Aurora:

Details of the Sysbench benchmark and the steps to reproduce it can be found here.

Cloud Bigtable is our scalable, fully-managed NoSQL wide-column database service with Apache HBase client compatibility, and is now generally available. Since beta, many of our customers such as Spotify, Energyworx and FIS (formerly Sungard) have built scalable applications on top of Cloud Bigtable for workloads such as monitoring, financial and geospatial data analysis.

Cloud Datastore, our scalable, fully-managed NoSQL document database serves 15 trillion requests a month, and its v1 API for applications outside of Google App Engine has reached general availability. The Cloud Datastore SLA of 99.95% monthly uptime demonstrates high confidence in the scalability and availability of this cross-region, replicated service for your toughest web and mobile workloads. Customers like Snapchat, Workiva and Khan Academy have built amazing web and mobile applications with Cloud Datastore.

Improved performance, security and platform support for databases

For enterprises looking to manage their own databases on Google Compute Engine (GCE), we're also offering the following improvements:

  • Microsoft SQL Server images available on Google Compute Engine - Our top enterprise customers emphasize the importance of continuity for their mission-critical applications. The unique strengths of Google Compute Engine make it the best environment to run Microsoft SQL Server featuring images with built-in licenses (in beta), as well as the ability to bring your existing application licenses. Stay tuned for a post covering the details of running SQL Server and other key Windows workloads on Google Cloud Platform.
  • Increased IOPS for Persistent Disk volumes - Database workloads are dependent on great block storage performance, so we're increasing the maximum read and write IOPS for SSD-backed Persistent Disk volumes from 15,000 to 25,000 at no additional cost, servicing the needs of the most demanding databases. This continues Google’s history of delivering greater price-performance over time with no action on the part of our customers.
  • Custom encryption for Google Cloud Storage - When you need to store your database backups, you now have the added option of using customer-supplied encryption keys (CSEK). This feature allows Cloud Storage to be a zero-knowledge system without access to the keys and is now generally available.
  • Low-latency for Google Cloud Storage Nearline storage - If you want a cost-effective way to store your database backups, Google Cloud Storage Nearline offers object storage at costs less than tape. Prior to today, retrieving data from Nearline incurred 3 to 5 seconds of latency per object. We've been continuously improving Nearline performance, and now it enables access times and throughput similar to Standard class objects. These faster access times and throughput give customers the ability to leverage big data tools such as Google BigQuery to run federated queries across your stored data.

Today marks a major milestone in our tremendous momentum and commitment to making Google Cloud Platform the best public cloud for your enterprise database workloads. We look forward to the journey ahead and helping enterprises of all sizes be successful with Cloud Platform.

Stackdriver Error Reporting: there’s a mobile app for that



Ever wish you could receive notifications on production errors of your cloud app, triage them, perform preliminary diagnosis and share them with others from anywhere? Now you can. We’re pleased to announce that all the key functionality of Stackdriver Error Reporting is now available on the Google Cloud Console app, today on Android and very soon on iOS.
Receive mobile push notifications on new error with detailed error information
We thoroughly redesigned the Error Reporting UI to be suited for mobile devices, enabling you to perform the same actions you can perform on the desktop version, including exploring service errors and their stack traces, filtering them based on a time range, service and version and sorting them by number of occurrences, affected user counts or first-seen and last-seen dates.

Take action from your phone by linking an error to an issue in your favorite issue tracker, by muting it or sharing it with your teammates.
See the top of your cloud services from the Cloud Console mobile app (click to enlarge)
Error Reporting for mobile integrates nicely with the other features of the Cloud Console mobile app  for example, you can jump from an error to the latest request log where it occurred, or from the error that just occured to review details of the faulty version of your Google App Engine service, right from your phone. Download the app today on Android and very soon on iOS. And don’t forget to send us your feedback at [email protected].

The dragon days of summer: this week on Google Cloud Platform



Ah, summer! The time for relaxing, taking the kids to a matinee, and . . . using machine learning to recognize everyday objects using the Cloud Vision API!

That’s what the fine folks at Disney and Google Zoo are doing to promote their new movie Pete’s Dragon: Accessing the Cloud Vision RESTful API, Disney has created a mobile website that allows your mobile device to recognize objects in your field of vision and display Elliot the Dragon in and around those objects in Augmented Reality (AR). Try it out from your mobile device at Dragonspotting.com.

But in Google Cloud Platform circles, that’s been the extent of the relaxing. In the past week, the GCP team has been exceptionally busy, releasing new versions of Google Cloud Dataflow and Google Cloud Datalab, adding support for Python 3 in Google App Engine flexible environment, acquiring Orbitera, partnering with Facebook on a new DC 48V power standard and dropping prices on Preemptible VMs!

Other community members chimed in on how to perform rolling updates on managed GCP databases, analyzing residential construction trends using Google BigQuery, exploring the performance model of Cloud DataFlow and analyzing GitHub pull requests using BigQuery.

Maybe all this hard work is paying off. A recent survey of 200 IT professionals found that 84% of them are using public cloud services, and that GCP beats out the other major providers as their preferred platform.
A survey by SADA Systems, a Google for Work Premier Partner, of 200+ IT managers about their use of public cloud services

OK, so maybe we’ll take a vacation next week . . .

Finding Pete’s Dragon with Google Cloud Vision API



In a world where seeing is believing, people of all ages are looking for new ways to interact with their favorite stories and characters. And machine learning presents an opportunity to make this a reality.

Disney’s "Pete's Dragon" arrives in U.S. theaters in 3D this Friday. To promote the film, Disney collaborated with Google and MediaMonks to create "Dragon Spotting," a digital experience that uses Google Cloud Vision API to bring the magic of "Pete's Dragon" to life.
Via dragonspotting.com, people set out on a quest to find Elliot using their smartphones. They’re prompted to seek common items, such as couches, bicycles or trees, near their homes or around the neighborhood. Once they find the quest object, they can view Elliot in augmented reality through the lens of their Android mobile device. Users with iOS devices can have the same kind of experience by taking and uploading images of items prompted on the site to see if Elliot is hiding nearby.
To work, the mobile website needed to recognize everyday objects from a mobile camera with a high degree of accuracy. Accessing a simple REST API, the game uses Cloud Vision API’s Label Detection feature to identify objects in the user’s field of vision, dubbed “entities.” The API returns the list of entities identified within the image. The website then checks if the desired object is in the list of entities returned from the API. For example, if the user needs to identify “couch,” the website checks against a list of possible responses: “chair, futon, couch, sofa.” As soon as the recognized entity matches the desired object, Elliot is revealed!
Disney’s creative application of Google’s Cloud Vision API shows how machine learning can enable developers to build innovative and engaging experiences for marketing campaigns.

Don’t miss your chance to see Elliot and check out the site! You can also click here to learn more about Cloud Vision API and test it for yourself. We look forward to seeing how you build the next generation of applications that can see, hear and understand the world.

Python 3 on Google App Engine flexible environment now in beta



Developers running Python on Google App Engine have long asked for support for Python 3 and third-party Python packages. Today we're excited to announce the beta release of the Python runtime on App Engine Flexible Environment with support for Python 3.4 and 2.7. You can now develop applications in the Python version you prefer and create performant mobile and web backends using the frameworks and libraries of your choice. Meanwhile, developers benefit from App Engine's built-in services, such as autoscaling, load balancing, microservices support and traffic splitting and hence can focus on their code and not worry about infrastructure maintenance.

Here at Google, we're committed to the open-source model and strive for product designs that promote choice for developers. App Engine Flexible Environment runtimes are simple and lean, distributed on github, and can access services from any cloud platform provider, including Google Cloud Platform using the Python Client Libraries. Because of containerization, you can run your application on App Engine Flexible, Google Container Engine, Google Compute Engine, locally (for example by using minikube), and on any cloud provider that supports containers.

Getting started with Python on App Engine is easy. The best place to start is the Python developer hub, where we've gathered everything Python in one place. If you’re new to App Engine, we recommend trying out this Quickstart to get a sense of how App Engine Flexible works. Here's a quick video of the quickstart experience for you to watch.


For more experienced users and those who wish to learn more about Python on Google Cloud Platform, we recommend completing the bookshelf tutorial.

When running a Python application on App Engine, you can use the tools and databases you already know and love. Use Flask, Django, Pyramid, Falcon, Tornado or any other framework to build your app. You can also check out samples on how to use MongoDB, MySQL or Google Cloud Datastore.

Using the Google cloud client library, you can take advantage of Google’s advanced APIs and services, including Google BigQuery, Google Cloud Pub/Sub, and Google Cloud Storage using simple and easy-to-understand API formatting:

from gcloud import storage
client = storage.Client(‘<your-project-id>’)
bucket = client.get_bucket('<your-bucket-name>')
blob = bucket.blob('my-test-file.txt')
blob.upload_from_string('this is test content!')


We're thrilled to welcome Python 3 developers to Google Cloud Platform and are committed to making further investments in App Engine Standard and Flexible to help make you as productive as possible.

Feel free to reach out to us on Twitter using the handle @googlecloud. We're also on the Google Cloud Slack community. To get in touch, request an invite to join the Slack Python channel.


Preemptible VMs now up to 33% cheaper



We’re happy to announce that we’ve lowered the price of Preemptible VMs by up to 33%! Since launching Preemptible VMs last year, we’ve tuned our algorithms, improved their efficiency and analyzed usage patterns. Our experience, combined with the growth of Google Cloud Platform, allows us to offer deeper discounts. For example, the price of an n1-standard-1 Preemptible VM instance is now just one cent per hour. That’s 80% cheaper than the equivalent, non-preemptible instance, with no bidding or guesswork. The new pricing is already in effect.

Preemptible VMs are just like any other Google Compute Engine VM, with the caveat that they cannot run for more than 24 hours and that we can preempt (shut down) the VM earlier if we need the capacity for other purposes. This allows us to use our data center capacity more efficiently and share the savings with you.

Over the last year, Google Cloud Platform customers, such as Citadel, have used Preemptible VMs to greatly reduce their compute costs, and have come up with lots of interesting use cases along the way. Our customers are using Preemptible VMs to analyze data, render movies, process satellite imagery, analyze genomic data, transcode media and complete a variety of business and engineering tasks, using thousands of Preemptible VM cores in a single job. We believe that the price reduction for Preemptible VMs will unlock even more computing opportunities and enable you to tackle interesting science and business problems.

Here are some ways you can launch a Preemptible VM right now:



Here are some tips and tricks to help you get the most out of Preemptible VMs:

  • Resources for Preemptible VMs come out of excess Google Cloud Platform capacity. The load on our Cloud Platform data centers varies with location and time of day, but is generally lowest on nights and weekends the best time to run large Preemptible VM clusters.
  • We avoid preempting too many VMs from a single customer and, given the choice, preempt VMs that were launched most recently. This might be a bit frustrating at first, but in the long run, this strategy helps minimize lost work across your cluster. And because we don’t bill for VMs preempted in the first 10 minutes, it saves on costs too.
  • It’s a good idea to retry once or twice, even if you’ve been preempted early. Combining regular and Preemptible VMs in your clusters will ensure that tasks proceed at an adequate pace.
  • Manage shutdown and preemption notices with a shutdown script that saves a job’s progress so that it can pick up where it left off, rather than start over from scratch.

For more details on Preemptible VMs, please check out the documentation. For more pricing information, take a look at our Compute Engine pricing page or try out our pricing calculator. If you have questions or feedback, go to the Getting Help page.

We’re excited to see what you build with our products. If you want to share stories and demos of the cool things you have built with Preemptible VMs, send us an email or reach out on Twitter, Facebook, or G+.

Orbitera joins the Google Cloud Platform team



Today we’re excited to announce that Google has acquired Orbitera!

Orbitera provides a commerce platform that makes buying and selling software in the cloud simple, seamless and scalable for all kinds of businesses, including independent software vendors, service providers and IT channel organizations.

The current model for the deploying, managing and billing of cloud-based software does not easily fit the way today’s modern enterprises operate. Orbitera automates many of the processes associated with billing, packaging and pricing optimization for leading businesses and ISVs (Independent Software Vendors) supporting customers running in the cloud. More than 60,000 enterprise stacks have been launched on Orbitera.

At Google, we partner closely with our enterprise customers and software providers to ensure their transition to the cloud is as simple and seamless as possible. We recognize that both enterprise customers and ISVs want to be able to use more than one cloud provider and have a way to conduct product trials and proofs of concept before building a full production deployment, all using their trusted SIs (System Integrators), resellers and normal sales cycles.

Orbitera has built a strong ecosystem of enterprise software vendors delivering software to multiple clouds. This acquisition will not only improve the support of software vendors on Google Cloud Platform, but reinforces Google’s support for the multi-cloud world. We're providing customers with more choice and flexibility when it comes to running their cloud environment.

Looking to the future, we're committed to maintaining Orbitera’s neutrality as a platform supporting multi-cloud commerce. We look forward to helping the modern enterprise thrive in a multi-cloud world.

Google teams up with Stanford Medicine for Clinical Genomics innovation


Google Cloud Platform has teamed up with Stanford Medicine to help clinicians and scientists securely store and analyze massive genomic datasets with the ultimate goal of transforming patient care and medical research.

Stanford Medicine ranks as one of the country’s best academic medical centers, and we’re eager to see what can happen when we work together. We anticipate that our contributions of HIPAA-compliant cloud computing, machine learning and data science  combined with Stanford’s expertise in genomics and healthcare  could lead to important advances in precision health, a predictive and preventive approach to healthcare.

This is a great opportunity to bring data science to patient care by combining genomics and traditional health records. Our collaboration is in support of the new Clinical Genomics Service at Stanford Health Care, which aims to sequence and analyze thousands of patients’ genomes. Cloud Platform will allow Stanford scientists and clinicians to securely analyze these massive datasets immediately and scale up painlessly as clinical genomics becomes more commonplace.

As genome sequencing becomes affordable, more and more patients will be able to benefit from it. Modern cloud technology and data science tools can vastly improve analysis methods for genomic data. Working with the team at Stanford, we expect to build a new generation of platforms and tools that will facilitate genome analysis at massive scale, providing actionable answers about gene variants from each person’s genome in a fraction of the time it takes now, and use that information to make better medical decisions.

Stanford researchers already have some cool ideas in mind for expanding beyond genome data, such as using machine-learning techniques to train computers to read pathology or X-ray images and identify tumors or other medical problems. They’ve also amassed years of anonymized patient data that could be used to teach algorithms to distinguish false signals from real ones, such as hospital alarms that go off when nothing is wrong with a patient.

Together, we believe these efforts will pay off in new insights into human health and better care for patients at Stanford and other institutions.