Serverless Computing - A way for scalable and cost-effective application
Cloud computing has been a game changer in a number of ways and the emergence of serverless computing/ architectures is just another example of what cloud tech (and in particular AWS) has been able to achieve. Serverless computing has been a talk of the town from past few months, it is the next generation cloud computing technology that is also popular as Function-as-a-Service (FaaS).
Serverless is about abstracting users away from servers, infrastructure, and having to deal with low-level configuration or the core operating system. Instead, developers make use of single purpose services and elastic compute platforms to execute code. By composing and combining different services together in a loose orchestration, developers can now build complex systems very quickly and spend most of their time focusing on their core business problem. These serverless systems can scale, grow and evolve without developers or solution architects having to worry about remembering to patch that web server yet again.
In the cloud evolution, this is going to be significant. While server virtualization has rationalized the server sprawl in many enterprises, you still have servers ‘on-prem’. Here is where ‘Serverless Computing’ comes into play. In this form of computing, the server resides with the cloud service provider in which developers run their applications off-premises.
In traditional cloud computing, an organization is charged with a fix and periodic amount to run their website and application either they use all instances or not. However, with serverless computing, services or instances are charged only if they are used. No charges for downtime and idle time. Serverless computing is expected to be a significant trend as we move forward.
Server-less computing is also the co-hosting of processing, storage and I/O onto a single device. The end user benefit being the elimination of dedicated application servers by co-opting excess compute power that reside in many storage servers to host compute-intensive workloads. One can build everything from mobile back-ends to streaming data processors using serverless computing.
Serverless architectures refer to applications that significantly depend on third-party services (knows as Backend as a Service or "BaaS") or on custom code that's run in ephemeral containers (Function as a Service or "FaaS").
Another area where serverless computing conveys a powerful advantage is in operations. DevOps brings a different focus in the serverless world, with more attention being paid to the deployment of functions and organization of environments, rather than infrastructure management. From a purely serverless perspective, there is no longer need to worry about infrastructure, operating systems, or network configuration, since all of those tasks are outsourced to a vendor.
But this doesn’t mean that DevOps suddenly ceases to exist. Developers still have a need to build, test, package, release, and monitor applications, and optimize for resiliency and availability.
Serverless will force DevOps to transform. Operations is not going to suddenly disappear, but serverless will drive an even greater focus on automation. Deploying functions by hand and organizing environments manually is untenable. Thankfully, frameworks such as the Serverless Framework and Apex are available to assist with the organization and deployment of functions.
All of the major public cloud vendors are now on board with serverless including Amazon, Google, Microsoft, and IBM. Each company is building its own ‘FaaS’ offering and working on services (authentication databases, storage, notifications, messaging, queuing) that developers can use. And there are plenty of other, smaller companies that have fantastic, reliable services that developers can leverage.
It is likely that many developers and organizations will try out serverless technologies and architectures due to the benefits they provide. Developers will use them to build web, mobile, game, and IoT back ends; to process data and to create powerful pipelines that perform complex operations.
Never the less, magical infrastructure increases the risk of integration problems and lack of control over server apps requires re-thinking around sessions and authorization. Configuration becomes a lot more complex. Any technology that solves one set of problems introduces another; it’s just a question of what kind of problems you want to deal with. Serverless platforms, such as Lambda, Whisk, Azure Functions or Google Cloud Functions, are a major step towards leaving infrastructure problems to companies that are much better positioned to deal with them than most other people out there. It’s very exciting to know all the possibilities that these platforms open up to smaller teams. Technically it may not be anything especially new, but you no longer need the budget of an investment bank to get all the benefits of tiny modules in isolated containers for achieving your big organization goals as well as for a start up.