Skip to content

Load Testing Blog

Spring Boot + Hazelcast Tutorial

It all started when we had the following problem: How can you enable High Availability in a Rest API based on Spring Boot?

As you may know, we have two products: (both based on Spring Boot)

  • OctoPerf Saas-Edition: the online saas platform,
  • OctoPerf Enterprise-Edition: the full on-premise installable version.

While Saas-Edition absolutely needs High Availability, the Enterprise-Edition doesn't share the same requirements. But, as astonishing as it may seem, both versions share exactly the same code, while working slightly differently.

That's how I've come up with an elegant solution I'd like to share with you. This article aims to give an answer to multiple problems arising when clustering a web application (and especially Rest APIs):

  • Get an understanding of why clustering is inherently difficult (but not insurmountable),
  • How to hide clustering problematics behind a service that handles the difficult work for us,
  • How to enable clustering in a Spring Boot Rest API? Which framework should I use? (obviously we're talking about Hazelcast here)
  • How to make your Spring Boot App configurable to support High Availability without changing a single line of code, (using @ConditionalOnProperty)
  • How to implement a very simple Leader Election mechanism using Hazelcast and know when your instance is the leader.

The whole article is based on real-world code examples available on Github. Don't expect any long explanations on Distributed Systems theories.

JMeter vs SoapUI

There are many functional and load testing tools available on the market. That's great!

The most renewed open-source tools are certainly JMeter and SoapUI.

But, I'm sure you agree to say that it's difficult to know which one best suits your needs:

  • What features has JMeter?
  • What are the pros of using SoapUI?
  • Which tool has best community? User experience? Script maintainability?
  • Should I use JMeter or SoapUI? Or maybe both?

Gain significant insight on JMeter and SoapUI differences by reading this blog post that compares them on many different fields:

Ready for some action? Let's go!

Rancher 2: Getting Started

You may be in the situation like me: you have already extensively used Rancher v1.6.x but would like to migrate to Rancher v2.0.x. For those who don't know, Rancher is a Docker Orchestration tool.

While trying to setup a development machine with Rancher 2 installed, I came accross numerous different issues. I've spent hours figuring out how to fix them.

This tutorial is all about sharing the tips and tricks to avoid you waste time:

  • The requirements to run Rancher 2 (based on Kubernetes)
  • How to configure Rancher 2 to run on different ports (other than the default 80 and 443),
  • How to run Rancher 2 with an Ingress Controller on the same machine,
  • How to link your Ingress to an external service (like Jenkins),
  • Migrating existing services from Rancher v1.6.x to Rancher v2.0.x,
  • And many other tips along the way!

Let's see how to setup and run Rancher 2.

OctoPerf v9: The New Unified Docker Agent

OctoPerf Enterprise-Edition is OctoPerf fully installable on your own hardware. Up to OctoPerf v8.x.x, OctoPerf EE uses Rancher to manage load generators.

After multiple setup sessions with our customers, we came to the conclusion that we needed to improve the way load generators and monitoring agents are managed. We had to make core improvements to make OctoPerf EE much easier to install. Let's see:

  • How OctoPerf currently works and why it's not optimal,
  • And the changes we've made in the upcoming OctoPerf v9.0.0 to greatly improve the situation.

Let's go!

Historical Changes

2014-2015: Apache Mesos Agent

Singularity on Apache Mesos

Why the hell have we based OctoPerf on Rancher? That's a fair question I'm going to answer.

Initially, back in 2015, when we released OctoPerf's first version, it was based on Apache Mesos and Singularity. As explained on their website today:

5+ Ways to Debug a JMeter Script

If you ever have designed JMeter scripts, I bet you have been stuck at least one time figuring out why a Json Extractor is not working. Guess what? I've been there!

Do you know why best JMeter Performance Engineers almost always find solutions to their problems? They master JMeter Script Debugging.

That's why I have compiled the best JMeter Debug Practices into a huge single post covering:

  • How to use the Debug Sampler (and get the best out of it),
  • Leverage View Results Tree secret features: Regex Tester, Json Path Tester and Regex Tester (and never fail a variable correlation again),
  • How to use Dummy Sampler to generate fake requests to try things (without hitting a real server!),
  • And many other tips like How to view JMeter Logs.

Let's see them in greater details.