Monkey Business

I’ve written my first programming language interpreter! Monkey is a programming language described in the excellent books Writing An Interpreter In Go and Writing A Compiler In Go, by Thorsten Ball.

Read more…

Software Architecture - It All Depends

Now that I’ve reviewed some of the key software architectural styles, let’s see a side-by-side comparison of various architectures in terms of the architectural quality attributes:

Read more…

Microservices Architecture

Microservices Architecture is a distributed architecture in which an application is organized into a collection of small, loosely coupled, and independently deployable services. Each microservice is responsible for a specific piece of functionality, operates within its process, and communicates with other microservices using lightweight protocols such as REST, gRPC, or messaging systems.

Read more…

Space Based Architecture

Space-based architecture is a software architecture pattern designed for highly-scalable, distributed systems that can handle large workloads and accommodate varying demand. It relies on the principles of partitioning and replication of data and processing components, allowing for parallelism, fault tolerance, and load balancing across the system.

Read more…

Event Driven Architecture

Event-Driven Architecture (EDA) uses events to trigger and communicate between decoupled nodes (services) within the system. Producers generate initiating events (messages) when a significant change in state occurs. Components within the system subscribe to events and react to them by performing specific actions or tasks.

Read more…

Service Oriented Architecture

Service-Oriented Architecture (SOA), also known as, Service-Based Architecture (SBA), is a distributed architecture pattern in which an application is organized into a collection of loosely coupled, reusable services. Each service is a self-contained unit that performs a specific task or function, and communicates with other services using standard communication protocols, such as REST, SOAP, or gRPC.

Read more…

Pipeline Architecture

A pipeline architecture is a monolithic architecture style, which means a single deployment unit for all of the code. The essential characteristic of pipeline architecture is that data or tasks are processed in a series of stages. Each stage receives the output from the previous stage, processes it, and passes it on to the next stage.

Read more…

Layered Architecture

Layered Architecture is a monolithic architecture style, which means a single deployment unit for all the code. This style is also known as the n-tiered architecture.

Read more…

Collectors in Scheme

Collector functions are a functional way of processing and accumulating collections of data. I recently encountered this pattern while going through the book The Little Schemer. In the discussion of lambdas, there’s a function named multirember&co, which stands for “remove multiple members and collect”. Basically, it removes multiple elements from a list and collects the removed elements."

Read more…

Evaluating Software Architecture Styles

Software architecture is very context-dependent. Factors such as the software application’s goals, the development team’s size and budget, and business needs play a significant role in the choice of software architecture.

Read more…