Blog Article

Waves of Digital/ Cloud-Native Transformations

Monday, 13 July 2020

By Cloudberry360

Waves of Digital/ Cloud-Native Transformations

The evolution of Cloud-native transformations can be best viewed as waves of successive abstractions rather than disconnected islands, with every abstraction developing upon the previous one. Even though these abstractions appear to be radically different from each other, each of them has also undeniably influenced and impacted the successive one. Every abstraction has resulted in a certain style of application design, thereby finding a niche set of applications more suitable for that abstraction. Following diagram captures these waves and shows their respective hype cycles/ hype peaks. One can also notice the increase in the shift towards application logic, away from the underlying infrastructure as the waves progress.

Virtualization

Virtualization-based application design patterns largely followed patterns that were meant for physical servers — relying on highly available/ always available infrastructure, scaling up the infrastructure for heavier workloads, replicating physical network-based isolation in virtual environments, etc. In essence, virtual machines were treated like physical servers (always on) and were expected to behave like physical ones. More often than not, enterprise IT organizations treated virtual machines like physical servers and followed same procedures for their life cycle management they employed for physical servers — for provisioning, installing/ updating operating systems, providing user access, securing through firewalls, network segregation, decommissioning, etc. Virtualization also enabled concepts of snapshots, live migration, backup & recovery, which went on to become core requirements of enterprise IT. Enterprises also standardized the delivery of such resources through processes such as ticketing, centralized control through a dedicated group (frequently referred to as the IT), etc.

Cloud Services

Virtualization, in turn, enabled on-demand delivery of infrastructure resources (compute, storage, and networking) — AWS being the pioneer here, offering such capabilities since more than a decade ago.

In this model — called Infrastructure-as-a-Service (IaaS), one can consume a resource such as a virtual machine, whenever one wanted. Google and Microsoft also pioneered another type of as-a-service delivery — Platform as a Service (PaaS), at a level of abstraction higher than IaaS. In this model, one can directly consume an application environment (say a web server), instead of worrying about the underlying infrastructure (servers)that would power this environment.

These as-a-service delivery mechanisms were broadly classified as ‘Cloud’, key characteristics being (assumption of) infinite capacity, on-demand availability, and elasticity. When such services were offered by a third party provider from a location outside of the customer’s location/ data-centers (off-premises), they were commonly referred to as ‘Public Cloud’ and when they were delivered in-house from inside of the customer’s location/ data-centers (on-premises), ‘Private Cloud’.

These as-a-service delivery models enabled new consumption patterns — self-service/on-demand provisioning, against what has then become a common practice among enterprises — ticketing based, centrally controlled provisioning. Such as-a-service offerings changed the discussions from CapEx to OpEx.

Containerization

A container (Linux or Windows) is an isolated, self-contained run-time environment which runs as a process on a host machine or virtual machine. A container contains necessary and sufficient dependencies and configuration files in order for an application to run. A container behaves just like a virtual machine in the sense that it appears to be a complete system, without the need for an entire operating system. Since a container doesn’t need the entire operating system, it operates much faster than a virtual machine.

Linux Container technology has been around for a decade now, but Docker Inc enabled packaging of the dependencies and configuration files more efficiently than ever before through ‘Docker Containers’. Such efficient packaging mechanism enabled developers to develop, deploy, and scale applications faster. This ease of use and efficiency captured the imagination of developers unlike ever before, so much that ‘Docker’ soon became synonymous with ‘Containers’.

Leave a Reply

Your email address will not be published.

SEND YOUR QUERIES

Want to start a conversation?