Saturday, April 7, 2018

Dumb Clients and Smart Cloud ? 
 
 
Introduction:   
As cloud computing becomes ubiquitous, compute and storage has become elastic for backend processing which facilitates moving much of the logic away from applications and mobile clients. This writeup challenges the notion whether clients want to retain any logic on their end. 
Description: 
Software evolved to become a service and offered via browsers in software-as-a-service (SaaS) model. At the same time serverless computing and containerization technology has evolved. While the SaaS has been powered by a single service usually a monolith sitting somewhere in an enterprise, its migration to the cloud was somewhat straightforward. Take the service that powers the SaaS and move it to the cloud.  
There were two problems with these. Changes to the service needlessly impacted the rest of the functionality from the software. At the same time front-end evolved to using more and more services so it became fatter and fatter.  
Neither of these two technologies have taken advantage of modular deep allocation of resources in the form of containers, services and even serverless computing. The idea behind serverless computing is that a modular chunk of code can spin up on demand resources for its exection without affecting any of the existing production support requirements. If the mashup of the services and the portal could be achieved in the backend and the applications or clients consuming the services were merely using native software development kits or a browser enabled markup, stylesheet and script combination, then they could be leaner, meaner and more efficient in their processing.  
The benefit of using a homogeneous and thin application / client is that it does not need to do any processing on its end and can merely treat the data from operation done via services as viewmodels. These viewmodels are sufficient for the front-end be it an application or client. 
Success with the Model-View-Controller pattern was widely acknowledged to have separated their respective concerns. Here we are separating services into fanned out serverless compute that can be brought together at the backend before sending the associated viewmodel to the frontend for rendering. 
The notion of service and resources is never lost. Similarly there seems no loss of fidelity in using a thin overall mashup of services or serverless computing as long as it is done on the backend so that there is only one set of endpoints for the application / client to talk to and anything behind that is entirely at the discretion of the provider. Internal services can be upgraded to serverless computing without any change on the front-end and therefore prepare a path for migration. 
Conclusion:  
Newer applications have embraced webAPI frameworks but these same frameworks could not facilitate a newer organization that enforces thinner simpler clients and applications with consistency. 

No comments:

Post a Comment