Let's go through the other deployment platforms. GKE, cloud Run, App Engine and Cloud Functions. Google Kubernetes Engine, or GKE, provides a managed environment for deploying, managing, and scaling containerized applications using Google infrastructure. The GKE environment consists of multiple Compute Engine virtual machines grouped together to form a cluster. GKE clusters are powered by the Kubernetes open-source cluster management system. Kubernetes provides the mechanisms with which to interact with the cluster. Kubernetes commands and resources are used to deploy and manage applications, perform administration tasks and set policies and monitor the health of deployed workloads. This diagram on the right shows the layout of a Kubernetes cluster. A cluster consists of at least one cluster control plane and multiple worker machines that are called nodes. These control plane and node machines run the Kubernetes cluster orchestration system. Pods are the smallest, most basic deployable objects in Kubernetes. A pod represents a single instance of a running process in a cluster. Pods contain one or more containers, such as Docker containers that run the services being deployed, you can optimize resource use by deploying multiple services to the same cluster. Cloud Run, on the other hand, allows you to deploy containers to a Google managed Kubernetes cluster.A big advantage is that you don't need to manage or configure the cluster. The services that you deploy must be stateless. Images you use must be in Container Registry. Cloud run can be used to automate deployment to anthros GKE clusters. You should do this if you need more control over your services, because it will allow you to access your VPC network, tune the size of compute instances, and run your services and all GKE regions. The screenshot on the right shows a Cloud Run configuration, where the container image URL is specified along with the deployment platform, which can be fully managed Cloud Run or Cloud Run for Anthos. App Engine is a fully managed serverless application platform supporting the building and deploying of applications. Applications can be scaled seamlessly from zero upward without having to worry about managing the underlying infrastructure. App Engine was designed for microservices. For configuration, each Google Cloud project can contain one App, Engine application, and an application has one or more services. Each service can have one or more versions, and each version has one or more instances. App Engine supports traffic splitting, so it makes switching between versions and strategies such as canary testing or AB testing simple. The diagram on the right shows the high level organization of a Google Cloud project with two services, and each service has two versions. These services are independently deployable and versioned. Let me show you a typical app Engine microservice architecture. This could be an example of a retailer that sells online. Here, App Engine serves as the front end for both web and mobile clients. The backend of this application is a variety of Google Cloud Storage solutions with static content such as images stored in Cloud Storage, cloud SQL used for structured relational data, such as customer data and sales data, and Firestore used for no SQL storage such as product data. Firestore has the benefit of being able to synchronize with client applications. Memcache is used to reduce the load on the Datastores by caching queries and Cloud tasks are used to perform work asynchronously outside a user request or service to service request. There's also a batch application that generates data reports for management. Cloud Functions are a great way to deploy loosely coupled, event-driven microservices. They have been designed for processing events that occur in Google Cloud. The functions can be triggered by changes in a Cloud Storage bucket, a Pub Sub message, or HTTP requests. The platform is completely managed, scalable, and inexpensive. You do not pay if there are no requests and processing is paid for by execution time in 100 millisecond increments. This graphic illustrates an image translation service implemented with Cloud Functions. When an image is uploaded to a Cloud Storage bucket, it triggers an OCR Cloud Function that identifies the text and the image using Google Cloud Vision API. Once the texts has been identified, this service then publishes a message to a Pub Sub topic for translation, which triggers another Cloud function that will translate the identified texts and the image using the Cloud Translation API. After that, the translator Cloud Function will publish a message to a file, right topic in Pub Sub, which triggers a Cloud function that will write the translated image to a file. This sequence illustrates a typical use case of Cloud Functions for event-based processing.