Skip to content

Commit 4eb84a5

Browse files
committed
Announce the second Application Observability Code Challenge
1 parent 5450726 commit 4eb84a5

File tree

5 files changed

+80
-3
lines changed

5 files changed

+80
-3
lines changed
95.3 KB
Loading
47.4 KB
Loading
138 KB
Loading
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
title: "Challenge 2 - Observability Challenge with virtual threads"
3+
date: 2025-10-10T22:20:11+02:00
4+
pinned: true
5+
6+
resources:
7+
- src: "**.{png,jpg,webp}"
8+
title: "Image #:counter"
9+
10+
tags:
11+
- Grafana
12+
- Observability
13+
- OpenTelemetry
14+
- AOCC
15+
- Puzzlers
16+
- Java
17+
18+
slug: aocc-challenge-02
19+
20+
summary:
21+
An Application Observability Code Challenge with `virtual threads`. Spot the difference between system thread and virtual thread usage for the same application with some problems.
22+
---
23+
24+
![Application Observability Code Challenge 2](aocc_challenge02_small.png)
25+
26+
After I released the [first challenge](../aocc-challenge-01), I got quite a lot of enthusiastic reactions from developers who were interested in doing the challenge.
27+
But I also noticed that it was sometimes quite hard to find the cause of the problem. Therefore it is a challenge, right?
28+
This time the issue is easier to find, which you can even spot just by looking at the code. But this time the question is can you spot this problem based on the observability data?
29+
And especially **can you spot the problem when virtual threads** are being used? And can you find the **differences between Java 21 and Java 25** when using virtual threads?
30+
31+
### 🔍 The Challenge
32+
- Run the sample applications `regular-threads` and `virtual-threads-21` and `virtual-threads-25`
33+
- Run the tests to see what happens
34+
- Try to find out what happens, make a hypothesis❗
35+
- **Improve the observability** of the application to **prove the hypothesis**
36+
- Optional: fix the problem and **prove it with observability data that it is really fixed**
37+
- Optional, but highly appreciated 🙏: Share your findings, insights you learned and potential solution, either as a ['discussion'](https://github.com/cbos/application-observability-code-challenges/discussions) or as a pull request
38+
39+
### 🛠️ How to Get Started
40+
All the details you need to jump in can be found here:
41+
👉 [https://github.com/cbos/application-observability-code-challenges/tree/main/challenge-02](https://goto.ceesbos.nl/ghch02)
42+
Prefer an online environment? No problem! Use KillerCode to get started with just a few clicks:
43+
👉 [https://killercoda.com/observability-code-challenges](https://goto.ceesbos.nl/aocckk)
44+
45+
### Challenge details
46+
47+
- The setup contains 4 applications:
48+
- `common-backend`: A common backend used by three other applications
49+
- `regular-threads`: A version of the application with **Java 21** and using **regular threads** to execute the requests
50+
- `virtual-threads-21`: A version of the application with **Java 21** and using **virtual threads** to execute the requests
51+
- `virtual-threads-25`: A version of the application with **Java 25** and using **`Virtual Threads`** to execute the requests
52+
- The applications are instrumented using **OpenTelemetry** auto instrumentation.
53+
- You can either run the application with Docker or directly.
54+
- Pre-configured **K6 load scripts** to simulate traffic and reveal performance bottlenecks.
55+
- You can use the **pre-configured [Observability Toolkit](../observability-toolkit)** or you can use **your own Observability stack**
56+
57+
The setup looks like this:
58+
![Setup](application_setup.png)
59+
60+
Goals for this challenge:
61+
1) Check if you can find the Java version in the observability data (logs, metrics, traces)
62+
1) Can you spot the latency gap between the services in traces?
63+
1) Can you find the problem based on metrics?
64+
1) And the most important: Can you see the difference between the 3 application `regular-threads` and `virtual-threads-21` and `virtual-threads-25`?
65+
2) What can be done to make it more observable?
66+
67+
👉 Go to the challenge: [https://github.com/cbos/application-observability-code-challenges/tree/main/challenge-02](https://goto.ceesbos.nl/ghch02)
68+
69+
### Feedback?
70+
71+
If you have any feedback, please let me know. You can leave a comment below, send me a message on [Bluesky](https://bsky.app/profile/ceesbos.nl), [Mastodon](https://foojay.social/@cbos), [LinkedIn](https://www.linkedin.com/in/ceesbos/) or in the ['discussion'](https://github.com/cbos/application-observability-code-challenges/discussions) section of the challenge's Github repository .
72+
73+
74+
75+
76+

layouts/partials/challenges.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22

3-
| Challenge | Description | Explanation |
4-
|----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------|
5-
| [1](/posts/aocc-challenge-01) | A simple Spring Boot application with a REST endpoint implemented in Jersey/JAX-RS with unexpected behaviour. Can you find out what is happening based on the observability data? | [step by step revealed](/posts/aocc-challenge-01-step-by-step) |
3+
| Challenge | Description | Explanation |
4+
|-------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------|
5+
| [1](/posts/aocc-challenge-01) | A simple Spring Boot application with a REST endpoint implemented in Jersey/JAX-RS with unexpected behaviour. Can you find out what is happening based on the observability data? | [step by step revealed](/posts/aocc-challenge-01-step-by-step) |
6+
| [2](/posts/aocc-challenge-02) | Spot the difference between system thread and virtual thread usage for the same application with some problems. | Not available yet |

0 commit comments

Comments
 (0)