Cloud Native Diary #13

LLM Observability for Spring AI, enhancing models and vector stores. My book is available in Korean. News from KCD Munich and CNCF WG AppDev.

A forest in the summer, at sunset.

In Cloud Native Diary, I periodically share my journey working with application development, platform engineering, and cloud native technologies.

In this issue, you'll find lots of content about Java and Generative AI, observability and OpenTelemetry, developer experience, cloud native platforms, and news from conferences. Let's get to it!

"Cloud Native Spring in Action" in Korean

It was a special moment to receive a paper copy of my book "Cloud Native Spring in Action" translated into Korean. I want to thank the publisher (J-Pub) and the translator (Keonhoe Cha). I particularly appreciated receiving so much positive feedback from the readers of this new translation. Thank you all!

On the left, a copy of the book "Cloud Native Spring in Action - With Spring Boot and Kubernetes" by Thomas Vitale. On the right, the Korean translation.

My book is now available in English, Chinese and Korean. You can find all the code samples on GitHub, with branches for Spring Boot 2.7 and Spring Boot 3.x (continuously updated with the latest framework versions).

Java and AI

In the last few months, I've been very active in contributing features, improvements, and bug fixes to Spring AI. I want to thank Dr. Mark Pollack and Christian Tzolov from the Spring AI team for the incredible support I received and for the insightful and stimulating conversations we had about artificial intelligence and Java.

Since the last issue of Cloud Native Diary, I have contributed several improvements to Spring AI and have more in the backlog.

  • Observability support in Spring AI, based on Micrometer and the OpenTelemetry Semantic Conventions for GenAI (#954, #1149, #1150, #1176, #1237), including OpenAI, Mistral AI (#1231), Ollama (#1230), Anthropic (#1238), and vector stores (#1262).
  • Improved the new function calling strategy in Spring AI and retry configuration (#1040, #1102).
  • Enhanced the metadata APIs for models, including chat and embedding implementations (#937, #1015, #1039, #1153).
  • Enhanced the options APIs for models, including chat, embedding, and image implementations (#1151, #1183, #1203).
  • Introduced a Spring Boot Starter for the Hugging Face integration in Spring AI (#839).
  • Updated the Ollama integration to support the latest Ollama APIs and refined the test setup based on Testcontainers (#1120).
  • Updated the Mistral AI integration to support the latest APIs and models (#826).
  • Fixed the Spring AOT support for GraalVM native executables when using the Spring Boot Dev Services (#862).
  • Improved the documentation for PGVector, including how to run it as a Dev Service in Spring Boot with Testcontainers (#825).
  • Cleaned up the auto-configuration dependencies and BOM configuration (#1023, #1092).

If you're interested in building LLM-powered applications with Java and Spring AI, feel free to check out my GitHub repository. It has tons of examples showcasing the many features of Spring AI and demonstrating actual use cases such as classification, semantic search, structured data extraction, question answering with documents, and chatbots.

GitHub - ThomasVitale/llm-apps-java-spring-ai: Samples showing how to build Java applications powered by Generative AI and LLMs using Spring AI and Spring Boot.
Samples showing how to build Java applications powered by Generative AI and LLMs using Spring AI and Spring Boot. - ThomasVitale/llm-apps-java-spring-ai

LLM Observability

I'm particularly proud of the work I've been doing to bring observability to Spring AI, based on Micrometer and the OpenTelemetry Semantic Conventions for Generative AI. Foundational support and instrumentation are already available in the framework for chat, embedding, and image models (see announcement). Much more is coming in preparation for the 1.0.0 GA version of Spring AI. Stay tuned!

Spring AI 1.0.0 M2 released
Level up your Java code and explore what Spring can do for you.

Micrometer is the vendor-neutral observability framework that powers Spring and much of the Java ecosystem, including other frameworks like Micronaut and Quarkus. It provides a convenient Observation API that you can use to instrument your code once and produce logs, metrics, traces, and much more using your favorite integration without changing anything in your code. For example, you can build an AI-infused application with Spring AI and decide to use Prometheus to export metrics and OpenTelemetry to export traces. I want to thank Jonatan Ivanov, Marcin Grzejszczak, and Tommy Ludwig for their support with Micrometer and the OpenTelemetry integration.

I also had the chance to join the OpenTelemetry Semantic Conventions community and discuss LLM Observability. A particularly interesting conversation was the one I started around the Span Kind when tracing model interactions. I want to thank Adrian Cole (Elastic) for his support and for helping me validate my implementation for Spring AI to introduce support for the GenAI semantic conventions.

KCD Munich

Last July, I was happy to attend KCD Munich again. The conference was very well organized, there were many interesting sessions, and I had the chance to have insightful conversations with the local cloud native community.

I presented together with my friend Mauricio Salatino about "Unlocking New Platform Experiences with Open Interfaces" (slides, source code). We illustrated how to design a good developer experience and build a platform supporting application teams in bootstrapping new projects, building distributed systems, and deploying them to production with observability and scalability in mind.

Many fellow CNCF Ambassadors joined the conference, which was a nice opportunity to catch up.

CNCF WG App Development

After KubeCon Europe, we started working on establishing a working group dedicated to application development (WG App Development) — for developers by developers.

The group is part of the CNCF TAG App Delivery. I'm one of the group's chairs, along with my friends Mauricio Salatino and Daniel Oh. Our first initiative is focused on identifying and describing the projects in the CNCF Landscape that are relevant for developers, helping them navigate such a complex space.

We meet on the first and third Wednesdays of each month. Feel free to join the group and help us deliver our first work for KubeCon North America. You can also find us on Slack (#wg-app-development).

KCD Denmark

This year, we're bringing KCD Denmark to Copenhagen! Join us on November 19 and 20! The CFP is open until September 1st, both for sessions and workshops.

Kubernetes Community Days Denmark
Experience the power of community at the Kubernetes Community Days in Denmark!

Cover image generated with Stockimg AI.