The beauty of serverless computing services like AWS Lambda is that they abstract away the server itself. That enables developers to create applications without worrying about the underlying infrastructure, but it also creates a set of new problems. Without a static server, how do you debug a program that’s running? It’s a challenge that Israeli startup Rookout has solved in its latest release.
The company has achieved this by providing a way to mark the serverless code with “breakpoints.” Rookout can then collect developer-defined information about the serverless code, allowing them to track issues even while the application is live running in a serverless environment.
This ability to run a trace, which is common in traditional applications, is much more difficult in a serverless one because there is no permanent underlying machine on which the application is running, says Rookout CEO Or Weis.
“Specifically with serverless, it is extremely hard to predict how your software will behave in that new environment [because] it’s extremely hard to know where software is running and [it has been] almost impossible to see how it’s behaving in production,” Weis explained.
He said the only way to solve that to this point has been writing more code in the form of log lines and SDK calls, which creates a whole administrative layer that Rookout wanted to eliminate from the process. By providing an interface to see what’s happening inside the code, the company is giving developers a way to debug live code running in a serverless environment in the same fashion they have debugged more traditional applications.
They can share this information with a myriad of popular adjacent tools including application performance management (APM) like New Relic, log management like Splunk or alerting like PagerDuty. They can also use it to simply go back in and fix the code issue if that’s what’s required.
While serverless computing isn’t truly serverless, there isn’t a dedicated server running the application. Instead, the vendor provides the required amount of server resources based on a particular event trigger. When that event happens, the code runs and the customer gets charged. This is in stark contrast to traditional development where you allocated a server to run the application and you pay for it, regardless of whether you use it or not.
Rookout Lambda debugging demo: