What is Function as a Service and why is it set to completely change how apps are built and run?
Function as a Service (FaaS) is a classification of cloud computing that allows operational environments to develop, run, and manage application functionalities without the overheads of build, test, deployment and maintenance typically associated with traditional application release management. FaaS is already available from the major Cloud providers; Amazon Web Services, Microsoft Azure and Google Cloud Platform.
Lambda is the AWS FaaS offering and despite only launching in 2015 it’s already a favourite of next generation cloud native application developers. At it’s core, Lambda provides a new way of abstracting and running code at scale - shifting processing work normally performed on managed servers to lean & dynamic, loosely coupled compute process containers that are fully managed by AWS - delivering a host of benefits.
As you may expect there are a number of open source tools and frameworks that make life easier by helping with definition, deployment and runtime assistance. For AWS practitioners the AWS Serverless Application Model (SAM) and the Serverless Framework makes working with API Gateway & Lambda easier than the standalone services.
So why should you and your team care about this relatively new technology?
One obvious reason to move your application code to serverless Lambda is cost. Lambda is attractive because the account is only charged for the compute time and resources used in execution. Scaling up or down thus under or over provisioning servers becomes an issue of the past. Additionally there is almost no infrastructure to manage. With Pay-As-You-Go and no administration it’s easy to see why it’s so attractive.
FaaS also provides a scalable and flexible tier akin to SOA to service other tiers, allowing adoption of Lambda to enable the next level of integrated cloud native automation.
The following use cases briefly describe how AWS Lambda can improve the tasks you might already be performing:
Lambda Asset Management
One necessity in the world of cloud infrastructure is keeping track of your assets using tags. Tags can be applied to just about every asset you provision in an AWS environment allowing you to keep track of costs and users that are responsible for virtual infrastructure. In the past, cross-billing and asset management has traditionally been automated by a server running scheduled tasks that stamp and retrieve metadata from servers and volumes. This method adds to monthly cost and requires administration, patching and a raft of other traditional sysadmin attention.
In the cloud native world - tagging, tracking and disk volume backup activities can be moved into AWS Lambda and easily scheduled to run from cloud-based events or on a timer.
Frameworks like Serverless make deploying automated tasks on Lambda reproducible and reliable. Security is simple as Lambda functions can be easily configured to only the resources and permissions they require.
Patching Existing Cloud Infrastructure
Lambda excels when paired with other parts of the AWS ecosystem. Consider using server-based agents to run commands and services on EC2 servers. EC2 System Manager can be used to execute patching and configuration tasks. This is becoming increasingly popular as it allows AWS security policies (roles) to control and specify access and permissions used by the System Manager.
Keeping Operating Systems up to date with security and critical updates is one of the most important aspects in keeping infrastructure secure. Automating with Lambda not only scales but allows for tightly controlled compliance with patching procedures. This eliminates both human error and the overhead for costly centralised patching servers.
Days of being caught out with servers that have unpatched system software are now in the past.
So what’s around the corner and does this FaaS thing really matter?
Early adoption of serverless technologies will allow customers to stay a step ahead of the competition. There is of course a skill shift required as selecting workloads to shift to Lambda takes time and practice. Getting in early will allow more time to learn the craft of this new architectural model.
Maintenance of servers that once involved hours spent by several engineers will now instead be simply orchestrated by a couple of changes to code in an online code repository.
Just as Infrastructure-as-Code practices are changing the contemporary landscape, using Lambda will allow architects to build in automation at the inception of projects, big or small, to reduce the need for day-to-day system administration.
It's the future!