Technology has bloomed like a flower in the last few years. In the mainframe days, when there were standard architectures that were driven by few vendors and were managed by the handful of people. This left the developers with few choices for infrastructure and programming languages. When we moved to the client-server era, infrastructure configuration became compelling and many organizations opted for three-tier architecture. This gave the developers with a choice of an array of programming languages and each layer of the architecture (web, application, database, middleware etc.) had various specialists. This resulted in increased complexity in tradeoffs. They now had flexibility in the nature of applications that they could build. They could now build and deliver the software at a lower cost and with more velocity. This had one disadvantage too, managing these n – tier architecture had more operational costs and needed a diverse set of skills to support various layers.
As there has been an increase in the adoption of the cloud, there has been an all-time high in the complexity and the tradeoffs have been really intense. This in return has given us unbelievable solutions at a large scale. Our infrastructure components and software are automated and everything is available online all the time.