• Architectural Design Patterns - Design Patterns - Software Architecture

    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.…

  • Architectural Design Patterns - Design Patterns - Software Architecture

    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…

  • Azure - Cloud Computing

    On Azure Functions and Serverless

    There’s no shortage of tools and technologies to make developers’ lives easier In the world of cloud computing, and one such offering comes from Microsoft which is Azure Functions. Here, we’ll unravel the magic behind Azure Functions and explore why it’s becoming a favourite for certain architectures. At its core, Azure Functions is a serverless compute service. “Serverless” might sound misleading, as there definitely are servers involved; however, the idea is that the responsibility of server management, scaling, and infrastructure concerns are taken away from the developer. This allows us to focus on writing and deploying our code. Azure Functions…

  • Introduction to Programming - Software Architecture - Software Engineering

    SOLID Principles: The Basics of Good Software Design

    Even though my purpose is publishing ever green content in this blog, it is not easy to write about such a broader topic. Due to my recent interview process, I have been exposed to this topic since it is being asked again and again. Maybe, I should give the link to this article before the interview and skip to the next question straight away. Anyway, lets dive into the topic. There are certain foundational concepts about software engineering guiding developers in writing efficient, maintainable, and scalable code and the SOLID principles is at the top of the list. The word…

  • Architectural Design Patterns - Design Patterns - Software Architecture

    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…

  • Architectural Design Patterns - Design Patterns - Software Architecture

    Architectural Design Patterns 5 – Monolithic

    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 to the final product, is handled under one roof. This design pattern was especially popular when software applications weren’t as complex as they are today. Its straightforward nature makes it a solid choice for simpler applications. Everything is in one place, making it easy to develop, test, and deploy. You don’t have to juggle…

  • Amazon Web Services - Architectural Design Patterns - Azure - Design Patterns - Software Architecture

    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,…

  • Architectural Design Patterns - Containerization - Design Patterns - Software Architecture

    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…

  • Architectural Design Patterns - Design Patterns - Software Architecture

    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…

  • Architectural Design Patterns - Coding - Design Patterns - Software Architecture

    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’s the Layered Pattern? Imagine a cake with several layers.…