Brainstorming your way from a Monolith to a Clean Architecture by Victor Rentea
Did you ever wanted to (re)write your enterprise application from scratch? I’m sure you did ! And I’m pretty sure the rewritten codebase would be two times smaller than it is right now. But, given the time and budget for a rewrite, what would you do to keep it from becoming “legacy” again in 2 years? Ok, Let's face it! Your boss won’t approve a rewrite! But still, what should you aim for with your continuous refactorings and clean-ups?
Let me share with you what I believe to be the ideal mindset about an enterprise application: Pragmatic, Clean Evolutionary Architecture. Pragmatic = Keep It Short & Simple; Clean = The Onion Architecture (Dependency Inversion Principle); Evolutionary = Continuously redesign.
The discussion will conceptually start from a simplistic one-class system and grow the architecture with additional patterns, justifying any added complexity with fundamental principles of good design + lots of explanations. This way, adding constructs as we go, we’ll end up very close to a minimalist architecture that we actually use today in our projects today.
Even though the talk is mostly about architecture, you’ll see lots of code examples that support my decisions.