Cloud Run brings Serverless to containers. It is a managed compute platform that automatically scales your stateless containers and abstracts away all infrastructure management, so developers can focus on building great applications.
Microservices architecture uses an assembly of fine-grained services, often packaged in containers, to deliver functionality. While there are several advantages of microservices architecture, most notably faster code to production by reducing the dependencies between teams, it has the drawback of significant management overhead.
This talk describes how CloudRun can be used to implement Microservices architecture without the need for management overhead that comes with Microservices and is cheaper to operate since you only pay for what you use (in a Serverless fashion).
A major issue with Microservices architecture is distributed data management and sagas are used to ensure data consistency across services. The talk covers, how to implement distributed sagas as a protocol for coordinating request among multiple containers.
The talk elaborates on how Clouds Tasks, a managed service that allows you to manage the execution, dispatch, and delivery of a large number of distributed tasks, can be used to increase performance of the system by increasing the throughput & response times.
Also, Cloud Scheduler, a managed enterprise-grade scheduler, can be used to schedule virtually any job, including batch, big data jobs, cloud infrastructure operations, and more. The talk shows an example on how you can automate retries in case of failure to reduce manual toil and intervention. Cloud Scheduler can even act as a single pane of glass, allowing you to manage all your automation tasks from one place.
Cloud Run is Knative compatible, so it is possible to implement a hybrid system through a combination of Knative & Cloud Run. Event multi-cloud systems can be implemented since Cloud Run application can be made to run on any kubernetes cluster including GKE.
The talk covers some best practices to follow, particularly around schema isolation and avoiding common data ownership. Moreover, it emphasizes the need for having a rollback mechanism (which is needed for sagas anyway) and adopting eventual consistency for designing fault tolerant systems. Some aspects on how testing application are covered using local testing for faster feedback cycles.
The objective of this talk is to understand the benefits of implementing microservices architecture as a Cloud Run and to enable the developer to navigate through the pitfalls during the implementation stage.