RSSAmplifier

Blog

On Software Architecture, Programming Languages, Engineering Management, and Systems Thinking

A weblog of thoughts On Software Architecture, Programming Languages, Engineering Management, Systems Thinking, and more.

reactivesystems.euRSS feed ↗13 posts

Latest posts

Not All Commands Are Equal (And Neither Are Events)

Usually, in an event-driven architecture, events are emitted by one service and listened to by many (1:n). But what if it’s the other way around? If one service needs to listen to events from many other services? When we talk about communication between services, we distinguish between commands, queries and events. For events and queries, let’s say we agree on these attributes: Queries, Events…

The Dual Nature of Events in Event-Driven Architecture

Given that events play such a central role in event-driven architecture, there’s an astonishing lack of agreement on what should be contained in an event. This may be rooted in the fact that, depending on your perspective, events fulfill different purposes. In a system that follows event-driven architecture in its contemporary style, microservices collaborate by emitting and subscribing to events.…

Five Common Misconceptions About Event-Driven Architecture

An opportunity for everyone to do a little self-test. Do you believe any of these five statements? If so, don’t worry, you’re not the only one, I’ve come across them many times. I’m very convinced they’re untrue, though. This is my humble attempt to improve our shared understanding of some properties of event-driven architecture. EDA means Event Sourcing Well, it doesn’t. Event sourcing is an…

Event-Driven Core, Request-Response Shell

There’s much uncertainty and doubt (and maybe even fear?) around event-driven architecture. One example is the belief that it’s irrelevant for REST APIs, as using HTTP verbs is quite clearly not event-driven. But behold - you don’t always have to go all-in to win. Most modern applications provide an HTTP-based API on the server side, usually - more or less - following REST principles. The front…

What Kind of Asynchronous is Right For You?

There are a few ways for (micro-)services to communicate with other (micro-)services that can be rightfully classified as asynchronous 1 . But they have very different characteristics. Let’s have a look at them and their impact on the overall system structure. Asynchronous Option 1: Non-blocking network calls (e.g. HTTP, gRPC) On a low technical level, the term asynchronous is used to mean “not…

Flix For Java Programmers

The Java Virtual Machine isn’t limited to running programs written in the Java programming language. Many other compilers output Java bytecode. Some of these languages have so far remained exotic. Others have found a large following, for example Groovy , Clojure , Scala , and Kotlin . Now Flix , another language that brings some fresh approaches to the JVM, has entered the scene. Apart from the…

Java Concurrency: An Introduction to Project Loom

Project Loom is an experimental version of the JDK. It extends Java with virtual threads that allow lightweight concurrency. Preview releases are available and show what’ll be possible. Server-side Java applications should be able to process a large number of requests in parallel. But the model that’s still most widely used in server-side Java programming today is thread-per-request. An incoming…

Event Collaboration And Event Sourcing

“Events! Events everywhere!” - or so it seems. This isn’t a bad thing, not at all: Event-driven Architecture can help to make microservices architectures scalable and resilient. But there are different patterns at play that we need to distinguish. And not everything is an event. An attempt for clarification. The term event is omnipresent in software architecture today. We hear about Event Sourcing…

Don't Use Await.result!

Almost regularly I see Scala code where people program in a sequential, synchronous style and integrate an asynchronous I/O call by waiting for its completion with Await.result. But you really shouldn’t. Let me start with a quote from Viktor Klang , the author of the Scala Futures library: Some find it bad that Await.result is *outside* of Future. I find it bad that I added Await at all.…

Java, Scala, Kotlin and .. Skiing

This is not actually about winter sports. Bear with me. Many years ago, when I was at Edinburgh University, a fellow student convinced me to go on a weekend trip with him to the Cairngorms, for snowboarding. I had never been snowboarding before in my life, and in many ways it was a frustrating experience. Most of the weekend I spent sitting at the side of the slopes, waiting for the pain to go…

10 More Scala Features Most* Java Developers Love

(*) Please don’t take the title too seriously. I have no empirical evidence that it is actually the case (that most Java developers love these features). I know some do, me included. Well, honestly, I just kind of liked the title of the first blog post when I wrote it, and decided to stick with the “love” theme. In my first blog post, 10 Scala Features Most Java Developers Love , I assembled a top…

Things I Wish I Knew When I Started Building Reactive Systems

This is a summary of the talk „A Pragmatic View of Reactive“ on ScalaDays Amsterdam. If you prefer watching a video, there’s a recording on YouTube . Or if you prefer German, there’s an even longer German version of this on Jaxenter . The term reactive (as in reactive systems, or reactive architecture) is defined in the Reactive Manifesto . It describes systems that are so elastic and resilient…

10 Scala Features Most* Java Developers Love

(*) “Most” in this case meaning: Of those I have met and have talked to about this. I’m not actually aware of an empirical study supporting this. But I still think it’s a fair claim. 😉 Some Java developers seem to be intimidated by Scala. They get hung up on some possibly rather obscure feature, and from that conclude that the language must be a complicated maze you can only get lost in. There…