PostGraphile-Authentifizierung mit JWT & Security mit RLS

Wir schreiben ja immer davon, dass wir möglichst Beispiele aus der „echten“ Welt in unserer Serie* abbilden wollen und nicht nur auf 30.000 Metern Flughöhe irgendwelche Themen beäugen. Dann wollen wir doch einfach mal Authentifizierung und ein bisschen Security in unserer PostGraphile-Serie mit aufnehmen.

Weiterlesen

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

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

Containerizing Django and React with Docker

Nowadays, software developers work on multiple projects at the same time. The projects usually present distinct requirements. Nevertheless, they must be reproduced identically in multiple machines, and sometimes they have to live in the same hardware – the developer’s computer. The so-called container technology stands out among the different approaches used to reproduce software projects reliably.

A container is a standard unit of software used to build a virtualized operational system (OS). The container’s OS has control over some components of the host system and can isolate the processes related to the container’s services. This isolation enhances the reproducibility of the containerized application. The container technology has been developed since the 2000s, but in 2013, when Docker was introduced to the community, its popularity has exploded.

Weiterlesen

Open Mayday … mit AWS, React und einem hohen Wetteinsatz

Der nächste Open Mayday bei Mayflower steht an! Open Mayday?! Ja! Wir öffnen unsere Slack-Time an sogenannten Open Maydays immer wieder für Externe, um neue Impulse zu bekommen und an einem coolen Tag mit viel Luft zum Reden voneinander zu lernen und in Kontakt mit der Community zu gehen.

Nach dem großen Erfolg dieses Formats an unserem Berliner Standort (und remote im vergangenen Jahr) wird der kommende Open Mayday am 22. Juli in unserem Würzbürger Office stattfinden. Und was sollen wir sagen …

Wir haben so Bock!

Infos und Anmeldung zum Open Mayday

Weiterlesen