60 minutes of Serverless by Software Engineering Daily
On a recent episode of Software Engineering Daily’s popular podcast, host Jeffrey Meyerson sat with Rodric Rabbah to discuss cloud native development, Serverless functions being the focal point. As the principal researcher and technical lead in serverless computing at IBM, Rodric helped design OpenWhisk, the open source functions-as-a-service platform that IBM has deployed and operationalized as IBM Cloud Functions.
Listen to the show to learn how to build a platform for functions as a service.
In his research for building Cloud Functions, he wrote about some of the tradeoffs to building apps with serverless functions, what he refers to as “the serverless trilemma”.
Yes — serverless gives you a low-cost, scalable option for computation. But it also presents new challenges–how do you maintain state? How do you effectively compose functions together to develop complex applications? How do you schedule functions and network them in a way that keeps costs down?
It is important to address the mysterious experience of deploying a serverless function. You send a block of code into the cloud, and later send a request to call that code in the cloud. The result of the execution of that code gets sent back down to you. What is happening in between?
These are the problems Rodric and team are studying and implementing their findings in a publicly consumable way through Functions.
When a user deploys to Cloud Functions, that function gets stored in a database as a blob of text, waiting to be called. When the user makes a call, Cloud Functions takes it from the database, queues it in Kafka, and eventually schedules it onto a container for execution. Once executed, the result is stored in a database and sent to the user.
When you execute a function, the time spent scheduling it and loading onto a container is known as the “cold start problem”. The steps of executing a serverless function take time, but the resource savings are significant. Your code is stored as a blob of text in a database rather than sitting in memory on a server, waiting to execute.
Access the episode to hear why people are using functions-as-a-service, the architecture of Cloud Functions, and the unsolved challenges of building a serverless platform.