Nats JetStream with NestJS

In the first blog post of this series, we learned how to send serialized data from a React frontend to a NestJS backend with Axios and Cap’n Proto. This blog post will focus on propagating the received data from service to service in a Kubernetes environment using NestJS clients coupled with a Nats JetStream message bus. 

I will explain how to install a properly configured Nats JetStream message bus in a Kubernetes cluster using Helm and Ansible and how to connect the NestJS clients to JetStream afterward. To avoid complexity, we’ll use Minikube, an easy-to-install Kubernetes cluster with just one node. We will also partially use the code and generated data from the last blog article. Both code and data are available on GitHub.

Weiterlesen

Cap’n Proto with React and NestJS

In a recent project for a Mayflower client, we used Quarkus Java Microservices with Google Protobuf. In a very abstract sense, our objective was to exchange serialized binary data over a message bus system living in Kubernetes. Therefore I decided to replace the existing tech stack with Typescript, NestJS, and Cap’n Proto IDL (Interactive Data Language).

In this blog post, I will show you how to serialize data using Cap’n Proto in React and send it to a NestJS receiver, which simulates a backend.

Weiterlesen

PostGraphile Subscriptions

Mit Subscriptions kann man über Events und Änderungen in der Datenbank informiert werden. Ein offensichtlicher Anwendungsfall sind Notifications.

Wenn wir in unserem Code-Beispiel einer Blogging-App (ihr wisst schon, unsere PostGraphile-Serie*) bleiben, könnte man dem User zum Beispiel die Möglichkeit geben, über neue Blogposts informiert zu werden. Oder falls man als Betreiber der App sicherstellen will, dass Spammer nicht einfach posten können, könnte man einbauen, dass Blogposts immer erst freigeschaltet werden müssen. In so einem Fall will man natürlich eine Nachricht bekommen, wenn ein Blogpost freigeschaltet werden will.

Weiterlesen

Ein Blick hinter die Kulissen der AgileUFRA

Bücher über Agilität gibt es genug. Sicher ist aber, dass neben theoretischem Know-how der Austausch mit anderen Agilisten einen unverzichtbaren Mehrwert bietet.

Mayflower hat viele begeisterte Agilisten, die ihr Wissen teilen möchten – so ist die Agile User Group entstanden. Ein Team innerhalb Mayflower hat es sich zur Aufgabe gemacht, Erfahrungen zu teilen und Agilität weiterzuverbreiten.

Weiterlesen

The Tricky Thing About Expectations

Expectations are everywhere. Especially in business, one overly used term is “managing expectations.” We have to manage the expectations of our stakeholders, business, and users – to name a few. 

The unspoken truth is that it is not possible to manage expectations. They are something personal that lives inside a person’s perception, and you can try, but you can hardly change or even manage them. So it is a good idea to stop thinking about expectations management and find a more accessible and objective way of aligning expected outcomes and results.

Weiterlesen

Die Agile User Group Unterfranken wird 7 Jahre alt!

Liebes Mitglied unserer Agilen Community,

„Happy Birthday to all of us“. Richtig gehört, wir feiern Geburtstag. Im August wird unsere Community schon 7 Jahre alt! Nur dank Euch konnte die User Group Unterfranken so schnell wachsen. Und deshalb heißt es: auf Euch und auf sieben Jahre voller spannender, interessanter und einzigartiger Meetups.❣️

Was ab Ende August auf euch wartet, erfahrt ihr in unserer aktuellen Ausgabe des Agile Infoletters.

Weiterlesen

Einzigartige, lesefreundliche Identifier mit PostgreSQL

In einem meiner Projekte stelle ich zur Zeit von PHP auf JavaScript und von REST auf GraphQL um, in der Hoffnung, schlankere Services zu erhalten. Bei meinen Recherchen zu dem Thema stieß ich auf PostGraphile, das als zugrundeliegende Datenbank PostgreSQL möchte. Bisher war ein klassisches MySQL im Einsatz.

Eine Funktionalität, die ich ersetzen muss, sind einzigartige, lesefreundliche Bezeichner oder auch Slugs. Bislang gab es eine Funktionalität in meinem alten PHP-Code, die mir aus einem Titel den Slug generierte und dafür sorgte, dass dieser einzigartig in meinem Datenbestand ist. 

Mit PostgGaphile hatte ich diesen Code allerdings nicht mehr. Meine Recherchen diesbezüglich führten mich zu dem Ergebnis, dass die erwartete Funktionalität gar nicht mal in meinem Service umgesetzt gehört, sondern besser auf Datenbankebene aufgehoben ist. PostgreSQL kann das, denn ich kann hier bequem Funktionen und Trigger definieren. So wäre auch gewährleistet, dass immer ein Slug erzeugt wird, selbst wenn die Daten nicht über diesen speziellen Service kommen.

Weiterlesen

Unit-Testing in PostgreSQL

Es gibt verschiedene Stellen im Tech-Stack, an denen man seine Businesslogik liegen haben will.

In einem Symfony-Stack hat man beispielsweise eine „dumme“ Datenbank hinter einem ORM, die einfach nur die Daten speichert. Dann hat man ein beliebiges Templating-System im Frontend, dass für die Anzeige verantwortlich ist. Und dazwischen liegt Symfony im Backend und beinhaltet die Businesslogik. In diesem Fall ergibt es Sin, den Symfony-PHP-Code mit Unit-Tests abzudecken, so dass man sicher sein kann, dass da alles läuft.

Mit einem PostgreSQL-GraphQL-TypeScript-Stack braucht man aber dieses Backend nicht mehr. Oder genauer gesagt: Das Backend wandert in die Datenbank.

Weiterlesen