Serverless: The Next Step of Software Evolution?
Over the last few of months, as part of my new responsibility of managing the SAP.iO Fund portfolio and pipeline in Israel, I am being continuously exposed to new ideas, technologies and buzzwords. “Serverless” is all the rage and for good reason.
What is Serverless Application Development?
The core idea of serverless application development is: software that runs without the need of any deployment, server up-lifting, lifecycle management and other devOps tasks.
A simple example to convey a common use of the serverless technology is a function — a piece of software which receives input, does some computing work (logic) and returns an output. It can be a function that receives a geo-location and returns the top 5 restaurants in that area, or a function which receives an image and returns facial recognition data.
Using Function as a Service (FaaS) on Amazon Cloud (brand name: Lambda), enables developers to simply upload their code, get a URL endpoint to their function, which is now managed by and “lives” on AWS. The developer can then use this URL to call from any client app. Amazon takes care of the deployment, scale and all resources required to make sure that this said function is always available and at any scale, even when 1 million calls need to be issued in a second or none in an hour.
Companies are used to paying a lot for idle server time — and probably think that there’s no way to avoid it — but as AWS charges per use, they don’t have to worry about keeping a server up-and-running all the time. This is why it’s called serverless! A similar concept is offered as a “Database as a Service” (DBaaS) — a persistence layer that can be used by specifying a simple schema definition.
DBaaS & FaaS are provided today by all major cloud platforms like: Azure, AWS, and GCP.
So, this sounds awesome! What’s the problem?
While this might sound like “the future of cloud computing after containers and microservices” — this technology is fairly young and immature. Many tests still need to be carried out in order to prove that this serverless approach will actually provide better or at least equivalent performance (and resilience) as the current containers approach.
That’s precisely why I can’t name any large-scale applications that run serverless. However, I do see quite a lot of developers choosing serverless application development in order to do rapid prototyping for demo purposes. However, once they are ready to go into “production”, they opt for rewriting the software and managing the servers themselves.
Another challenge to the serverless technology is database persistency and the fact that an app is not just a function. A production app needs a host of other cloud services- such as dynamic IP management, traceability, user management, context management, permissions, security, message queue, and so on — in order to work seamlessly. As a result, any developers opting for the serverless option would need to “wire up” different services on their chosen cloud platform to power up their app. Additionally, once their setup is complete, they are now locked into that said- PaaS. Switching to another PaaS provider at this stage will be a tedious task.
Startups are rising to the challenge.
The serverless technology’s host of problems are being tackled by a couple of startups. For instance, Back& provides a one-stop-shop for serverless application development by wrapping around AWS FaaS & DBaaS services, as well as any other services one might need in order to run a fully scalable, production app. Back& does the same for other PaaS providers (it is platform agnostic), so it also relieves app developers from the hassles of PaaS switching. Firebase, which was acquired by Google a couple of years ago, provides a similar solution, targeting mainly mobile app developers. They have become the serverless dev platform for GCP (for obvious reasons). Two more companies worth mentioning are backendless (similar to Firebase) and Para, which is built on open source code and focuses on tailoring services around rapid prototyping. A detailed overview of the companies in this domain can be found in this VentureBeat article about the big opportunities in serverless computing.
As developers we also see a number of frameworks, SDKs and libraries that help us develop and manage our work on the various serverless platforms. One of them is Apex — a CLI tool that allows you to manage your AWS Lambda functions directly from your command line. Or, Lambda Forest that makes it easier to write RESTful services on top of AWS Lambda. Lambda Framework, on the other hand, focuses on JAX-RS implementation for REST services on FaaS.
But it does not stop there! there are more domain-specific solutions that solve problems in other domains such as tracing, authentication, payments, eCommerce, forms, static file management, email handling, push notifications, elastic search and many others. You can read more about them in this great GitHub page that attempts to follow and track all the solutions in these domains.
That’s it for now. The two next trends I’ll be covering in future blogs are: Additive Manufacturing — the ability to produce (3D print) a product, just when and where you need it — and VR/AR as the next evolution of UX/UI design.
Stay tuned!
***
Enjoyed this post? Consider giving it a clap or two so that others can find it!