Exploring the API-First Design Pattern

From a career perspective, the two things I appreciate the most are solving problems through technology and creating technical publications. The former often drives the latter: results presented in inspired-based publications are derived from a recent problem that I had successfully solved.

Along my three-decade journey, I also discovered that I enjoy making lists. Early in my career, I used quad-ruled notebooks to establish lists to work from daily.

Java Template Method Pattern in 3 Minutes [Video]

The template method pattern is a behavioral design pattern in GoF's design pattern. In my opinion, it is fundamental and worth knowing and learning. It opens up our eyes to many of the usual ways of object-oriented design. 

In this pattern, the father class (the abstract superclass) defines the skeleton/algorithm of an operation in terms of a number of high-level steps. The detailed steps are to be implemented by the sons (the subclasses).

Self-Hosted Gateway Design Patterns Discussion

Microsoft Azure provides the default API management platform tool call API Management, which provides rich features to manage and monitor APIs in the Azure environment. However, for the hybrid on-prem/off-prem cloud environment and multi-cloud environment, the organization may want to simplify the API communication to make it more efficient, flexible on executing external workflow, or plugin a security module to manage APIs hosted on-premises or across clouds. 

The self-hosted gateway feature extended from Azure API Management enables those hybrid and multi-cloud API management requirements and allows the organization to customize the API implementation, integration, communication, routing management, monitoring, traffic, and security controls in the cloud environment.  It supports APIs hosted in either on-prem or off-prem across different cloud instances.

Singleton Design Pattern

Design patterns are important as they help us solve general problems with software that people face during development. These patterns help us make code maintainable, extensible, and loosely coupled. One such design pattern is the Singleton Design pattern.

In simple terms, Singleton is a class that allows us only to create a single instance of it. It makes it impossible for us to instantiate the class for the second time.

Event Sourcing on Azure

Hi All! With this post, we’ll start a new Series about Event Sourcing on Azure. We’re going to talk a bit about the pattern, general architecture, and the individual building blocks. Then in the next posts, we’ll dig more and see each one in detail.

If you’re a regular reader of this blog, you might know that I wrote already about Event Sourcing in the past. It’s a complex pattern, probably one of the most complex to get right. I enjoy the challenges it gives and how it causes a whole plethora of other patterns to be evaluated in conjunction (CQRS anyone?).

Resilient Microservice Design – Bulkhead Pattern

Need For Resiliency:

MicroServices are distributed in nature. It has more components and moving parts. In the distributed architecture, dealing with any unexpected failure is one of the biggest challenges to solve. It could be a hardware failure, network failure, etc. The ability of the system to recover from the failure and remain functional makes the system more resilient. It also avoids any cascading failures.

Why Bulkhead?

A ship is split into small multiple compartments using Bulkheads. Bulkheads are used to seal parts of the ship to prevent the entire ship from sinking in case of a flood. Similarly, failures should be expected when we design software. The application should be split into multiple components and resources should be isolated in such a way that failure of one component is not affecting the other.

Reactive Vue 3 State

Introduction

There's been a lot of discussion about state management in the upcoming Vue 3 framework. Some writers go as far as declaring Vuex dead. Reactivity is all we need, is the claim. Just like blockchain was supposed to cure all problems of modern civilization ;-) Jokes aside, it does look like an intriguing possibility, so we've taken a challenge and explored it in this article.

TL;DR

Vue 3 Reactivity System, now free of UI confines, can be efficiently employed as a powerful tool to handle state. This requires extra plumbing though, with no batteries included. If you want to get straight to technical details, scroll down to Reactive proposal for application state chapter below.

Dependency Inversion Principle in C++: SOLID as a Rock

Dependency Inversion Principle(in C++) is the fifth and last design principle of a series SOLID as a Rock design principles. The SOLID design principles focus on developing software that is easy to maintainable, reusable, and extendable. In this article, we will see an example code with the flow and correct it with help of DIP. We will also see guidelines and benefits of DIP at the ens of the article.

By the way, If you haven't gone through my previous articles on design principles, then check out the following quick links:

Interface Segregation Principle | SOLID as a Rock

Interface Segregation Principle in C++ is the fourth & by far the simplest design principle of a series SOLID as a Rock design principles. The SOLID design principles focus on developing software that is easy to maintainable, reusable & extendable. In this article, we will see a code violating ISP, a solution to the same code, guideline & benefits of ISP.

By the way, If you haven't gone through my previous articles on design principles, then below is the quick links:

Rethinking Serverless Architectures With Eventbridge

Here's the context of how the need for AWS Eventbridge came to be.

As the march of technology is never-ending, the only constant we can expect is change. This is especially true considering the strides that serverless has made in the industry, especially with the release of the AWS Lambda back in 2014. Upon its release, AWS Lambda was quick to take front and center position in the FaaS services making up the core of serverless applications. It was rightly heralded as one of the most important releases within the domain. This further lead to an array of best practices dictating how applications were built using FaaS services achieving serverless capabilities. 

You may also enjoy:  Explaining Eventbridge Amidst the Hype

However, as the course of technology meanders in its ongoing path, new innovations are constantly redefining the way we build applications. One such innovative service announced this year was AWS EventBridge, and its release has since caused an uproar in the domain of serverless. Many blogs and posts within the community that followed the announcement characterized it as the most important announcement after the release of AWS Lambda. 

Builder Pattern in Javascript

For those who don't care about code readability: step on a lego

Suppose we go to a store and want to buy a product. Let’s say a PC. We have two options; either buy a ready-made PC of any particular brand, or we customize and assemble it.

In this scenario, we go for the second option — we will collect different parts and construct a new PC.