Skip to main content

Posts

Showing posts from June, 2017

Part 2 - Overengineering of a cloud application

In the last post we looked over a cloud solution design to ingest small CSV files uploaded by users. This files were crunched by the system that would generate static reports based on the content. Nothing fancy or complex.
The NFR requirements are light, because the real business value stays in the generated reports:

Under 200 users worldwide Concurrency level is 10% (20 users online simultan) Less than 15 CSV uploaded in total per day Basic reporting functionality Current DB size 150MB (2M reporting entries) DB forecast for next 3 years is 1GB (20-25M reporting entries) CSV has up to 1000 entries (maximum 10 columns) The system that was design for this application was a state of the art system - salable, robust, containing all the current technology trends. But of course was over engineering, to powerful and to expensive. Now, the biggest concern was how we can reduce the running cost of the system with a minimal impact (development cost). One of the drivers was that we had to come up…

Part 1 - Overengineering of a cloud application

N-tier architecture is seen nowadays as an old. People tends to migrate to event-base or microservice architecture. It's very common to see people that decide an architecture based on the market trends, ignoring the requirements, business needs and budget.

When you combine this with Azure (cloud in general) you will end up easily with a microservice architecture that combines messaging systems and event-driven architectures. Of course, N-tier application has a lot of disadvantages, but when you have a simple web application, there is no sense to create a complex unicorn that will survive for 100 years.

I was shocked to review a solution that was deployed in Azure 2 months ago, that from architures point of view was beautiful, but from the running and development costs become a nightmare.
I will not go in details of the business requirements, but imagine a system that needs to display some static information, allow users to upload small CSV files that are consolidated in a reportin…