Modular Monolith vs Upfront Microservices

Not all monoliths are bad. The above picture is from a trip I took to the Monolith Temples in Mahabalipuram, India. But how does this relate to software engineering?

Finding (micro)service boundaries is a challenge and become relatively easy as we learn more about the business domain. So, we wanted to try a modular monolith (modules within the microservice) approach.

As the module matures and we see it becoming the first-class microservice, we can take it out of the modular monolith very easily and with fewer efforts as the module is developed as a first-class concept with loose coupling with other modules.

Why Transition From Monolith to Microservices?

Microservices architecture is a way of creating applications through loosely coupling services. Every service represents a system component that can be created and maintained separately, executing an independent business goal. In this article, we’ll discuss why you should transition from monolith to microservices.

Monolith Architecture

The traditional application architecture is monolithic. The monolithic approach means creating the application as a single unit that contains all the functional components, including database operations, business logic, background processing, etc. They are all deployed together at the same time and running on the same servers.

Five Questions Everyone is Asking About Microservices (Part 2)

When discussing the development impact on existing applications while transitioning to microservices, there are five questions that keep popping up in one form or another. They are the same regardless of the size of the organization and seem to become part of strategy discussions later in the process as organizations move towards microservice architectures.

These articles cover questions that everyone should ask about microservices. They're based on experiences from interactions with organizations in the process of conquering microservices for existing development and for delivering modern applications.

Five Questions Everyone Is Asking About Microservices (Part 1)

One of the joys of my role is that I’m often talking to customers (or potential customers) about their concerns, their plans, and their strategies for moving their business forward based on open source technologies.

When discussing the application development impact on existing developed applications and transitioning to microservices there are five questions that keep popping up in one form or another. They are the same regardless of the size of the organization and seem to become part of strategy discussions later in the process as organizations move towards microservice architectures.

Break a Monolith to Microservices — 12 Best Practices and Design Principles

There was once a time when applications were traditionally developed as monoliths, being packaged into a bundle of code and deployed as a single unit; however, the complexity of sustaining a monolithic architecture coupled with product complexity and lack of speed to evolve has led to enterprises seeking new alternatives to sustainability, flexibility, and ease of integration.

While breaking a monolith and switching to microservice architecture seems easy, many enterprises tend to underestimate the overall complexity of the initiative and make catastrophic mistakes.

Microservices and the Saga Pattern, Part 2

Welcome back! If you missed Part 1, you can check it out here.

I hope that by now you are pretty much clear about what a microservice is and have started analyzing the strengths and weaknesses of it. I tried to keep it simple by giving just an overview of what a microservice should look like, but there’s a lot more to it that I won’t be covering in this series. Though I would like to mention a key difference between microservices and SOA (Service Oriented Architecture). Yes, the two are not the same and that is because SOA does not talk about the service deployment and it is the reason that when we build a system using SOA we end up building it in a monolithic style, where all the services are deployed altogether as one application. On the other hand, microservices are a subset of SOA, but they require that each of the services is independently deployed, meaning that they can be put on many different machines and any number of copies of the individual services could be deployed.