Cloud computing makes it relatively easy to manage a large-scale software operation without serious operations expertise. The breadth, quality, services and support offered by today's cloud providers are pretty amazing. It is pretty much a no-brainer for any company that doesn't have hundreds of servers (or already have a working set up). In this article I'll dive into the Google Cloud Platform and describe some of its offerings.
Lock-in, Price, Security and Multi-Provider Capabilities
Before talking specifically about the Google Cloud, I want to address the issue of vendor lock-in. For some companies it is a big deal and they want to preserve the ability to switch to another provider, to bare metal servers, or even run their own data centers. A good strategy to employ in this case is to use standard best practices and introduce a layer of indirection through APIs, tools and user interfaces that isolate you from direct interaction with the cloud provider and also to consider carefully, what platform services you use.
Some companies have such sensitive data that they want full physical control and can't trust a cloud provider, so this, obviously, isn't the right fit.
Another reason companies avoid cloud computing is the price. The (virtual) hardware cost is indeed higher with a cloud provider, but for non-huge clusters the expense of operating your own servers and the inefficiencies associated with capacity planning and self-provisioning will be much higher than the savings on hardware.
The Google Factor
Google is at the forefront of data engineering. Google has possibly innovated more than any other company in recent years in the areas of networking, data center design and data pipelines. Everybody's darling — Hadoop — is based on a more than a decade-old Google technology that was published in a famous MapReduce paper. Google has moved on since and is a couple of generations ahead. They've even conquered time with synchronized atomic clocks.
The Google Cloud Platform
The Google Cloud platform is Google's effort to open up its amazing technology to everybody — for a price. You benefit from Google's hard learned lessons and your hardware and data are managed by Google.
Google's pricing is aimed at addressing concerns regarding the high cost of cloud computing. They offer multiple machine types, including cheaper pre-emptible VMs that can be stopped for non-critical loads and several types of storage options with different price/access trade offs. The premise is that you pay for what you use. For example, per minute billing. The latest billing info can be found here.
APIs, Client libraries, Command-line Tools and the Developer Console
All the platform services are available through REST APIs. Client libraries are available for some languages: Python, Go, Node.js and Ruby. The Python page (my favorite) can be found here.
There is also a command-line tool called gcloud as part of the SDK. The gcloud command-line tool allows accessing each and every aspect of the platform.
Finally, the developer's console is a full-fledged web interface for browsing and checking the status of your projects and performing various manual operations:
App Engine is a PaaS (Platform as a Service). You can upload web application and benefit from the convenience of Google hosting, operating and scaling your application. There is a free quota that is adequate for development, so you can experiment for free. Give it a try here.
Cloud storage is the first, among many, storage services Google provides. It is a blob store organized in buckets and it is API compatible with AWS S3 (some migration either way are super simple). You get three price/availability options: standard, RDA and nearline. They progress from highly available/more expensive to less available/less expensive. Right now, it costs 2.6 cents to store 1GB of data in standard mode, which is available 99.9% of the time in under a millisecond.
Google Compute Engine
This is the bread and butter of cloud computing. The compute engine is similar to AWS EC2 and represents the IaaS (Infrastructure as a Service) offering of Google. You select a machine type, you get SSH access and you're responsible for configuring it as you wish and running your applications on it. You can install pretty much anything (starting with a selection of multiple OS images). There are many machine types and you can add various storage options such as shared network persistent disks, SSD disks and local disks. You can use services like instance groups and images for quickly provisioning instances and balance the load between multiple instances.
Google Container Engine
The container engine is Google's solution to containerization. It is built on top of Kubernetes and provides all the container goodness you expect without concerns of lock-in because Kubernetes is fully open source and runs on other cloud providers as well.
There are many more services on the cloud platform such as distributed SQL store, distributed NoSQL key value store, BigQuery for data warehousing and a Pub/Sub for distribution publish/subscribe event notification.
Google provides a first class cloud platform that is based on its first rate technology. It is not the current leader in the market (AWS is), but being a follower has its advantages as there are fewer legacy and backward compatibility issues to consider and Google takes full advantage of that.