Savvy businesses crave rapid iterative development, reduced IT costs, and strategic use of IT staff for creating differentiated services, not for provisioning and managing back-end compute resources. The answer? Serverless computing.
Serverless computing, an emerging style of application development, eliminates the complexity of dealing with servers at all levels of the technology stack. It provides a platform for rapid change, pay-per-use billing, and management of computing resources.
But wait. Doesn’t this sound like cloud computing? Indeed, serverless computing is a form of cloud computing, but in this case, the cloud provider manages the provisioning of resources dynamically rather than planning capacity in advance, and customers pay for what they use in contrast to buying pre-defined blocks of capacity. This is a more granular, and therefore more cost-effective, approach than traditional cloud computing. Applications appear “serverless” because server management and capacity planning are hidden from the user (developer).
Serverless computing, combined with API-driven design, has drastically reduced development time for distributed development and micro-development teams. Serverless computing uses functions, encapsulated business logic such as a payment function, that are granular and independent, supporting incremental, DevOps-style development. Applications are written at the function level, and the cloud provider manages the function’s underlying operating system, availability, and scaling.
Great for events
Serverless computing lends itself to event-driven activities, especially events that are sporadic or can increase (or decrease) quickly. Serverless computing examples include:
- IoT — stream processing of data from distributed IoT applications that require multiple, small units of computing power (e.g., transaction order processing, clickstream analysis, data cleansing, metrics generation, log filtering, indexing, social media analysis and IoT device data telemetry)
- Operations automation — real-time file processing, triggered immediately after a new file is added to storage; scheduled backups; reports and housekeeping tasks
- Triggered events based on an activity — fulfillment activities initiated when an order is placed, social media data made immediately available to users for querying when the data is posted, a thumbnail generated when a photo is added to storage, data formatted for a data lake when a new database entry is made
- DevOps automation — event- or schedule-based triggers for continuous integration actions
- Security — security and operational log analysis on the fly, to take instant protective action
AWS Lambda and Microsoft Azure Functions are leaders in the serverless space. They support Node.js, Python, Java, and C#, along with other popular programming languages. Emerging frameworks are Google Cloud Functions and Oracle Fn, which are in beta.
For those interested in implementing their own on-premises serverless frameworks, there are two early-stage open source projects worth considering: Iron Functions from Iron.io and Project Fission from Platform9. Apache OpenWhisk is another on-premises serverless solution based on Apache 2 open standards.
The serverless model provides significant cost savings — on the order of 60 percent — with considerably reduced administrative effort. This calculation is based on a simple e-commerce application using AWS Lambda (function-as-a-service model, with sub-second billing) versus hosting the application on AWS EC2 instances in a High Availability architecture (hourly billing).
Serverless computing is on the rise as interest and adoption grow. Tools to manage multiple versions of functions as well as complex service integrations are evolving. Serverless frameworks, as well as commercial pre-packaged functions, are becoming popular, though AWS and Azure will continue to dominate the market for the foreseeable future. Watch this space as it evolves.