<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>trion News</title>
  <subtitle>Java, Cloud und Frontends</subtitle>
  <id>https://www.trion.de/news</id>
  <link href="https://www.trion.de/news"/>
  <link href="https://www.trion.de/news/feed.xml" rel="self"/>
  <updated>2026-05-22T00:00:00.000Z</updated>
  <author>
    <name>trion development GmbH</name>
  </author>
  
  <entry>
    <title>Keycloak Service Accounts statt technischer Benutzer: M2M-Authentifizierung mit OAuth</title>
    <link rel="alternate" href="https://www.trion.de/news/2026/05/22/keycloak-service-accounts-statt-technischer-benutzer-m2m-authentifizierung-mit-oauth.html" />
    <id>https://www.trion.de/news/2026/05/22/keycloak-service-accounts-statt-technischer-benutzer-m2m-authentifizierung-mit-oauth.html</id>
    <published>2026-05-22T00:00:00.000Z</published>
    <updated>2026-05-22T00:00:00.000Z</updated>
    <author>
      <name>Stefan Reuter</name>
    </author>
    <summary type="html"><![CDATA[
    <div class="imageblock teaserLeft">
<div class="content">
<img src="/news/2026/05/22/keycloak-service-accounts-statt-technischer-benutzer-m2m-authentifizierung-mit-oauth/keycloak_icon_512px.svg" alt="Keycloak" width="140" height="140" />
</div>
</div>
<div class="paragraph">
<p>Wenn Systeme miteinander kommunizieren, stellt sich immer die Frage: Wie weist sich ein System gegenüber einem anderen aus?
Ein Microservice, der nachts einen Batchjob ausführt, ein CI/CD-System, das Deployments anstößt, oder ein Backend, das im Hintergrund auf eine API zugreift – all diese Szenarien brauchen eine Systemidentität.</p>
</div>
<div class="paragraph">
<p>Die klassischen Lösungen für dieses Problem – API-Keys, technische Benutzerkonten oder Shared Secrets – haben alle ihre Schwächen.
Keycloak bietet mit Service Accounts eine deutlich bessere Alternative, die auf dem bewährten OAuth 2.0 Standard aufbaut.</p>
</div>
<div class="paragraph">
<p></p></div>
    <br/><br/><a href="https://www.trion.de/news/2026/05/22/keycloak-service-accounts-statt-technischer-benutzer-m2m-authentifizierung-mit-oauth.html">Ganzer Artikel</a>
    ]]></summary>
  </entry>

  <entry>
    <title>Spring Boot Observability mit OpenTelemetry</title>
    <link rel="alternate" href="https://www.trion.de/news/2026/04/07/spring-boot-observability-mit-opentelemetry.html" />
    <id>https://www.trion.de/news/2026/04/07/spring-boot-observability-mit-opentelemetry.html</id>
    <published>2026-04-07T00:00:00.000Z</published>
    <updated>2026-04-07T00:00:00.000Z</updated>
    <author>
      <name>Leonard Wagner</name>
    </author>
    <summary type="html"><![CDATA[
    <div class="paragraph">
<p>Wie geht es meiner Anwendung eigentlich?
Wer hierauf eine präzise Antwort haben möchte, muss die richtigen Daten sammeln.
Tut man es nicht, ist man blind unterwegs und kann bei Problemen erst spät reagieren.
In diesem Artikel beschreibe ich daher, wie man einfach und standardisiert Observability-Daten seiner Spring-Boot-Anwendung sammelt.</p>
</div>
<div class="paragraph">
<p></p></div>
    <br/><br/><a href="https://www.trion.de/news/2026/04/07/spring-boot-observability-mit-opentelemetry.html">Ganzer Artikel</a>
    ]]></summary>
  </entry>

  <entry>
    <title>AI over MQTT: Warum das Protokoll ideal für die Kommunikation zwischen AI Systemen ist</title>
    <link rel="alternate" href="https://www.trion.de/news/2026/03/15/ai-over-mqtt-warum-das-protokoll-ideal-f-r-die-kommunikation-zwischen-ai-systemen-ist.html" />
    <id>https://www.trion.de/news/2026/03/15/ai-over-mqtt-warum-das-protokoll-ideal-f-r-die-kommunikation-zwischen-ai-systemen-ist.html</id>
    <published>2026-03-15T00:00:00.000Z</published>
    <updated>2026-03-15T00:00:00.000Z</updated>
    <author>
      <name>Jonas Winkelmann</name>
    </author>
    <summary type="html"><![CDATA[
    <div class="imageblock teaserLeft">
<div class="content">
<img src="/news/2026/03/15/ai-over-mqtt-warum-das-protokoll-ideal-f-r-die-kommunikation-zwischen-ai-systemen-ist/ai-over-mqtt.png" alt="AI Over MQTT" width="312" height="339" />
</div>
</div>
<div class="paragraph">
<p>Sensoren, Kameras und industrielle Geräte erzeugen kontinuierlich Daten, die zunehmend direkt durch AI analysiert werden, oft in Echtzeit und möglichst nahe an der Datenquelle.
AI übernimmt mehr und mehr Aufgaben wie Vorhersage, Muster erkennung, Entscheidungsfindung und Ausführung sowie Datenmanagement. <a href="https://www.sciencedirect.com/science/article/pii/S2542660525002938">Literature Review on AI in IoT Systems</a>
Damit solche Systeme zuverlässig funktionieren, benötigen sie eine Kommunikationsschicht, die leichtgewichtig, skalierbar und eventbasiert ist.</p>
</div>
<div class="paragraph">
<p>Genau hier kommt MQTT ins Spiel.</p>
</div>
<div class="paragraph">
<p>Das Publish-Subscribe-Protokoll wurde ursprünglich für ressourcenbeschränkte Geräte und instabile Netzwerke entwickelt, hat sich jedoch schnell zu einem zentralen Baustein moderner IIoT-Architekturen entwickelt.
Durch seinen geringen Overhead und die lose Kopplung zwischen Komponenten und Systemen eignet sich MQTT besonders gut, um Datenströme zwischen Geräten, AI-Systeme und Backend-Systemen zu orchestrieren.</p>
</div>
<div class="paragraph">
<p>In diesem Artikel werfen wir einen Blick darauf, warum MQTT eine ideale Grundlage für die Kommunikation von Agenten und Model Context Protocol (MCP) Systemen darstellt.</p>
</div>
<div class="paragraph">
<p></p></div>
    <br/><br/><a href="https://www.trion.de/news/2026/03/15/ai-over-mqtt-warum-das-protokoll-ideal-f-r-die-kommunikation-zwischen-ai-systemen-ist.html">Ganzer Artikel</a>
    ]]></summary>
  </entry>

  <entry>
    <title>Keycloak mit Custom Theming</title>
    <link rel="alternate" href="https://www.trion.de/news/2026/02/23/keycloak-mit-custom-theming.html" />
    <id>https://www.trion.de/news/2026/02/23/keycloak-mit-custom-theming.html</id>
    <published>2026-02-23T00:00:00.000Z</published>
    <updated>2026-02-23T00:00:00.000Z</updated>
    <author>
      <name>Jonas Winkelmann</name>
    </author>
    <summary type="html"><![CDATA[
    <div class="paragraph">
<p>Wer seine Anwendungen sicher und flexibel in Bezug auf Authentifizierung und Autorisierung gestalten möchte,
findet im Open Source Identity Provider Keycloak häufig die passende Softwarelösung.</p>
</div>
<div class="paragraph">
<p>Beim Login über Keycloak werden Nutzer auf dessen Anmeldeseite weitergeleitet.
Wer jedoch bereits mit Keycloak gearbeitet hat, weiß,
dass das standardmäßige Styling der Login-Maske oft nicht zur visuellen Identität der eigenen Anwendung oder Website passt.</p>
</div>
<div class="paragraph">
<p>In den folgenden Abschnitten werfen wir einen genaueren Blick auf die verschiedenen Ansätze,
mit denen sich das Erscheinungsbild der Keycloak-Seiten anpassen lässt.
Dabei unterscheiden sich die Möglichkeiten nicht nur im Funktionsumfang,
sondern auch im Grad der Flexibilität und im benötigten Implementierungsaufwand.</p>
</div>
<div class="paragraph">
<p></p></div>
    <br/><br/><a href="https://www.trion.de/news/2026/02/23/keycloak-mit-custom-theming.html">Ganzer Artikel</a>
    ]]></summary>
  </entry>

  <entry>
    <title>Unterbrechungsfreies Deployment mit Docker Compose</title>
    <link rel="alternate" href="https://www.trion.de/news/2025/12/22/docker-unterbrechungsfrei-deployment.html" />
    <id>https://www.trion.de/news/2025/12/22/docker-unterbrechungsfrei-deployment.html</id>
    <published>2025-12-22T00:00:00.000Z</published>
    <updated>2025-12-22T00:00:00.000Z</updated>
    <author>
      <name>Thomas Kruse</name>
    </author>
    <summary type="html"><![CDATA[
    <div class="imageblock teaserLeft">
<div class="content">
<img src="/news/2025/12/22/docker-unterbrechungsfrei-deployment/docker-compose-logo.webp" alt="Docker Compose" width="312" height="339" />
</div>
</div>
<div class="paragraph">
<p>Ab und zu kommen Wünsche, die sich extrem einfach mit Kubernetes umsetzen lassen würde, aber …​<br />
Kubernetes ist viel zu komplex!<br />
Wir haben kein Kubernetes!<br />
Es ist doch nur ein Server (aber Ausfallsicherheit brauchen wir schon) …​</p>
</div>
<div class="paragraph">
<p>Wie könnte also ein unterbrechungsfreies Deployment aussehen, wenn lediglich Docker und Docker Compose zur Wahl stehen, und was sind die Tradeoffs, die damit einher gehen?<br />
Schauen wir es uns an einem praktischen Beispiel an.</p>
</div>
<div class="paragraph">
<p></p></div>
    <br/><br/><a href="https://www.trion.de/news/2025/12/22/docker-unterbrechungsfrei-deployment.html">Ganzer Artikel</a>
    ]]></summary>
  </entry>

  <entry>
    <title>GitLab CI: Zeitverzögertes Deployment</title>
    <link rel="alternate" href="https://www.trion.de/news/2025/12/05/gitlab-zeitverzoegertes-deployment.html" />
    <id>https://www.trion.de/news/2025/12/05/gitlab-zeitverzoegertes-deployment.html</id>
    <published>2025-12-05T00:00:00.000Z</published>
    <updated>2025-12-05T00:00:00.000Z</updated>
    <author>
      <name>Thomas Kruse</name>
    </author>
    <summary type="html"><![CDATA[
    <div class="imageblock teaserRight">
<div class="content">
<img src="/news/2025/12/05/gitlab-zeitverzoegertes-deployment/gitlab-logo.png" alt="GitLab" width="140" height="140" />
</div>
</div>
<div class="paragraph">
<p>GitLab hat mit GitLab CI eine angenehme Integration von Builds in die Repositoryverwaltung.
Damit lassen sich Pipelines umsetzen, die schnelles Feedback liefern und damit helfen, die Software- und Systemqualität zu verbessern.<br />
Die GitLab CI Runner helfen dabei, den Build zu skalieren, damit es auch hier nicht zu unnötigen Verzögerungen kommt.</p>
</div>
<div class="paragraph">
<p>Doch was, wenn der Wunsch besteht, dass genau das passiert?
Es soll bis zu einem gewissen Zeitpunkt verzögert werden, da die bisherige Anwendung noch Session-basiert ist, und zu einem Zeitpunkt mit der geringsten Wahrscheinlichkeit für Störungen das Deployment erfolgen soll.</p>
</div>
<div class="paragraph">
<p></p></div>
    <br/><br/><a href="https://www.trion.de/news/2025/12/05/gitlab-zeitverzoegertes-deployment.html">Ganzer Artikel</a>
    ]]></summary>
  </entry>

  <entry>
    <title>etcd Wartung in Kubernetes</title>
    <link rel="alternate" href="https://www.trion.de/news/2025/11/19/etcd-wartung-in-kubernetes.html" />
    <id>https://www.trion.de/news/2025/11/19/etcd-wartung-in-kubernetes.html</id>
    <published>2025-11-19T00:00:00.000Z</published>
    <updated>2025-11-19T00:00:00.000Z</updated>
    <author>
      <name>Thomas Kruse</name>
    </author>
    <summary type="html"><![CDATA[
    <div class="imageblock teaserLeft">
<div class="content">
<img src="/news/2025/11/19/etcd-wartung-in-kubernetes/etcd-logo.png" alt="etcd" width="140" height="140" />
</div>
</div>
<div class="paragraph">
<p>etcd spielt in Kubernetes Clustern typischerweise eine essentielle Rolle, denn hier wird der gesamte Zustand des Clusters gehalten.
Die einzelnen Kubernetes API Server Instanzen selbst sind zustandslos.</p>
</div>
<div class="paragraph">
<p>etcd ist ein verteilter Key-Value-Store, der mit Multi-Version-Concurrency-Control arbeitet und darüber Change-Notification and Zugriff auf ältere Versionen ermöglicht.</p>
</div>
<div class="paragraph">
<p>Die Implementierung verwendet dazu einen Revisions-Zähler.
Werden Daten gelöscht, hinzugefügt oder überschrieben, so werden diese Operationen stets zu einer neuen Revision assoziiert.
Die vorheigen Zustände bleiben zunächst gespeichert, auch wenn sie überholt sind.</p>
</div>
<div class="paragraph">
<p>Damit diese quasi unendliche Geschichte nicht dazu führt, dass die Festplatte volläuft, müssen regelmäßig Wartungsaufgaben erfüllt werden.</p>
</div>
<div class="paragraph">
<p></p></div>
    <br/><br/><a href="https://www.trion.de/news/2025/11/19/etcd-wartung-in-kubernetes.html">Ganzer Artikel</a>
    ]]></summary>
  </entry>

  <entry>
    <title>etcd Schreiblast reduzieren und Performance steigern</title>
    <link rel="alternate" href="https://www.trion.de/news/2025/10/22/etcd-schreiblast-performance.html" />
    <id>https://www.trion.de/news/2025/10/22/etcd-schreiblast-performance.html</id>
    <published>2025-10-22T00:00:00.000Z</published>
    <updated>2025-10-22T00:00:00.000Z</updated>
    <author>
      <name>Thomas Kruse</name>
    </author>
    <summary type="html"><![CDATA[
    <div class="imageblock teaserRight">
<div class="content">
<img src="/news/2025/10/22/etcd-schreiblast-performance/etcd-logo.png" alt="etcd" width="140" height="140" />
</div>
</div>
<div class="paragraph">
<p>Kubernetes speichert sämtliche Konfigurationsdaten des Clusters in einer Datenbank, typischerweise etcd.</p>
</div>
<div class="paragraph">
<p>etcd ist ein verteilter Key-Value-Store, durch mehrere Instanzen kann die Verfügbarkeit und Datensicherheit gewährleistet werden.
Damit keine Daten verloren gehen, signalisiert etcd dem Betriebssystem per fsync()-Aufruf, dass ein sofortiges Schreiben auf Festplatte erfolgen soll.</p>
</div>
<div class="paragraph">
<p>Doch etcd kann auch zum Flaschenhals werden:
Wenn keine Schreiboperationen möglich sind, ist auch die Clusteradministration blockiert.
Ein weiterer Aspekt ist, dass selbst in einem relativ stabilen Cluster kontinuierliche Aktualisierungen diverser Kubernetes-Objekte erfolgen, wie z.B. zur Leader-Election.<br />
Das führt zu recht hoher I/O-Last und kann bei günstigen SSDs/NVMe Speichern zu schneller Alterung führen.</p>
</div>
<div class="paragraph">
<p></p></div>
    <br/><br/><a href="https://www.trion.de/news/2025/10/22/etcd-schreiblast-performance.html">Ganzer Artikel</a>
    ]]></summary>
  </entry>

  <entry>
    <title>Container Inhalt inspizieren ohne Shell</title>
    <link rel="alternate" href="https://www.trion.de/news/2025/09/27/container-inhalt-inspizieren.html" />
    <id>https://www.trion.de/news/2025/09/27/container-inhalt-inspizieren.html</id>
    <published>2025-09-27T00:00:00.000Z</published>
    <updated>2025-09-27T00:00:00.000Z</updated>
    <author>
      <name>Thomas Kruse</name>
    </author>
    <summary type="html"><![CDATA[
    <div class="imageblock teaserLeft">
<div class="content">
<img src="/news/2025/09/27/container-inhalt-inspizieren/docker-small.png" alt="Docker" width="140" height="140" />
</div>
</div>
<div class="paragraph">
<p>Container haben den Betrieb von Softwaresystemen seit einigen Jahren modernisiert.
Mit Docker, Podman und Kubernetes ist ein effizienter und automatisierter Betrieb möglich, der früher undenkbar war.
Doch manchmal stört die Isolation, die Container mit sich bringen:<br />
Was, wenn es gilt, den Inhalt eines Containers zur Laufzeit zu inspizieren und es ist keine Shell installiert?</p>
</div>
<div class="paragraph">
<p></p></div>
    <br/><br/><a href="https://www.trion.de/news/2025/09/27/container-inhalt-inspizieren.html">Ganzer Artikel</a>
    ]]></summary>
  </entry>

  <entry>
    <title>Frontend / Backend Synchronisierung in der Webentwicklung</title>
    <link rel="alternate" href="https://www.trion.de/news/2025/09/20/frontend-backend-synchro.html" />
    <id>https://www.trion.de/news/2025/09/20/frontend-backend-synchro.html</id>
    <published>2025-09-20T00:00:00.000Z</published>
    <updated>2025-09-20T00:00:00.000Z</updated>
    <author>
      <name>Jonas Winkelmann</name>
    </author>
    <summary type="html"><![CDATA[
    <div class="paragraph">
<p>In modernen Webanwendungen ist die Synchronisierung zwischen Frontend und Backend von zentraler Bedeutung. Nutzer erwarten reaktive Oberflächen, unmittelbares Feedback und konsistente Daten – selbst wenn mehrere Personen gleichzeitig an denselben Inhalten arbeiten.
Doch die Umsetzung ist technisch anspruchsvoll und erfordert je nach Anforderungen der Anwendung verschiedene Ansätze.</p>
</div>
<div class="paragraph">
<p>Im Folgenden werden einige Methoden vorgestellt, mit denen das Frontend mit dem Backend kommunizieren kann, sowie weitere Methoden, die im Frontend und Backend eingesetzt werden können.</p>
</div>
<div class="paragraph">
<p></p></div>
    <br/><br/><a href="https://www.trion.de/news/2025/09/20/frontend-backend-synchro.html">Ganzer Artikel</a>
    ]]></summary>
  </entry>
</feed>