Blog & Articles

Blog Post

Scraping a Docker Swarm service with Prometheus

Scraping a Docker swarm service from a Prometheus server that is outside the swarm is not as easy as it might look at a first glance. You have to fetch the metrics of all running service instances, but how to identify and access them?

Article

JSX-Komponenten mit Java nutzen

Die Bedeutung von Oberflächen beziehungsweise der Benutzbarkeit von Software im Allgemeinen hat in den letzten Jahren, zurecht, wieder vermehrt an Bedeutung gewonnen. Bei der Entwicklung von Weboberflächen in Microservice-Architekturen besteht hierbei die Herausforderung, teamübergreifend eine durchgehend passende Nutzererfahrung, insbesondere durch ein konsistentes Look & Feel, zu erzeugen. Diese Kolumne stellt einen möglichen Weg vor, um genau dies zu erreichen.

Blog Post

Architektur-Reviews remote durchführen

Blog Post

Cross-platform testing of TypeScript code with Jasmine and Karma

I like TypeScript. Writing code that already underwent basic checks (i.e. typechecking) before it can even touch an execution engine is a big win in my book. In particular, TypeScript is nice because it integrates well into the broader JavaScript ecosystem and comes with batteries (i.e. types) included. Unfortunately, most test runners require extra setup to work with tests written in TypeScript. Some even require staggering amounts of configuration.

Article

Ziele, Erwartungen und Vorerfahrungen

Ein interaktives Software-Produkt ist immer nur so gut, wie es von dessen Nutzern wahrgenommen und erlebt wird. Heutzutage muss ein Software-Produkt für einen Nutzer einen Mehrwert bieten, der die Verwendung der Software rechtfertigt. Die Erwartungen und die darauf basierenden Anforderungen von Nutzern an ein Software-Produkt spielen hierbei eine entscheidende Rolle.

Blog Post

Using Javascript plugins in Go

More than the sum of its parts

Article

Fabric vs. Corda

Während die meisten öffentlichen Kryptowährungen alle ein recht ähnlichen Peer-to-Peer-Ansatz verfolgen, deren Transaktionen sich grob in Bitcoin- oder Ethereum-ähnlich einteilen lassen, gehen die private Blockchains teilweise radikal andere Wege. In diesem Artikel wollen wir die beiden Platzhirsche Hyperledger Fabric und Corda miteinander vergleichen.

Article

Dynamische Proxys mit dem JDK umsetzen

Bei der Entwicklung mit Java verwenden wir zwangsweise einige der im JDK enthaltenen APIs. Das Collections-API mit seinen Listen, Maps und Sets wird beispielsweise in so gut wie jedem Projekt genutzt. Neben solchen bekannten gibt es jedoch auch einige APIs, die vielen, auch nach mehreren Jahren Java-Entwicklung, noch nicht begegnet sind. In diesem Artikel wollen wir uns eine solche unbekanntere Programmierschnittstelle anschauen, nämlich das Dynamic Proxy Class API.

Blog Post

Glücklich ohne Service Mesh

Die Basis für sinnvolle Architekturentscheidungen ist die Auseinandersetzung mit dem Problem und ein guter Überblick über die Optionen.

Article

Effectively Working from Home

For two years, we have been exclusively working from home. In this article, we provide tips on how to become productive working from home through appropriate hardware, software, methods, and communication techniques. And, we show how to stay motivated in the long term.

Blog Post

Remote work

Last week we switched INNOQ to 100% remote work. The reason for this radical (or radical-looking) step was the spread of the novel Corona virus SARS-CoV-2, which needs to be contained. In concrete terms, this means that all our consultants will temporarily work exclusively in the home office.

Article

Requirements Engineering

Requirements the basis of efficient software development

Blog Post

About unit and integration tests

The terms unit test and integration test are typically used as something different, or even opposite. In this blog post I explain why this is misleading and how I prefer to talk about isolation vs. integration instead.

Blog Post

Kubernetes Probes

Kubernetes probes are for validating container health and readiness. But how should these probes be used? Do we need both? Can we share endpoints? This post tries to give some recommendations.

Article

Command & Control, SAFe, Domain-driven Design, and Release Trains

Handling Complex Software Projects

Article

Identification of quality requirements with Quality Storming

Quality Storming is a workshop for the identification of quality requirements based on a quality model, for example ISO 25010, using methods and ideas of Collaborative Modeling, which is popular in the Domain-driven Design Community. An important aspect in this context is a cross-collaboration of different stakeholders and skill sets.

Article

Einführung in ReplicaSet und Service

Um eine Anwendung ausfallsicher in einem Kubernetes-Cluster zu betreiben, wird diese mit mehreren Pod-Instanzen betrieben. Dadurch stellt sich allerdings die Frage, wie wir anschließend dafür sorgen, dass diese Pods auch für Clients innerhalb des Clusters einfach erreichbar sind. Um diese Frage und um eine verbesserte Version zur Replizierung von Pods geht es in diesem Artikel.

Blog Post

Hidden Champion - SQLite Datenbanken in Go

Blog Post

Don’t tell me I’m not building a web application

How do we decide what technology stack that we want to use for any given project? Is it really based on how perfectly well suited the technology is to the problem at hand or do we really just want to use the technologies that we like and are comfortable with? I’m happy in my filter bubble, rendering web applications on the server and progressively enhancing them on the client. But I also recognize my bias. Do you?

Article

Das eierlegende Truffleschwein

Viele, die im Java-Umfeld unterwegs sind, werden von ihr gehört haben: der sagenumwobenen GraalVM. Diese magische neue Virtual Machine für Java soll vor allem für blanke Performance sorgen, indem sie den Java-Bytecode in nativen Code kompiliert. Dadurch fällt insbesondere der Startup-Overhead weg, da weite Teile der Initialisierung bereits vom Compiler erledigt werden. Doch das ist bei weitem nicht das einzige Feature, welches Oracle der GraalVM gegeben hat. Hinzu kommt, dass die GraalVM zu nicht weniger das Potential hat als eine neue Ära der polyglotten Programmierung auf der JVM einzuläuten. Die Rede ist von der Truffle API, einem generischen Framework zur Implementierung von Interpretern.

Article

Was ist die Magie von Spring Boot?

Ein Blick hinter die Kulissen

Article

Warum Domain-driven Design?

Domain-driven Design (DDD) ist eine alte Technik, aber gerade voll im Hype. Worum geht es bei DDD und ist der Hype berechtigt?

Blog Post

Rails und DRY-Zugriffsrechte

CanCan(Can) ist ein mächtiges Authorisierungs-Framework im Rails-Umfeld, womit sehr feingranular Zugriffsrechte definiert werden können. mit feinerer Granularität dieser “can”-Regeln steigt jewoch die Gefahr, dass Status-Logik des Modells dupliziert wird, wenn die Anwendungs-Performanz eine Rolle spielen soll. In diesem Artikel möchte ich dazu einige Gedanken zu Lösungsmustern aufführen, die ich mir im Rahmen der Entwicklung unseres (künftigen) internen Rechnungstools gemacht habe.

Blog Post

Warum Quarkus.io _nicht_ geiler ist als Spring

Article

Brauchen asynchrone Microservices und SCS ein Service Mesh?

Service Meshes heben viele Randfunktionen von Microservices wie Monitoring, Routing und Sicherheit in die Infrastruktur und sind entsprechend beliebt in Microservice-Architekturen - doch schaffen sie diesen beachtlichen Mehrwert auch bei asynchroner Kommunikation oder in Self-contained Systems?