Today, I feel the Spring I/O conference blues! The weather is getting a bit colder, but the runway is still heated from the sun, and I feel similarly about Spring I/O. I still feel the warmth from all the good conversations and interactions I had and am inspired by the presentations I watched.
Now I am back in Berlin at one of my favorite spots, reflecting on the great conference from two weeks ago.
My Content Highlight:
The presentation: “Micrometer Mastery: Unleash Advanced Observability in your JVM Apps.” (video is not online yet) was my personal presentation highlight. I work in the observability space and have used Micrometer in a few of my demos. The presentation was a continuation of the talk from 2023 and covered more advanced features. The core of the presentation, but also for me, was the observation API. A single API to get more customized logs, metrics, and traces from your application is quite neat. Shoutout to the observation API:
// Create an ObservationRegistry
ObservationRegistry registry = ObservationRegistry.create();
// Register an ObservationHandler
registry.observationConfig().observationHandler(new MyHandler());
// Create an Observation and observe your code!
Observation.createNotStarted("user.name", registry)
.contextualName("getting-user-name")
.lowCardinalityKeyValue("userType", "userType1") // let's assume that you can have 3 user types
.highCardinalityKeyValue("userId", "1234") // let's assume that this is an arbitrary number
.observe(() -> log.info("Hello")); // this is a shortcut for starting an observation, opening a scope, running user's code, closing the scope and stopping the observation
Source from the code and more information in this post
Additionally, I learned about automated documentation with Micrometer and leveraging the ObservationHandler. A fun aspect was learning how observation can sound and imagining how an SRE team’s office can add an acoustic experience to their dashboards.
Micrometer is also compatible with OpenTelemetry. Knowing that OpenTelemetry is gaining more traction, it is good to know that it is not an either-or decision. One can still use the Micrometer API for instrumenting the code and then propagate in an OTEL-compatible format. Speaking of OpenTelemetry, I saw some other Cloud Native topics at Spring I/O. I attended the talk “Dapr and Spring Boot - Solving the Challenges of Distributed Systems” by Thomas Vitale and Maurico Salatino. It was a great outline of how Dapr APIs enable easy access to Cloud Native technologies and components needed for building distributed systems without the need to learn all the tool APIs.
Highlights beside content
I liked how the conference embraced making new connections and meeting new people. There was a pre-evening event for attendees to connect before the conference. During the conference, there was an attendee memory game where attendees had to find a partner with a matching badge to get the conference T-shirt.
Personally, I had such a great time reconnecting with familiar faces and meeting new people. I’d like to thank everyone I met during the conference for the great conversations, support, and energy.
Expected but Still Surprising:
It is no surprise that Spring AI was a hot topic at the conference. What surprised me during the keynote was that Java is one of the top languages to integrate with Microsoft Azure OpenAI, and Google also mentions Spring AI as a top framework for building business applications leveraging LLMs. Away from the AI hype (I mean, which tool doesn’t have an integrated AI component nowadays?), Spring AI focuses on seamless integration and usage of AI in business applications. There were different talks around AI on the agenda.
My new learnings:
I explored newly Spring Security. Although I never needed Security for my demo applications, I think a conference is the perfect place to learn something new and step out of your comfort zone. Daniel made it easy and fun to follow along in his presentation, even making me think about how to implement security in my projects.
Another great talk about GraalVM and native images was delivered by Alina.
My take away:
Architecture and the design of systems have always fascinated me. Seeing that most people are building microservices nowadays and the new challenges such a distributed system holds, in the keynote, Spring Modulith was mentioned by Cora. Later, during the conference, she also did a presentation on this topic (video is still not online yet). It is an approach to make a monolith application modular, addressing some of the challenges of distributed services while still following functional decomposition with common architectural practices. It is something I take away because I would like to explore it a little bit further and found the idea for that new architecture paradigm intresting.
Something I Missed:
You can’t always be everywhere, and sometimes it is good to take a break from the talks. So, I ended up with my personal watch list:
- Implementing Domain Driven Design with Spring - Maciej Walkowiak (waiting for the video )
- Cracking the Code Review: from Guesswork to Automated Guidance - Paco van Beckhoven (waiting for the video and super curiuos to watch because it has been one of the most popular talks during the conference)
- Platform Engineering with Spring Boot - Tom Hombergs
My rediscovery:
Special to me was combining observability (call graphs and tracing) and workflows into the topic of causality. You can find my presentation slides here. It is interesting to discover how different tools bring causal relationships from service to service invocation to the forefront. Although the tools and their areas of usage are quite distinct, I believe it is good to understand which tools enable visibility into causal relations for complex systems. Furthermore, it is important to distinguish between tools that can also shape and design causal relations, such as workflow engines. In the end, both types of tools can help troubleshoot complex systems depending on the questions you ask. Workflows are great for answering questions about the state of a single business case in your system, while traces and call graphs, in combination with metrics and logs, can help you detect infrastructure abnormalities like increased latency.
Being a workflow enthusiast for several years, it is always interesting to see new technologies and revisit the topic. I find it remarkable that there are new tools specifically focusing on workflow creation within the codebase. It is definitely an interesting approach with some benefits, and it is very developer-centric, not only in writing the workflow but also in deploying and managing the workflow alongside the application. Still, I believe that for more complex workflows, BPMN as a language remains unmatched. It was good to see at the Testcontainers booth that they now support running Testcontainers for Zeebe workflow applications.
Ending the blues
Well, I hope this post made you curious to check out and watch some of the presentations from Spring I/O 2024. After talking about the content, people, and booths, did I miss something? Probably, yes! Feeling the blues also means feeling the vibe of this special conference. So I can only encourage you to watch the videos, get excited for Spring I/O 2025, and hopefully see you there.