Architectural Design Patterns 9 – Circuit Breaker

When designing systems, especially distributed systems, the flow of data and service requests must remain continuous. This brings us to an architectural design pattern called the Circuit Breaker. It comes from electronics. Simply, it is designed to stop the flow when something goes wrong. This prevents potential cascading failures in a system. Understanding the Circuit Breaker Pattern Imagine a scenario where a service relies heavily on another third-party service. However, that third-party service becomes slow or starts to fail at some point. Without any preventive measures, our service will keep making requests, waiting for timeouts, even getting stuck. This is…

Read More

Architectural Design Patterns 8 – Serverless (Function as a Service – FaaS)

Today's topic is a quite popular one, a fuzzy word getting more and more popular once it used to be a niche architectural pattern only. When we think about building software, a lot of the time and energy is spent thinking about where and how it will run. Serverless architecture, also known as Function as a Service or FaaS, helps this to change. Instead of planning the environment to run, developers mainly write functions and let cloud providers like AWS or Azure handle where it runs. Briefly describing, Serverless is an architectural model where cloud providers fully manage code execution.…

Read More

Architectural Design Patterns 7 – Domain-Driven Design

Domain-Driven Design, or DDD for short, isn't about code at first. It's about understanding the main business inside out, and then designing software that speaks the business's language. Think about a hospital system. Before we write code, we would talk about patients, doctors, treatments, and appointments. By diving deep into the "domain" or the core of the business, we create software that feels like it was tailor-made for it. DDD is super useful for businesses with unique rules and ways of doing things. Let's take insurance as an example. They've got tons of rules on who gets covered, how much…

Read More

Architectural Design Patterns 6 – Service-Oriented Architecture

Service-Oriented Architecture, often known simply as SOA, can be thought of as a city of services. In this city, each service is like a shop. Every shop provides a unique product or service but doesn't worry about the other shops around it. Instead, it focuses on doing its own job really well. So, SOA is about creating independent services that work together in a large system. Now, where would you find SOA being used? Imagine big companies with different departments, like finance, human resources, or sales. Each department uses different software. With SOA, these different pieces of software can communicate…

Read More

Architectural Design Patterns 5 – Monolithic

I am aware that in our present day world, it is a sin to talk about monolith and not to curse it. However, I am will neither hallelujah nor curse it. I will just try to explain it as an architectural design pattern and try to expose both positive and negative sides of it. The Monolithic architecture stands as a testament to the earlier days of software development. A monolithic architecture is like a single, tightly packed unit where all the software components are bundled together. Think of it as a large factory where every product stage, from raw materials…

Read More

Architectural Design Patterns 4 – Event-Driven Architecture

Event-Driven Architecture is currently enjoying a lot of attention from businesses around the world due to the enhanced capabilities offered by cloud-based systems. Imagine a digital ecosystem like a busy marketplace. In this environment, various systems act as vendors declaring their services and updates. Rather than each customer (or system) having to visit every vendor to check for new items, they simply wait and respond whenever a vendor announces a product they're interested in. That's precisely how Event-Driven Architecture operates. Systems no longer continuously scan for updates or changes; they react upon the occurrence of a significant event. For instance,…

Read More

Architectural Design Patterns 3 – Microservices

In this article, we will be talking about Microservices, a design pattern that has gained attraction for its approach to building large and complex software applications. At its core, Microservices is about breaking down an app into smaller parts where each part doing its own job. Instead of one big chunk of software that does everything, you have multiple little services working together. Each microservice is responsible for its own task but collaborating with others to function properly. This approach shines in many situations, especially in cloud-based systems. The cloud is like massive land ready for construction. Microservices allow developers…

Read More

Architectural Design Patterns 2 – Model-View-Controller (MVC)

When you're diving into the world of software design, you'll often hear about the Model-View-Controller, or MVC for short. It's one of those blueprints, or design patterns, that helps developers keep their code tidy and well-organized. In this piece, we'll take a close look at what MVC is and how its parts play together. Model: The Model is the brain behind the data. It's where you keep everything related to the data you're working with: fetching it, updating it, or even deleting it. Imagine you have an app that keeps track of books in a library. The Model will have…

Read More

Architectural Design Patterns 1 – Layered (or Tiered) Pattern

Here in this first post of the blog, I want to also start with the first part of a series. In this post of the series, we will be talking about Layered (or Tiered) Pattern. When you're building a software project, you need a plan to organize your code. That's where architectural design patterns come in. Architectural design patterns is a huge topic getting more and more interest by software developers and businesses. I want to write about the most popular architectural design patterns as a series of blog posts. What is the Layered Pattern? Imagine a cake with several…

Read More