Serverless desing patterns, WHY?

Serverless desing patterns, WHY?

With the rise of the cloud and the advancement of modern technologies, the cloud has been a go-to solution for designing and experimenting with product/platform solutions. However, cloud applications have a unique set of characteristics: they deal with unpredictable workloads, run on commodity hardware, and provide services to untrusted users. These factors impose a range of problems.

On the other hand, we’re building more and more complex platforms, at the same time trying to address ever-changing business requirements, and delivering them on time to an increasingly large number of users. What we deliver is inherently unique, a combination of different services, technologies, features, and teams with their contexts and competing priorities.

Serverless computing allows you to build and run applications and services without thinking about servers. Serverless applications don’t require you to provision, scale, and manage any servers.

Designing an application or a data platform for that matter, the architecture style we choose and the design patterns we follow for the use case of our platform play a vital role as seen below:

Continuously delivering quality and reliable software fast is a core business advantage. Accelerating the development process with modern architectures, frameworks, and practices gives a strategic edge over the market. This is where serverless technologies have become a game changer in the realm of cloud application/platform architectural design, addressing design principles and pillars of well-architected frameworks. Serverless has been a great enabler for experimenting, learning, and out-experimenting the market competition.

Nevertheless, serverless design of platforms can be challenging to optimize and sometimes overwhelming, for which we can always follow various architectural design patterns for serverless applications. Architectural Patterns are a powerful way to promote best practices, robust solutions, and a shared architectural vision across our engineering organization. They provide a template for solutions to problems (sometimes that we didn’t even know we had).

In this article, I will be explaining the cloud design patterns that I have worked with over the years, working on multiple cloud projects, products and platforms. I’ve seen patterns that we can adopt to solve common problems found in modern cloud architectures. While this is not an exhaustive collection, it can be used as a catalog of architectural building blocks for the next platform we build.

Architectural Pattern Catalog:

  1. Simple Web Service Pattern

  2. Decoupled Messaging Pattern

  3. Robust API Pattern

  4. Aggregator Pattern

  5. Pub/Sub Pattern

  6. Strangler Pattern

  7. Queue-based Load Leveling Pattern

  8. Read-heavy reporting engine

  9. Streams and Pipelines Pattern

  10. Fan-in and Fan-out Pattern

Enjoyed this article?