Every developer dreams of a world where the developer doesn't have to set up and manage infrastructure, especially if all that's needed is a small bit of logic to do some quick processing on a piece of data. Cloud Functions make it possible to run a completely service-less environment, where logic can be executed on demand and in response to events. Cloud Functions can act as a glue between disparate applications. With Cloud Functions you can build a server-less microservices architecture that's highly scalable. You can simply focus on the code and not worry about setting up servers to run that code. In the module using Google Cloud Functions for Event-Driven Processing, you'll learn about Cloud Functions triggers. You'll learn how to execute Cloud Functions in response to asynchronous events, and synchronous HTTP invocations. You'll develop and deploy Cloud Functions to perform Event-Driven Processing. You'll learn how to handle logging, error reporting, and monitoring for Cloud Functions. Google Cloud Platform services emit events such as, when files are uploaded to a Google Cloud Storage Bucket, or messages are published to a Google Cloud Pub/Sub topic. External service can invoke functions in response to events in those systems, such as when a commit is made to a GitHub repository. Cloud Functions are triggered in response to these events, Cloud Functions can invoke other APIs or write data back to the Cloud. With Cloud Functions you can develop an application that's event-driven, server-less, and highly scalable. Each function has a lightweight microservice that enables you to integrate application components and data sources. Cloud Functions are ideal for microservices that require a small piece of code to quickly process data that are related to an event. Cloud Functions are priced according to how long your function runs the number of times it's involved, and the resources that you provision for the function. Consider an application that allows users to upload images that contain text to a Bucket in Cloud Storage. The OCR Cloud Function is triggered when a new image is uploaded to the Images Bucket. This function uses the Google Cloud Vision API to extract text from images, and then queues up the text in Cloud Pub/Sub for translation. The Translator Cloud Function triggered by the Cloud Pub/Sub topic, invokes the Google Cloud Translation API to translate the text. It queues up the translated text in the File Writer Topic in Cloud Pub/Sub. The file writer Cloud Function writes the translated text for each image, as a separate file in Cloud Storage. In this example, all components of the application use fully managed services and APIs such as Cloud Storage, Cloud Pub/Sub, Cloud Functions, Cloud Vision API, and Cloud Translation API. These services scale automatically, depending on the volume of incoming data and required compute resource. The scalability and reliability enables you to focus on your application code. Cloud Functions can be used in a variety of use cases that require lightweight microservices or Event-Driven Processing, Cloud Functions can serve as Webhooks. For example, you can set up a Webhook that's invoked automatically after each commit to a GitHub repository. External and internal clients can make direct HTTP calls to invoke microservices that are deployed as Cloud Functions. You can use Cloud Functions to perform lightweight extract, transform, load, or ETL operations. For example, when a file is uploaded to Cloud Storage, Cloud Functions can be triggered to transform and upload the contents to a database. You can also use cloud functions to process IoT streaming data or other application messages that are published to a Cloud Pub/Sub topic. Cloud Functions can be triggered asynchronously in response to events such as those in Cloud Storage, Cloud Pub/Sub or Firebase. Asynchronously triggered functions are called Background Functions. Cloud Functions can also be invoked synchronously by direct HTTP request response, functions involved in this manner are called HTTP functions. Remember Cloud Functions have a default time out value of 60 seconds, ensure that the function will complete execution before timing out. For HTTP Functions, it's important to keep the execution time to a minimum to avoid a negative user experience.