Version 1.7 of the StormForge Ops platform, released this week, introduces new capabilities to broaden the set of things you can optimize for, provides more detail on failed configurations, and gives you more flexibility in how you view and filter experiment results.

This blog describes highlights of version 1.7. For complete release notes, see our release page.

Optimize for string variables

We’ve introduced a new type of parameter for your experiments that will expand the types of things you can optimize for, meaning that you are no longer limited to parameters that take integer values in your experiment.

For example, the garbage collection algorithm for the Java Virtual Machine (JVM) can have a large impact on the performance of your application, but it can often be challenging to predict what impact different algorithms will have. With the introduction of string variables you can now optimize for the garbage collection method that is best for your application, like we did in this example JVM experiment, by making the garbage collection algorithm configurable in our docker entry file and adding in the following as a string value parameter to our experiment:

parameters:
- name: gc_collector
values:
- "G1"
- "ConcMarkSweep"
- "Serial"
- "Parallel"

This is just one of many use cases for string variables. Anything you can configure, you can optimize for. Here are some other ideas of common string variables you can now try in your experiment:

  • Optimize your deployments by cloud provider region or zone to see how it impacts latency.
  • See how node types impact your costs, is memory-optimized or IOPS optimized better for your application?

Failure messages

When running an experiment, our machine learning will find configurations that are unstable. These are configurations that may have passed a unit test but, in production, under load, would have failed. For example, you might see that a particular trial has an `OOMKilled` failure. The machine learning finds these high risk configurations and learns to avoid them. You can now see these detailed trial failure messages when you run kubectl get trials and get insights into what parameter space may have otherwise led to application failures in production.

Range Sliders

Our machine learning finds the entire set of most optimized results within the parameter space you have defined (determined by the min/max range for the parameters set in the experiment). When choosing an optimized configuration to use in production, you may want to narrow down the results to what is relevant to you. Is cost your highest priority right now? Limit the results to only ones that are within your budget and then choose the point that gives you the best performance in that range.

For current customers, these new capabilities and more are available in version 1.7 of the controller, which you can download here. If you are not currently using StormForge Ops, you can optimize your first application for free, sign up here.