Prelude
First of all, let’s break down what monolithic and microservices are: a monolithic application is built as a single unit, while microservices architecture is a collection of smaller, independently deployable services.
We could simply consider them as simple as that, but we’ll dive deeper to discover the origins of these types of architecture so we’ll be able to define which one suits us the most.
Monolithic architecture
This architecture is a traditional way of modeling a software, where all components of the application are interConnected and interdependent, in this architecture, the application is built as a single unit where all its functionalities are in one code base, we conclude that the large and complex the application becomes the harder it is to control and in terms of scalability this gets harder also because simply we are replicating the entire application .
A typical Monolithic .Net app might be a single ASP.NET core web app that include the basic layers as data access , business logic in one project. For example lets take a Movies recommendation app structure :
MoviesRecommendationApp/
Controllers/
Models/
Services/
View/
Data/
Program.cs
As mentioned earlier monolithic app gets hard to control when the project gets larger and complex ,in this context Microservices where introduced. In 2005 during a Web Services Edge conference Peter Rodgers introduced in his presentation the term “Micro Web services” against conventional thinking.
Among the biggest transitions we can site NETFLIX‘s journey from a monolithic DVD rental service to a microservices based streaming giant , on 2009 Netflix started their monolithic and they completed their transition around 2016.This allowed them to scale rapidly and they became a huge platform handling millions of streams.
Microservices
In .Net applications microservices can be a good choice in terms of flexibility , you get to choose the most suitable .Net frame work for each microservices ( .Net core , .Net5) and focused services are easier to understand, debug, and maintain compared to monolithic .
To prevent cascading problems you might want to use libraries like ‘Polly’ in which circuit breaker patterns are implemented, to provide tracing and logging applications insights are a must .As microservices grow in complexity ,Domain-driven-design principles are also applied to maintain clear boundaries and make sure each service aligns with specific business logic, in other words , this means that each microservice has its own domain model to ensure its maintainability and scalability .
Meme season
After microservices became a decent technique, some developers don’t use it wisely, they implement microservices arcs in projects that are clearly monolithic in type and by doing so, they start promoting their projects as a well-structured, advanced application just to increase the cost for their customers, it’s like killing a bug with a bazooka.
Making the decision
Making the right decision can be crucial sometimes ,It would help you gain time and lower your costs ,So if you’ve got a small team working on a straightforward app that’s not likely to blow up in complexity, sticking with a monolith might be your best choice . It’s simpler to develop, deploy, and manage when you’ve just started. Overall ,if you’re looking at a complex system that’s gonna grow like crazy, or you need different parts of your app to scale independently, that’s where microservices start to glow .Anything else monolithic structure is your best choice .
Top comments (0)