Cloud computing continues to advance but to chart its future development it is important cot consider how the technology got here. Cloud computing has a rich history that extends back to the 1960s. Latterly, challenges have arisen in terms of scalability, data security and privacy.
To gain an insight, Digital Journal spoke with Jonathan Oliver, Founder, CEO & CTO of Smarty, who explains the history, flexibility, and growth of cloud computing.
Digital Journal: What is the origin of cloud computing?
Jonathan Oliver: In the early 1960’s it was almost universal that software was designed and written to run on a very specific piece of hardware, e.g. the IBM 1401 or the DEC PDP-7. In the late 1960’s and early 1970’s, a new language was conceived called “C.” This language was expressly designed to abstract away the underlying hardware and processor details while still maintaining full capabilities of the underlying hardware. All modern computing systems still utilize these very same abstractions offered by C as put forth nearly 50 years ago.
DJ: How does introducing abstractions over cloud services enhance software portability and enable the utilization of hyperscale cloud providers?
Oliver: By introducing abstractions over cloud services, for example cloud “blob” or “object” storage, the software itself becomes portable and allows for pluggable implementations to take advantage of hyperscale cloud providers or other vendors alike. Let’s consider cloud storage in more detail: All hyperscale cloud providers offer some form of object storage wherein many terabytes or even petabytes of objects might be stored. The problem is that if the main business logic within the software depends upon the particulars of the cloud provider service, you will be unable to take advantage of other offers from other providers as they become available.
DJ: How does designing a software system with general abstractions for cloud storage enable flexibility?
Oliver: Continuing the cloud storage example, in recent years, a number of alternative vendors have come to the forefront offering storage solutions. If your implementation was specific to Microsoft Azure Blob Storage or Google Cloud Storage, you would be unable to leverage offers from BackBlaze or Cloudflare (to name a few). Further, if you wanted to take advantage of NFS, SMB, or other traditional storage solutions, the software would have to be heavily modified accordingly.
By designing a simple set of general abstractions from the outset (or as part of a general restructuring of code), the main business logic in code can be insulated from the particulars of the underlying storage technology. This abstraction would then have as many provider-specific implementations to suit the organization’s purposes, for example AWS S3, Google Cloud Storage, Azure Blob Storage, and so forth. Then, when the application has a need for object storage, it doesn’t know or care about which storage engine is providing the capabilities and the underlying storage could be swapped without any application changes.
DJ: What is one technology in cloud computing that’s grown in recent years; how does it work?
Oliver: One software technology coming to the forefront in recent years is an “orchestration engine” known as Kubernetes. While this software itself is designed more around scheduling of and running software, it has the nice side effect of allowing better cloud portability. The main application software is wrapped in a given manifest file which describes or declares the desired state and is then submitted to the Kubernetes orchestration engine for execution. Kubernetes then communicates with the underlying cloud provider to provision the necessary compute, network, and storage resources to achieve the desired state.
All major hyperscale cloud providers offer support for Kubernetes and now numerous additional cloud providers including DigitalOcean, Linode/Akamai, Vultr, UpCloud, Hetzner, and OVH have either full support or community support for Kubenetes running on their infrastructure.
DJ: What are the benefits of Kubernetes?
Oliver: Using Kubernetes (or a similar control plane like Hashicorp Nomad) allows organizations to best determine which workloads should operate in specific facilities to achieve the appropriate balance of cost efficiency, latency, and security. In other words, portions of an organization’s workload could execute or operate on AWS while other portions could operate on Microsoft Azure while additional workloads could execute on DigitalOcean based upon the cost, latency, or other trade-offs.