Database Sharding

As an application or website gains traction and attracts a significant number of users, it inevitably reaches a point where scaling becomes imperative. The ability to accommodate the surge in visitors is vital for data-driven applications and websites, and it is equally crucial to uphold the security and integrity of the stored data. Given the […]

CAP Theorem

We’d all like to have everything, but we know that’s not possible. We even have mathematical proof that tells us we can’t do this with distributed systems like the ones we build with microservice designs. You’ve probably heard of the CAP theorem, especially when people talk about the pros and cons of different ways to […]

gRPC Demystified – Protocol Buffers

The “I couldn’t care less” attitude toward bandwidth is one of the most serious concerns with REST/JSON microservice architectures. The entire JSON message is sent between clients and servers in plain text, and its payload becomes repetitive and sometimes unnecessary. JSON APIs are popular among developers because they are easy to read and debug, and […]

gRPC Demystified – Introduction to gRPC

What is the Client-Server Model In practice, the client-server model is the fundamental operating principle of all data centers, including the cloud. The term “client server model” simply refers to a strategy in which not all required applications and files are installed directly on an endpoint. Instead, some or all of these files or apps […]

Fallacies of Distributed Systems

The network is reliable. Before we talk about this first fallacy, let’s quickly look at what reliability means. The degree to which a product or service conforms to its specifications when in use, even when it fails, is defined as reliability. Thus, reliability can be defined as the quality of uptime, that is, the assurance […]

Monolithic Architecture

Building a monolith has always been the default Architectural Style. In the very beginning, there were single-file applications. Then we started having applications with several files. And after that, we began seeing applications composed of other applications. But first, what is a monolith? A monolithic application is a unified unit, self-contained and independent from other […]

Premises of Software Architecture

This post is the first of a series of posts around Software Architecture. In this series we are going to discuss what is Software Architecture, see different architectures and end up on Domain Driven Development and Microservices Architecture. In this first post, we will try and have a common understanding of terminology, establish the very […]