How Will Our Serverless Future Work?
Serverless computing promises to speed development of high-performance apps, but what does it look like in practice?
The arrival of “serverless computing” is a hot topic right now. It is viewed by some as the latest and greatest stage in the elevation of enterprise IT—which has witnessed computing infrastructure gradually rise above its earthbound, hardware-based beginnings into the realm of virtual machines, up to a container-based microservices paradigm and finally into the rarified air of serverless concepts like nanoservices and function-as-a-service (FaaS).
Heady stuff, to be sure. But what does it look like in practice and what does it mean for your modern software factory?
Serverless Infrastructure Powering Agile Apps
A range of technologies now make it possible to run applications on a serverless infrastructure. Deploying an API gateway in the cloud can be important, as can a range of other cloud-based services offered by the likes of Microsoft Azure, Google Cloud Platform and Amazon Web Services—content delivery networks, databases, media transcoders and more. But what are the advantages of developing, deploying and managing software with these services?
Serverless infrastructure makes it possible to build highly-scalable, highly-available applications that do not require management of any physical, or even virtual, machines—the cloud provider takes care of all that. A simple app could require only a few lines of code and have no dependent libraries (other than the cloud provider’s SDK). The deployment process will be incredibly simple and standing up exact copies for testing will be cheap and easy.
The Limits of Serverlessness
However, while this sounds like SaaS nirvana, there are a few tradeoffs. There’s some vendor lock-in with the cloud provider—switching any given service to an equivalent provided by a competing vendor would require you to rewrite everything from scratch. Also, any sizable application will need debugging and there isn’t an easy way to do that yet. Furthermore, not all cloud vendors provide performance monitoring for FaaS environments.
Even if your cloud vendor is providing both infrastructure monitoring and performance monitoring, this isn’t necessarily a NoOps situation—you’ll still need an in-house IT operations team to manage the overall user experience. On the other hand, a serverless approach might eventually lead to a sort of “NoDev” situation, in which the need for coding is replaced by the ability to simply wire together a collection of preset, cloud-based nanoservices.
New Tools for the Serverless Future
Serverless computing is still very much an emerging paradigm. Many organizations have not yet fully come to grips with utilizing the cloud, let alone containers. So, can they really be expected to adopt FaaS any time soon? Furthermore, as the tradeoffs discussed above clearly show, the current tools for serverless computing do not fully address the needs of enterprises and—in some cases—create their own issues.
It will be interesting to see what new tools emerge to help enterprise software factories realize the potential of serverless computing. Ideally, organizations should be able to draw from a range of cloud-based services from a variety of vendors that could communicate via shared protocols and open APIs. This would allow enterprises to avoid the dangers of vendor lock-in and utilize the widest possible array of tools.
You can count on the fact that smart vendors are already working on how to repurpose their existing offerings for a serverless future—making it quicker and easier to develop, deploy, monitor, optimize and scale new applications and app functionality. And while it is impossible to predict precisely what serverless computing will bring to your software factory, it’s bound to be exciting.