All these scenarios can indicate you have a monolithic application. Yuck. Now what?
You’re stuck in that endless consideration to blow it up and start over somehow, spend a lot per tweak, or live with its current state, none of which are enjoyable processes for you to consider. At some point, the application becomes a legacy application you no longer upgrade, limiting your users to the feature set it contains, or spend a lot more than you want to keep evolving it for them. Unpleasant options all.
In a nutshell, the same characteristics that make a mountain so intimidating are the same reasons a big, monolithic application is painful.
How’d we get here?
Let’s time warp back to CS101 – Principles of Software Engineering with Dr. Brown-Jacket-With-Patches at State U. They taught you that tightly coupled designs were not as good as loosely coupled designs. What happened? You traded loosely coupled design and its long-term benefits for some short term business value.
Maybe you needed that app TOMORROW. Maybe you had staff with limited experience. Maybe you rushed it through production. Or maybe it was death by a thousand paper cuts over time – enhancement by enhancement.
“This is just for a few months” turned into business critical and it is still around, years later. Maybe the system designer wasn’t the best choice for the job. Whoops! Should have hired that consultant. It’s ok, we’ve all been there.
This all sounds familiar
Regardless of the ‘how’, you’ve ended up with a ginormous mass of tightly-coupled components over time.
Years ago, loosely coupled designs were accomplished by building more modular, reusable components – like functions or classes in object-oriented programming languages and platforms in the late 90s.
Maybe you encapsulated some business logic in a COM component referenced by ASP pages.
Then, things gravitated to more segmented, decoupled components like XML web services wrapping reusable logic called from frameworks that focused on messaging or user interfaces.
We all did the best we could with the tools we had.
A modern approach – a true advantage
Today, we have modern cloud platforms that allow more decoupling than ever – web API endpoints, AWS Lambda, Azure Functions – we even have serverless systems.
These modern platforms enable your business to have greater agility, flexibility, and speed – the real value of the cloud.