When we think of the public cloud, often the first consideration that comes to mind is financial: moving workloads from near-capacity data centres to the cloud reduces capital expenditures (CapEx) but increases operating expenditures (OpEx).
That may or may not be attractive to the CFO, but it isn’t exactly catnip for developers, operations, or those who combine the two as devops.
For these people, cloud computing offers many opportunities that simply aren’t available when new software services require the purchase of new server hardware or enterprise software suites. What takes six months to deploy on-premises can sometimes take 10 minutes in the cloud. What requires signatures from three levels of management to create on-premises can be charged to a credit card in the cloud.
It’s not just a matter of time and convenience. The cloud also enables higher velocity for software development, which often leads to lower time to market. The cloud can also allow for more experimentation, which often leads to higher software quality.
In addition, there are real innovations in the cloud that can provide immediate benefits and solve long-standing problems with on-premises computing. Here we present 16 compelling cloud capabilities.
1 - Compute instances on demand
Need a new database on its own on-premises server? Get in line, and prepare to wait for months if not years. If customers can tolerate having an on-prem virtual machine (VM) instead of a physical server and the company uses VMware or similar technologies, the wait might only take weeks.
But if a user wants to create a server instance on a public cloud, they can have it provisioned and running in about 15 minutes – and they’ll be able to size it to their needs, and turn it off when they’re not using it.
2 - Pre-built virtual machine images
Being able to bring up a VM with the operating system of choice is convenient, but then users still need to install and license the applications needed. Being able to bring up a VM with the operating system and applications of choice all ready to run is priceless.
3 - Serverless services
“Serverless” means that a service or piece of code will run on demand for a short time, usually in response to an event, without needing a dedicated VM on which to run. If a service is serverless, then users typically don’t need to worry about the underlying server at all; resources are allocated out of a pool maintained by the cloud provider.
Serverless services, currently available on every major public cloud, typically feature automatic scaling, built-in high availability, and a pay-for-value billing model. If users want a serverless app without being locked into any specific public cloud, they could use a vendor-neutral serverless framework such as Kubeless, which only requires a Kubernetes cluster (which is available as a cloud service; see below).
4 - Containers on demand
A container is a lightweight executable unit of software, much lighter than a VM. A container packages application code and its dependencies, such as libraries. Containers share the host machine’s operating system kernel. Containers can run on Docker Engine or on a Kubernetes service. Running containers on demand has all the advantages of running VMs on demand, with the additional advantages of requiring fewer resources and costing less.
5 - Pre-built container images
A Docker container is an executable instance of a Docker image, which is specified by a Dockerfile. A Dockerfile contains the instructions for building an image, and is often based on another image. For example, an image containing Apache HTTP Server might be based on an Ubuntu image.
Users can find pre-defined Dockerfiles in the Docker registry, and they can also build their own. They can run Docker images in a local installation of Docker, or in any cloud with container support. As with pre-built virtual machine images, a Dockerfile can bring up a full application quickly, but unlike VM images Dockerfiles are vendor-agnostic.
6 - Kubernetes container orchestration
Kubernetes (K8s) is an open source system for automating deployment, scaling, and management of containerised applications. K8s was based on Google’s internal “Borg” technology. K8s clusters consist of a set of worker machines, called nodes, that run containerised applications.
Worker nodes host pods, which contain applications; a control plane manages the worker nodes and pods. K8s runs anywhere and scales without bounds. All major public clouds have K8s services; users can also run K8s on their own development machine.
7 - Auto-scaling servers
Users don’t have to containerise applications and run them under Kubernetes to automatically scale them in the cloud. Most public clouds allow users to automatically scale virtual machines and services up (or down) as driven by usage, either by adding (or subtracting) instances or increasing (or decreasing) the instance size.
8 - Planetary databases
The major public clouds and several database vendors have implemented planet-scale distributed databases with underpinnings such as data fabrics, redundant interconnects, and distributed consensus algorithms that enable them to work efficiently and with up to five 9’s reliability (99.999% uptime).
Cloud-specific examples include Google Cloud Spanner (relational), Azure Cosmos DB (multi-model), Amazon DynamoDB (key-value and document), and Amazon Aurora (relational). Vendor examples include CockroachDB (relational), PlanetScale (relational), Fauna (relational/serverless), Neo4j (graph), MongoDB Atlas (document), DataStax Astra (wide-column), and Couchbase Cloud (document).
9 - Hybrid services
Companies with large investments in data centres often want to extend their existing applications and services into the cloud rather than replace them with cloud services. All the major cloud vendors now offer ways to accomplish that, both by using specific hybrid services (for example, databases that can span data centres and clouds) and on-premises servers and edge cloud resources that connect to the public cloud, often called hybrid clouds.
10 - Scalable machine learning training and prediction
Machine learning training, especially deep learning, often requires substantial compute resources for hours to weeks. Machine learning prediction, on the other hand, needs its compute resources for seconds per prediction, unless doing batch predictions. Using cloud resources is often the most convenient way to accomplish model training and predictions.
11 - Cloud GPUs, TPUs, and FPGAs
Deep learning with large models and the very large datasets needed for accurate training can often take much more than a week on clusters of CPUs. GPUs, TPUs, and FPGAs can all cut training time down significantly, and having them available in the cloud makes it easy to use them when needed.
12 - Pre-trained AI services
Many AI services can be performed well by pre-trained models, for example language translation, text to speech, and image identification. All the major cloud services offer pre-trained AI services based on robust models.
13 - Customisable AI services
Sometimes pre-trained AI services don’t do exactly what users need. Transfer learning, which trains only a few neural network layers on top of an existing model, can give users a customised service relatively quickly compared to training a model from scratch. Again, all the major cloud service providers offer transfer learning, although they don’t all call it by the same name.
14 - Monitoring services
All clouds support at least one monitoring service and make it easy for users to configure cloud services for monitoring. The monitoring services often show a graphical dashboard, and can be configured to notify users of exceptions and unusual performance indicators.
15 - Distributed services
Databases aren’t the only services that can benefit from running in a distributed fashion. The issue is latency. If compute resources are far from the data or from the processes under management, it takes too long to send and receive instructions and information.
If latency is too high in a feedback loop, the loop can easily go out of control. If latency is too high between machine learning and the data, the time it takes to perform the training can blow up. To solve this problem, cloud service providers offer connected appliances that can extend their services to a customer’s data centres (hybrid cloud) or near a customer’s factory floors (edge computing).
16 - Edge computing
The need to bring analysis and machine learning geographically close to machinery and other real-world objects (the Internet of Things, or IoT) has led to specialised devices, such as miniature compute devices with GPUs and sensors, and architectures to support them, such as edge servers, automation platforms, and content delivery networks.
Ultimately, these all connect back to the cloud, but the ability to perform analysis at the edge can greatly decrease the volume of data sent to the cloud as well as reducing the latency.
The next time users hear grief about cloud spending, perhaps they can point to one of these 16 benefits – or to one of the cloud features that have helped the team. Any one of the cloud innovations we’ve discussed can justify its use. Taken together, the benefits really are irresistible.