Function as a Service code

We talked a little about serverless computing, and its basic building blocks known as functions in an earlier post. Functions have their own service, conveniently called Function as a Service (FaaS). What are functions, and how do they relate to serverless computing?

FaaS is the concept of serverless computing using serverless architectures. It especially affects software developers, who can leverage this concept to deploy an individual “function”, action, or piece of business logic. These functions are expected to start within milliseconds and process individual requests before ending. The developer doesn’t have to worry about writing code to fit a given infrastructure–all he has to do is write code, and upload it to a serverless platform such as Azure Functions or AWS Lambda, which takes care of the rest.

Like serverless computing, FaaS has its drawbacks. It’s best for event-based architectures (e.g., adding a file to blog storage, which would trigger a function to complete a task like sending an email or updating a database) such as Azure Event Grid (link), Microsoft’s serverless event-based management service. It’s not good for large applications, where containers (link) might be a better fit.

The principles of FaaS include:

  • Complete abstraction of servers away from the developer (not the architecture!)
  • Billing based on consumption and executions, not server instance sizes (meaning more cost effective)
  • Services that are event-driven and instantaneously scalable
  • More agile software development, meaning more releases and leading to more innovation

Challenges in FaaS

They say that more power comes with more responsibility. The opposite is also true, and in this case, it could be a challenge. With less responsibility comes less control, and so for security purposes, FaaS and serverless computing might not work for your organization. There are also  problems with monitoring your function apps–how often they occur, how long they take, and why they might be slow. But since you don’t always have a server to control, or the ability to control the resources on it, it’s impossible to install any monitoring software.

Function as a Service and its related counterpart serverless computing have lots of promise for developers, but there is still some evolving that needs to be done before this kind of architecture is adopted on a wide scale. Expect more changes to serverless architecture in the coming years.