Building enterprise applications often comes with downsides such as misuse of architectural design patterns, low maintainability and almost impossible scalability of the applications.