Introducing Takipi - God Mode in Production Scala Code
At Typesafe we have seen a ton of new Scala developer tools lately. One of the most exciting is Takipi. The core Takipi tool allows you to play "god" in your production Scala code. Recently Takipi released a new tool named Stackifier that deciphers Scala stack traces into a human readable form. Here is a more indepth description of these tools from Takipi...
Takipi is a new tool that gives you visibility into how your Scala code executes in real-time in staging or production. Takipi tells you when and why exceptions, non-responsive API calls or code conditions happen in your code.
Check out a demo:
For each event detected in your code, Takipi shows you:
Variable values - of all the relevant variable and objects at the moment of event, so you no longer have to stare at stack-traces to figure out which values were there.
Call history - view the function calls which led to the event across threads. Unlike a standard call stack, Takipi also shows relevant functions calls that have already completed - giving you a deeper look into how your code executed. Method calls are presented in their original Scala function and expression form.
Variable history - "Why is this field null?", "How was this string value assigned?" Takipi's variable history feature helps you answer these questions in staging or production. Takipi logs and collects relevant assignments to object values which led to the error, and shows those assignments in the context of your code.
Multithreading - for each logged assignment Takipi shows you in which thread it was made (we know how important that is in Scala applications).
GC Analysis - See which code locations are allocating the most memory throughout the day and why
Here are a few scenarios where you'd like to use Takipi:
- Exceptions - such as NullPointer, IOException, etc.
- API Latency - know when and why an OS, NoSql or web service call takes much longer than usual to complete.
- Illegal behavior - set a breakpoint with an optional condition to see when and why a queue exceeds its capacity or a field is assigned null - without stopping your server.
- Performance - Takipi lets you set a predictable cap for its CPU and RAM usage. The default is 5%. In case hundreds or even thousands of exceptions are thrown over a short period of time, Takipi dynamically adapts itself, collecting only a sample so not to slow your code down. Takipi doesn't affect GC duration or your memory footprint. Read more about production performance here.
Takipi is in public beta these days and free. You're welcome to create an account and install Takipi (super quick installation) - https://app.takipi.com/account.html. To view variable data on your original Scala code you'll want to attach your source code (learn how here). Feel free to hit them with any questions. They're super nice - firstname.lastname@example.org