Serverless Computing - overview
Serverless Computing has disrupted the Cloud. Serverless is widely synonymous with Functions-as-a-Service (FaaS)
— which are cloud-native, usually stateless, functions that scale on demand
— although the model of computing is broader than FaaS. It brings to the Cloud a set of properties that are central to the serverless promise: little to no concern about operations, auto provisioning and autoscaling, pay-per-use with zero cost for idle time.
Many vendors have entered the FaaS market in the last three years, with IBM being among the first. IBM's approach is distinguished by its support of open standards, support for mobile developers entering the serverless space, and a simplified approach to composing complex serverless functions.
IBM’s Cloud Functions started as the OpenWhisk research project in our group at the IBM Watson Research Center in NY, where we developed the majority of the core system in use today. In 2016, the code was donated to the Apache Software Foundation and OpenWhisk is now an Apache Incubator, with a growing list of contributors, including developers from Adobe and Red Hat among many others.
As the FaaS story has unfolded, it became evident that programming serverless applications requires more than just functions. A new programming approach is necessary, one that allows for coordinating across functions, services, and APIs; which encourages incremental and modular code development; and which bridges the gap between code editors and fancy UIs. For these reasons, we developed Composer and the functions shell (fsh) for programming the IBM Cloud: 100% serverless.
With Composer, developers can build even more serverless applications, for IoT, workflow orchestration, conversation services, and devops automation, to name a few examples. Composer helps you express cloud-native apps that are serverless by construction: scale automatically, and pay as you go and not for idle time. You can also weave your already-deployed Functions into new and powerful compositions.
Composer is not a new programming language. Instead, it is a library of combinators, or meta programming using functional programming, which you use in your favorite language (read Node.js!). It makes it possible to write straightforward code to express control and data flow, and may be used with polyglot functions. Moreover, the same approach can be generalized to other programing languages, like Python, Swift, and Java. Our goal is compositions that are easy to express and program, familiar to developers, and which offer the same benefits that make FaaS attractive and disruptive.
The functions shell is a new programming experience geared for the cloud and IBM Cloud Functions. It helps with developing, deploying, running, and debugging serverless Functions and compositions. Some highlights include:
- Edit your code and program using your favorite text editor, rather than using a drag-n-drop UI
- Validate your compositions with readily accessible visualizations, without switching tools or using a browser
- Deploy and invoke compositions using familiar CLI commands
- Debug your invocations with either familiar CLI commands or readily accessible visualizations
As an early adopter, you will also be among the first to experience more features planned for the weeks ahead. We welcome your thoughts, bug reports, and contributions, and look forward to your feedback. You can also find us on slack.
If you are a graduate student and interested in collaborating on research topics related to serverless computing, send one of us your resume.