The list of products available in Google Cloud Platform, while shorter than the lists from Azure or AWS, can still seem quite daunting. Here’s a quick overview of what’s available in the Google Cloud Platform (GCP) specifically for .NET applications.
GCP offers many products under the Compute umbrella, but most are not easily accessible to the Windows Server + IIS + .NET developer. The two main offerings of interest are Compute Engine and App Engine.
Compute Engine is the family of services focused on the management of VMs in the Google Cloud. This is truly Infrastructure as a Service (IaaS). This includes single instances, instance images, snapshots, disks, instance templates, and auto-scaling instance groups. In GCP, you can create Windows Server VMs, and the licensing and activation are handled entirely by GCP and simply rolled into the cost of the VM. This is the only way to run .NET 4.x in GCP.
If Compute Engine is Infrastructure as a Service, App Engine is Platform as a Service (PaaS). With App Engine, the focus is more on running your code in managed environments and less about the management of the metal itself. In addition to that, App Engine adds automatic health checks, scaling, traffic splitting, memcache, logs, task queues, and more. You can write new ASP.NET Core applications that can be hosted in App Engine’s flexible environment with what they call a custom runtime–in this case, requesting the official Microsoft .NET Core Images from the repository.
Once you get past the limited support for Windows and .NET in GCP, everything else really starts to open up. There’s a NuGet package for every GCP service, making it easy to consume them from any .NET project. Here are some of the available storage options:
|Cloud Storage||File-oriented storage with geo-redundancy, edge-caching, support for video streaming, lifecycle management, access control, and more.|
|Cloud SQL||Managed MySQL in the cloud. It may not be SQL Server, but it is supported by Entity Framework, so if you primarily interface with a relational database through an ORM, you might not even notice a difference.|
|Cloud Bigtable||A unique offering not available in any other cloud! Managed Bigtable, which is a NOSQL database of the “column family” variety, well-suited to handling truly huge amounts of data.|
|Cloud Datastore||Another managed NOSQL database, this one of the “document” variety. Document databases are some of the most popular and well-known NOSQL databases, best suited for storing denormalized, heterogeneous and/or hierarchical data.|
GCP offers a variety of networking services, including virtual private networks, load balancing, Content Delivery Networks (CDNs), the ability to create a network that enables interconnectivity between GCP and external infrastructure, and even the ability to manage Domain Names.
In addition to Cloud Bigtable, GCP offers several other services that support the unique needs of big data.
|BigQuery||Built on Bigtable, the key differences are that BigQuery offers full ANSI SQL support, and the billing works differently. When at rest, data in BigQuery costs much less to store than Bigtable. Billing occurs when the data is actually queried, and is per TB of data actually read by the query.|
|Cloud Dataflow||Stream data processing with automatic scaling, partitioning, and windowing|
|Cloud Pub/Sub||A managed publish/subscribe service with a flexible variety of delivery options, including push/pull and fan-in/fan-out. With this service, you can implement a variety of communication patterns, including task queues, async workflows, event notifications, and more.|
The GCP Machine Learning family of services includes a multitude of APIs that encapsulate models already trained to perform tasks such as analyze natural language, convert speech to text, translate languages, recognize things in images, and more. Then there is the Machine Learning Service, currently in beta, which allows you to train your own model using the TensorFlow framework.
GCP offers a unified management service called Stackdriver, which enables monitoring, logging, error reporting, tracing, and even in-production debugging (debugging not available for any .NET languages, sadly). It also offers Cloud Endpoints, a service that lets you define a RESTful API and then surrounds that with authentication, logging, and monitoring. The implementation of the API can be hosted on App Engine Flexible, which in turn can contain ASP.NET Core applications.
For the ASP.NET developer, GCP offers a cross-platform CLI, a Visual Studio extension, and tools for PowerShell.
Identity & Security
GCP has its own implementation of Identity and Access Management (IAM) called Cloud IAM. Out of the box, it offers not only standard roles for users, but also specialized roles and fine-grained control relative to specific GCP resources. For example, you can create an IAM access control policy that grants the Subscriber role for a specific Cloud Pub/Sub topic. Cloud IAM automatically creates a full audit trail of permissions as well.
That covers the highlights of what’s available on GCP, especially the products of interest for .NET developers. There are even more that I glossed over or are bundled with other products as well. Check out the full list at http://cloud.google.com/products.