How to Organize Clean Architecture to Modular Patterns ??
Hedra adel
Project Manager Team Lead @ B1 | Expert in Full Software Development Lifecycle & Web Hosting
Part 1
*************
Introduction
In term of software development, the architecture of project is really important for the sake of maintenance and re-usability during many projects that I have worked. The software architecture ensures that the software that you build has a basis of the skeleton. It just likes the mainframe or the background of a house. Upon on that, we have a freedom to build anything we want.
The question always in my head these days is how can we combine Clean Architecture and Modular pattern? I have done some of the experiments in the code, and finally, I decided to write it out in this article. The purpose is really straightforward for sharing what I have learned, and learn more what I get from feedbacks. This article is based on my experience in software development and how the modular approach gives the benefits and applies Clean Architecture concept on it.
*******************
Modular patterns
*******************
I am not going to talk too much about the theory because I want to focus on the implementation of it. What I want to say is all about the experience that I have work on this kind of architecture and patterns. The modular approach for the architecture is also a topic that we have talked a lot in our company. Back to 5 years ago, I worked on the big project that has a lot of people involved, and in that time, we had organized the architecture to the modular approach. And by the time, we know that with the modular we can cut the large monolith software into many vertical smaller monoliths and make the team works more easily because each team only needs to focus on the module that they work. Could anyone remember about the conflicted code in the big project? Could you spend the half of day (or more) just to merge the codes? It is really a nightmare, isn’t it?
So in the modular approach, we need to make sure that the modules should be independent enough so that it can be work by the sole developers in different teams. It should be in logical design style and gives us strong points as
- Help our software system is able to extensible, reusable, maintainable, and adaptable.
- Break large monolith stack into a flexible composite of collaborating modules (in monolith style).
- Help newcomers to easy to understand the business features and the functionalities of the system(because it is small enough)
- Open the door to migrate into the microservices architecture (if need, but it is not easy to adopt it from my point of view)
End of Part 1
#Information_every_day