A New Way to Debug Scala in Production: Takipi for Scala

After an inspiring Scala Days (the next one is in Amsterdam), it's great to be able to shine some light on technologies dedicated to improving the workday of Scala developers. We recently talked about eight hot technologies that perhaps you didn’t know were built in Scala, and in the spirit of that we’re happy to highlight Takipi, a company that's making life for commercial Scala apps better. Branching out from Java, Takipi now helps Scala developers understand when and why their code breaks in production. For more details, we asked Josh Dreyfuss, who recently joined the Takipi team, to take us through it all.  -Oliver White, Typesafe, Inc.


Q: Hi Josh. What can you tell us about Takipi in the next 3 minutes?

JD: Takipi detects caught exceptions, uncaught exceptions, and log errors in Scala and Akka applications and shows the code and variable state that caused them - right as if you were there when they happened. Takipi runs at the JVM level using a Java agent, without relying on log files or requiring you to make any code changes. This enables it to work in web-scale production environments that handle billions of requests per day. You can probably see everything you need to in this 2-minute video, but feel free to keep reading:


Q: What can users see and do in the Takipi UI?

JD: Takipi displays your errors in a controllable and customizable dashboard. In the dashboard you can:

  • See all errors and exceptions - See caught, uncaught, HTTP and log errors. Don’t let problems slip by without you being aware of them.

  • Know about new errors and changes - Know which errors were introduced into your application since your last deployment, and see which ones are happening most often. Takipi automatically detects code changes from new deployments.

  • Zoom in on the critical errors - Filtering and alerting capabilities let you focus on the errors that impact your users the most. You can filter in order to see errors from new deployments, specific locations in your code, and types of errors, among others.

  • See error history and fail rate (pictured below) - See how often an error is occuring compared to calls into the code, and if the error happens often, compare it across different deployments. Get information on when an error first appeared and where it occurred in your code.

Q: What can Takipi show devs when it comes to code errors detected?

JD: For each error in your code, Takipi shows you the code, variable state and the call stack. Takipi integrates with JIRA so that you can quickly submit requests to the team. Developers will see:

The code and variable state (pictured below) - Takipi’s agent captures all the relevant variables and objects at the moment of error and lays them over your code throughout the call stack, so you no longer have to stare at empty stack traces to figure out which values were there. Variable names are displayed in their original source code form for ease of use. Variables are recorded up to 5 levels deep into the heap and personally identifiable information is redacted by default. By attaching your source code to the Takipi agent, you will see errors on your original Scala code (learn how here).

The call stack - In Takipi, you can view the calls which led to the error across the entire call stack in their original Scala function form, even across multiple machines. Reproducing an error is simple, as Takipi shows you the parameters that were passed into your code. Takipi shows you only your code by default, but you can also see the call stack with 3rd party code included if you’d like, so you can visualize the entire event.

Integration with JIRA - Takipi integrates with your JIRA deployment so DevOps or QA can submit an issue for an error complete with the exact state of the code directly from Takipi. The JIRA ticket automatically contains a link to the error analysis in Takipi so you have all the data you need to solve it and track that the error was indeed resolved, without involving log files at all. If using log files is part of your workflow, Takipi also integrates with log analyzers by appending a link to the error analysis into the corresponding spot in your logs.

Q: Any final information readers should know about?

JD: Finally, I’ll just add that Takipi is designed to work in high scale and intensive environments, and provides benefits such as:

  • Workflow Integration - Takipi fits into your existing workflow through integrations with tools like JIRA, New Relic, and log analyzers like Splunk and Logstash.

  • Performance for production environments - Takipi has a minimal effect on performance, with no more than 3% CPU or IO overhead. Takipi doesn't affect GC duration or your memory footprint. Read more about how Takipi works here.

  • Enterprise security - Takipi runs with high levels of encryption, and can also be deployed in a hybrid on-premises model for the most security-sensitive environments. Read more about security here.

Last but not least, Takipi for Scala is available for a free 30-day trial, and installs as a simple java agent in minutes, with no code changes or build configurations needed.