Reactive Architecture

Backpressure in Akka Stream

Reading Time: 4 minutes “Reactive Streams” — whenever we come across these words, there are two things that come to our mind. The first is asynchronous stream processing, and the second is non-blocking backpressure. In this blog, we are going to learn about the latter part. Understanding Backpressure Very simply put, the idea behind backpressure is the ability to say “hey slow down!”. Let’s start with an example that Continue Reading

Introduction to Domain Driven Design (DDD)

Reading Time: 3 minutes What is Domain? To define domain-driven-design we should first establish what we mean by domain. The common dictionary definition of the domain is a sphere of knowledge, influence, or activity. In the context of software engineering, it refers to the subject area on which the application is intended to apply. For example, if you are building an E-commerce software, in this case, sales will be Continue Reading

CAP Theorem | Building Scalable Systems | Reactive Architecture

Reading Time: 3 minutes CAP Theorem, a Distributed System must account for this theorem which means when two or more systems try to connect with each other they need to account this Theorem. In this blog, we are gonna discuss about this theorem and how we have to sacrifice any factor while communicating with another system. Apart from this we’ll also discuss some other related terminologies and theorems. CAP Continue Reading

Reactive Architecture: Introduction to Reactive Systems

Reading Time: 2 minutes In this post, we are going to talk about reactive system what exactly we mean by reactive systems and how the software industry or application have evolved over a period of time. So today we want a highly reactive system. This post is about understanding the term Reactive System. What exactly we mean by such a system. What is a Reactive System? A system that Continue Reading

Performance v/s Scalability in Reactive Microservices

Reading Time: 2 minutes Performance and Scalability are the two main factors that come into account when creating a Distributed System. When people talk about these two terminologies they very often use these two words synonymously. However, they mean different things. As there’s a lot of misunderstanding so in this blog we’ll discuss Performance and Scalability, their differences and relation if any. Performance – Performance is all about optimizing Continue Reading

Event Sourcing – Does it make sense for your business?

Reading Time: 5 minutes You would always get a ton of literature on Event Sourcing and CQRS. The key question is WHEN do you use it? Under what circumstances? Is your problem really in need of ES? I would not go into the details of what Event Sourcing and CQRS is. The industry stalwarts have covered that in adequate detail. This post delves into battle-tested scenarios on where we Continue Reading

Rebalancing in Akka Cluster Sharding

Reading Time: 4 minutes In this blog we will be discussing about one of the important feature of Akka Cluster Sharding which is Rebalancing. Before moving forward make sure you have some basic knowledge on Akka Cluster Sharding, if not then please read Introduction to Akka Cluster Sharding and Implementing Akka Cluster Sharding. Before directly diving into this amazing feature which akka sharding provides, lets first understand the need Continue Reading

Learning about Reactive Messaging Patterns

Reading Time: 4 minutes Overview According to the Reactive Manifesto, a critical element in any Reactive system is that it is message-driven. But what does it mean to be message-driven? Message-driven systems are those that communicate primarily through asynchronous and non-blocking messages. Messages enable us to build systems that are both resilient, and elastic, and therefore responsive under a variety of situations. Message Driven Architecture We have various ways Continue Reading

Building Scalable Systems

Reading Time: 7 minutes Building a Reactive System is all about the balance between consistency and availability and the consequences of picking one over the other. This article mainly focuses on consistency and availability and how they impact the scalability of a system. What is Scalability, Consistency and Availability? A system is scalable if it can meet the increase in demand while remaining responsive.It is consistent if all the Continue Reading

Diving Into Reactive Microservices

Reading Time: 4 minutes What Happens When Reactive Meets Microservices? It would be beneficial if you understand the concepts of Reactive Architecture before diving into Reactive Microservices. You can read about Reactive Architecture here: Leaning Towards Reactive Architecture In this article we will cover transition from Monoliths to Service Oriented Architecture to Reactive Microservices by applying isolation techniques to the application. What are Monoliths? To start explaining the microservices Continue Reading

Message Driven Architecture

Reading Time: 2 minutes Here we will discuss the different types of messaging patterns used in Reactive Architecture. Evolution of Communication Since the real world is a perfect example of the natural distributed system, we can learn from it and apply its principles to build Reactive Systems. In the real world face to face conversation is synchronous communication. Over time letters have been introduced in the real world and Continue Reading

Leaning Towards Reactive Architecture

Reading Time: 3 minutes Why Reactive Architecture? Reactive Architecture aims to provide software that remains responsive in all situations. Reactive Systems build user confidence by ensuring that the application is available whenever the users need it in all conditions. What is the Goal of Reactive Architecture? Be responsive to interactions with its users Handle failure and remain available during outages Strive under varying load conditions Be able to send, Continue Reading