Being an Architect over last 18+ years, I revisited myself to understand how my thought process started adapting to the new technology trends. During end of last century and early part of this century my attitude was always giving pragmatic effort towards designing thin client applications and treating server as a giant to handle complete responsibility. Those were monolithic architectures. During architecture phase, I was not really worrying about hosting environment, except designing software for clustered environment and for shared data requirements.
Later, popularity of Ajax introduced minor changes in the architecture. This impact was in terms of thin clients becoming little smart to improve user experience. But architects did not face new challenges to design server side applications. More or less same monolithic servers continued. More than 10 to 15 years, hosting vendors did not contribute many changes except introducing VMs and shared environments. Architects always gave importance towards - data caching, minimizing database calls, and optimizing connection pool and few more.
Last 3 to 5 years period was a major break through in the software architectures. Business coined concepts like ‘Pay Per Use’, ‘On Demand Services', etc. These business attractions are derived based on the maturity of Cloud hosting. In fact big players like Microsoft, Amazon, Google are competing to get dominance in Cloud business.
So, today’s architectures have to be convincingly answer following questions
Q1. Is maturity of the Cloud impacting on the software architecture?
Q2. Is there a serious thought process change required while designing client and server side applications?
In fact ‘Yes’ is the answer for both questions. Let us deep dive in to the first one. As mentioned earlier in this article, architects were not paying much importance to the Infrastructure side. Today it is very essential to master cloud concepts before designing software architectures. Let us analyze how business concepts like “Pay Per Usage” matters to server side application architecture. When an application client request reaches server, it has to be served faster so that processor allotted to request has be freed as fast as possible. Minimizing processing time reduces Usage meter in turn bill from infrastructure vendor. In fact this is one generic example, but when we understand this carefully, application server side architecture has to be designed with small and not long live functional services. Here where we are getting in to analyze question 2.
Just like earlier approach, architects cannot treat server side application as a monolithic structure. Rather, visualize server is a pool of “Micro services”. Cloud concepts are also encouraging to design “State less Services” or some thing called “Server-less architecture”.
In addition, client side designs do not have to be factored for thin or semi-smart clients. With the maturity of technologies like Angular, React, Flutter and few more, architects should be mastered in wisely distributing application load towards client side too. Of course this approach would also boost greater user experience, better location based application behavior, native intelligence etc.
All these years we have mastered monolithic architectures. But new challenges have popped-up to design new generation applications for Cloud using advanced frameworks, new best practices and new architecture/design patterns
In summary, to be part of current trends, architects might need to unlearn few things and institutionalize new bread of technologies.
Shiva, Chief Architect,
systemWorks consulting services(systemworks.in)
Comments
Post a Comment