Architecting Solutions For Cloud 3.0
Cloud 3.0 is a tall order vision which all major cloud vendors are chasing. A vision where the entire datacenter is made available as an appliance to the developer community so that they can focus on business code and commute requirements without worrying about the underline network and infrastructure setup. I have written a brief blog post on Cloud 3.0 which is available at ‘What is Cloud 3.0?’.
Cloud 2.0 is where the goal of cloud adoption was to take advantage of on-demand and therefore elastic computing and storage resources. It was not an architectural shift rather it was an effort to optimize operation burden and in some cases save the cost of running the existing architecture. A general cloud 2.0 architecture would include webserver, application server, database, load balancer and firewall which is almost identical to an on-premise deployment system architecture. The goal of cloud 3.0 is not an incremental shift but to provide a fundamental shift from virtual machines (VMs) to applications/ commute, disks to a more abstract definition of storage, load balancer to SLAs, boxes to policies and data processing to intelligence using tools like artificial intelligence and machine learning.
Cloud 3.0 has not arrived yet, it is a work in progress. What we currently have available are PaaS services, containers, and artificial intelligence/machine learning/cognitive toolsets. On cloud 2.0, logging, monitoring, load balancing and a few administrative services like database backup are available as PaaS services. Still, the deployment and configuration are done manually. Using containers change the runtime environment from fit purpose deployment server to a general purpose container engine with container management environment. It
helps in increasing the density of the each VMs allowing the VMs to run a variety of components. This capability allows the architecture benefit of decomposing the system down into small chunks and safely deploy them independently of each other. These chunks are owned by different teams and they don’t need to know the end-to-end system architecture and its dependencies supporting agility.
" Cloud 3.0 is not merely a technical jargon, it has already started to make a shift in SaaS businesses and also in enterprises"
Distributed components need to interact with each other. Cloud provides a general purpose even and event streaming services which components can leverage to publish and subscribe to messages. Most cloud vendors also provide managed messages. Most cloud vendors also provide managed clusters for ETL and big data processing (batch and stream). With these capabilities available, we can now think of a system as a state machine and model the states and state transition. We model the state as event topic and state transition as subscriber to the topic. The subscriber could be running in the container or as a cloud function. The system code is spread across the state transition processes which are much smaller than the traditional application server components. In this architecture, the role of the database changes from the canonical data store to be a cache used by REST APIs.
This cache is updated by the subscribers. Since the role of the database is limited to a micro-service unit we don’t need a relational model and can work with a NoSQL database. The events can also be stored in an immutable cloud storage for audit and analysis purpose.
Most of the solution that we have been building tend to fall around either transactional or data heavy and they have been architected differently. In cloud 3.0 both these architecture converge. Along with container, event engine, cloud vendors also provide big data tools including both batch & stream processing and machine learning tools. Data coming from the stream or event stream goes into the cloud storage on which next level to streaming and batch analytics job can be run using big data tools. Now, the data residing in the cloud storage can be used for prediction using machine learning tools. Many machine learning tools are available as open source like Tenser Flow, Keras, Theano, PyTorch and so on. These tools sets along with cloud vendor developed proprietary services along with models (speech, text, image etc.) are available on a cloud platform as service or in the marketplace.
This is just one of the architectural approach to leverage cloud 3.0 platform, many different approaches can be developed based on use cases. Cloud 3.0 is not merely a technical jargon, it has already started to make a shift in SaaS businesses and also in enterprises. Chintan Mehta from iSpirt has written about this shift in his post ‘SaaSy bear SaaSy bear what do you see?’ in which he has focused on ML, platform, and partnership approaches. Cloud 3.0 is not an incremental improvement in the sense of cost, scale and speed, it's about being able to deliver completely new types of computing capabilities powered by a new type of architecture.