16:00 - 17:00
Microservices architectures use an assembly of fine-grained services to deliver functionality. This reduces dependencies between teams resulting in faster code to production. Serverless architecture code is an execution model where server-side logic runs in stateless, event-triggered, compute containers that are fully managed by cloud vendor. It is associated with less management overhead (as there are no servers to maintain) and is cheaper to operate since you only pay for what you use. While there are similarities and dissimilarities with both architectural styles, both require an application to be composed of a collection of loosely coupled components, which implement business capabilities. Thus, it is possible to implement microservices architecture as a serverless application. This talk elaborates on this topic, covering the pros and cons, details of various deployment patterns, and best practices. It shows how to implement distributed sagas, how code can be structured in both monorepo and multirepo, and how to leverage Thrift/Protocol buffers to manage contracts between functions. It also covers how to prevent the problem of getting stuck in an infinite loop as well as why you need a rollback mechanism (which is needed for sagas anyway), and why one should embrace eventual consistency when designing fault-tolerant business processes.