Behind the pay-as-you-go pricing model, the public cloud is teeming with the latest and greatest development, devops, and AI tools for building better and smarter applications faster. Credit: Deyan Georgiev / Shutterstock When we think of the public cloud, often the first consideration that comes to mind is financial: Moving workloads from near-capacity data centers 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-prem 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. 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 you can tolerate having an on-prem virtual machine (VM) instead of a physical server and your company uses VMware or similar technologies, your wait might only take weeks. But if you want to create a server instance on a public cloud, you can have it provisioned and running in about 15 minutes – and you’ll be able to size it to your needs, and turn it off when you’re not using it. Pre-built virtual machine images Being able to bring up a VM with the operating system of your choice is convenient, but then you still need to install and license the applications you need. Being able to bring up a VM with the operating system and applications of your choice all ready to run is priceless. 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 you 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 you want a serverless app without being locked into any specific public cloud, you 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). 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. 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. You can find pre-defined Dockerfiles in the Docker registry, and you can also build your own. You can run Docker images in your 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. Kubernetes container orchestration Kubernetes (K8s) is an open source system for automating deployment, scaling, and management of containerized applications. K8s was based on Google’s internal “Borg” technology. K8s clusters consist of a set of worker machines, called nodes, that run containerized 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; you can also run K8s on your own development machine. Auto-scaling servers You don’t have to containerize your applications and run them under Kubernetes to automatically scale them in the cloud. Most public clouds allow you 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. 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). Hybrid services Companies with large investments in data centers 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 centers and clouds) and on-premises servers and edge cloud resources that connect to the public cloud, often called hybrid clouds. 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 you’re doing batch predictions. Using cloud resources is often the most convenient way to accomplish model training and predictions. 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. 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. Customizable AI services Sometimes pre-trained AI services don’t do exactly what you need. Transfer learning, which trains only a few neural network layers on top of an existing model, can give you a customized 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. Monitoring services All clouds support at least one monitoring service and make it easy for you to configure your cloud services for monitoring. The monitoring services often show you a graphical dashboard, and can be configured to notify you of exceptions and unusual performance indicators. 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 centers (hybrid cloud) or near a customer’s factory floors (edge computing). 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 specialized 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 you hear grief about your cloud spending, perhaps you can point to one of these 16 benefits – or to one of the cloud features that have helped you or your team. Any one of the cloud innovations we’ve discussed can justify its use. Taken together, the benefits really are irresistible. Related content feature 14 great preprocessors for developers who love to code Sometimes it seems like the rules of programming are designed to make coding a chore. Here are 14 ways preprocessors can help make software development fun again. By Peter Wayner Nov 18, 2024 10 mins Development Tools Software Development feature Designing the APIs that accidentally power businesses Well-designed APIs, even those often-neglected internal APIs, make developers more productive and businesses more agile. By Jean Yang Nov 18, 2024 6 mins APIs Software Development news Spin 3.0 supports polyglot development using Wasm components Fermyon’s open source framework for building server-side WebAssembly apps allows developers to compose apps from components created with different languages. By Paul Krill Nov 18, 2024 2 mins Microservices Serverless Computing Development Libraries and Frameworks news Go language evolving for future hardware, AI workloads The Go team is working to adapt Go to large multicore systems, the latest hardware instructions, and the needs of developers of large-scale AI systems. By Paul Krill Nov 15, 2024 3 mins Google Go Generative AI Programming Languages Resources Videos