Yes, it was a close encounter of a different kind. A client posed some interesting questions for us:
- Can we scale our application with ease as per user demand – Scale up only for the modules used in the application?
- Can we add/change features to specific parts of Application without impacting the rest?
- How can we accelerate this to beat the competition?
- How can I isolate likely failure of a single module not to impact the whole application?
- Are Microservices design and Dockerising the environment viable approaches?
I would like to reveal that I personally experienced many of these benefits. Let me get to the point straight. Recently I got an opportunity to work for a client who is offering IoT based product. They built their product just about 2 years before Docker was introduced and microservice-based architecture was not that popular by then.
It was 3 tier application, built on a J2EE platform. Obviously, the application was built in a monolithic architecture running the data collector, streaming, stateful rule engine, ticketing, manual data entry module and reporting modules in a single big mono server. In the initial years, there were no problems in delivering the product on a small scale within single geography to fewer than 20 enterprises.
Fortunately or otherwise, the product was selling like a hot cake in the market, even the little effort on marketing brought them dozen of clients which means the application was to scale. Oh, I forgot to mention that the product is hosted on AWS, which means there were no issues in scaling to meet the spikes in consumption, except for a few items.
- The scaling was happening at VM level instead of process level which meant their AWS cost was coming around $68K every month just for servicing 37 clients with 15 users each on average.
- The application was frequently going down owing to their flaky upgrades to reporting module alone which was in response to huge customer demands and pressure.
This kept their CEO up in night who was grappling with a “good to have” problem of raising customer base and “not good to have” problem of raising operating cost despite hosting the service on AWS, the market leader in a public cloud platform.
You guessed it right! He heard about us and reached us out through his friends of friends contact. This got us the opportunity to serve them with our Application Center of excellence capabilities in microservices, Dockerization and UX modernization.
Long story short, our solution was to redesign the application in a microservices architecture. We then containerized the application and orchestrated the application using K8s.
They started reaping the benefit within a month of going live on production. Their AWS billing came down to $12K a month for 48 clients with 22 users each on average which was a 30% increase in their load.
Better yet, after becoming modular they came over their long nagging problem of rationalizing their product service portfolio. Since each service was loosely coupled, they spun off their individual services like ticketing, manual data entry, automating state classification and started offering their product in bundles of basic, enterprise and factory models of licensing. This is how I realized the benefits of modernizing a monolithic application practically.
Narayanan V S- Solution Engineering