-
Datomic: Event Sourcing without the hassle
- In this article, we'll describe briefly what Event Sourcing is, how it's conventionally implemented, analyze the limitations of that, and contrast that with how Datomic enables you to achieve the same benefits. We'll see that, for most use cases, Datomic enables us to implement Event Sourcing with much less effort, and (more importantly) with more agility.
[Val on Programming]
Added on: Fri, 28 Apr 2023 17:40:48 GMT
-
Production Considerations for Spring on Kubernetes
- Excellent, in-depth article about things to consider when developing Spring Boot applications for Kubernetes environment.
[odedia's corner]
Added on: Fri, 16 Dec 2022 18:43:40 GMT
-
Kafka on Kubernetes: What could go wrong?
- Understand the risks and rewards of data streaming with Kubernetes
[Redpanda Blog]
Added on: Sun, 24 Jul 2022 11:11:55 GMT
-
A Brief History of High Availability
- In this post, we take a look at how distributed databases have historically handled fault tolerance and—at a high level—what high availability looks like. We also walk through different types of high availability systems.
[Cockroach Labs Blog ]
Added on: Wed, 27 Apr 2022 14:43:38 GMT
-
Why ZooKeeper Was Replaced with KRaft – The Log of All Logs
- Why replace ZooKeeper with an internal log for Apache Kafka® metadata management? This post explores the rationale behind the replacement, examines why a quorum-based consensus protocol like Raft was utilized and altered to become KRaft, and describes the new Quorum Controller built on top of KRaft protocols.
[Confluent Blog]
Added on: Thu, 7 Apr 2022 16:05:16 GMT
-
Commanded application architecture
- Describes the various ways you can architect your (CQRS/ES) Elixir application with Commanded and EventStore.
[Binary Consulting]
Added on: Tue, 1 Feb 2022 21:46:29 GMT
-
GenStage
- Producer and consumer actors with back-pressure for Elixir. Project currently provides the following functionality: GenStage (behavior for implementing producer and consumer stages) and ConsumerSupervisor (a supervisor designed for consuming events from GenStage and starting a child process per event)
[gen_stage]
Added on: Thu, 9 Dec 2021 21:00:58 GMT
-
Introducing Swift Distributed Actors
- We’re thrilled to announce a new open-source package for the Swift on Server ecosystem, Swift Distributed Actors, a complete server-oriented cluster library for the upcoming distributed actor language feature! This library provides a complete solution for using distributed actors in server use-cases. By open-sourcing this project early, alongside the ongoing work on the language feature, we hope to gather more useful feedback on the shape of the language feature and associated transport implementations.
[Swift Blog]
Added on: Fri, 29 Oct 2021 13:36:30 GMT
-
An Engineer's Guide to Building a Database for Data-Intensive Applications
- One of the decisions that some developers have to make is which database to use. I don't envy someone in this position - you have hundreds of options and a lot of FUD (fear, uncertainty, and doubt) to dig through. It's no wonder that many of my friends simply pick what they have used before. What's that old idiom…? "Better the devil you know than the devil you don't".
[SingleStore Blog]
Added on: Fri, 8 Oct 2021 06:49:50 GMT
-
Occurrent 0.12.0 released
- Occurrent is a set of event sourcing utilities for the JVM based on the cloud events specification. Occurrent 0.12.0 is now available with some better fine-grained configuration options for all MongoDB event stores as well as new cloud event converters for XStream and Jackson.
[Occurrent]
Added on: Tue, 28 Sep 2021 19:46:09 GMT
-
What's New in Apache Kafka 3.0.0
- I'm pleased to announce the release of Apache Kafka 3.0 on behalf of the Apache Kafka® community. Apache Kafka 3.0 is a major release in more ways than one. Apache Kafka 3.0 introduces a variety of new features, breaking API changes, and improvements to KRaft—Apache Kafka’s built-in consensus mechanism that will replace Apache ZooKeeper™.
[Apache Kafka]
Added on: Wed, 22 Sep 2021 06:16:16 GMT
-
Offset Tracking with RabbitMQ Streams
- RabbitMQ Streams provides server-side offset tracking for consumers. This features allows a consuming application to restart consuming where it left off in a previous run. This post covers the semantics of offset tracking and how it is implemented in the stream Java client.
[RabbitMQ - Blog]
Added on: Mon, 20 Sep 2021 20:23:30 GMT
-
Implementing event sourcing using a relational database
- Event sourcing is a pattern in which a stream of events constitutes the primary source of truth in a system. These events capture facts — state changes that occur to the entities and aggregates in our system — and hence are immutable. On the technical level, event sourcing can be implemented using dedicated storage systems, as well as general-purpose "NoSQL" and SQL databases.
[SoftwareMill]
Added on: Sat, 28 Aug 2021 19:54:33 GMT
-
Introducing The AxonIQ Initializr
- The AxonIQ Initializr is a web application that creates an Axon project structure for you. It doesn’t generate any application code, but it will give you a solid project structure, offering either a Maven or a Gradle build specification to suit your needs. Once you’ve downloaded your generated project, all that remains is to unzip, open, and begin work on your Axon code.
[Axon Framework and related blogs]
Added on: Mon, 16 Aug 2021 13:00:41 GMT
-
Asynchronous denormalization and transactional messaging with MongoDB change streams
- MongoDB provides a very useful set of abstractions for building a reliable service. I've found in practice, few databases can rival its indexing, resiliency (automated failover, even between regions; sharding) and consistency (primary and secondary reads) characteristics and their corresponding client library support. Of course, for all that, you give up flexible transaction boundaries (among other things). With a traditional RDBMS, you can describe the data you need to fit your business model, and worry about isolating writes among different tables later. With document-stores like MongoDB, you must design your documents around sensible isolation boundaries and query patterns. So, when joins are needed, you're typically advised to denormalize the joined data in order to keep queries to a single document, but at the same time MongoDB provides little facilities for denormalizing data!
[Alec Henninger]
Added on: Thu, 12 Aug 2021 17:04:57 GMT
-
Set Based Consistency Validation
- Requests like “How do I ensure the email address in a User aggregate is unique?” or “How do I ensure usernames are only used once on command handling?” reach us quite often. We can rephrase them simply as so: How do I consistently validate consistency among a set in such a system? None of these are Axon specific problems, really, but more so issues you would encounter when using CQRS in combination with Event Sourcing.
[Axon Framework and related blogs]
Added on: Tue, 3 Aug 2021 05:28:12 GMT
-
Occurrent – Event Sourcing for the JVM
- Occurrent is an event sourcing library for the JVM that I have been working on since the summer of 2020. There are several good options for doing event sourcing on the JVM already (such as Axon and Akka) so why did I set out to create something new? This is what we’re going to explore in this article. I intend to write several blog posts on Occurrent in the future with more guides and examples.
[Johan Haleby]
Added on: Sat, 24 Jul 2021 18:47:11 GMT
-
RabbitMQ Streams Overview
- A RabbitMQ stream models an append-only log with non-destructive consuming semantics. This means that – contrary to traditional queues in RabbitMQ – consuming from a stream does not remove messages. Streams in RabbitMQ are persisted and replicated. This translates to data safety and availability (in case of the loss of a node), as well as scaling (reading the same stream from different nodes.)
[RabbitMQ - Blog]
Added on: Fri, 23 Jul 2021 11:30:31 GMT
-
Thinking in Events: From Databases to Distributed Collaboration Software
- In this keynote I give a subjective but systematic overview of the landscape of distributed event-based systems, with an emphasis on two areas I have worked on over the last decade: large-scale stream processing with Apache Kafka and associated tools, and real-time collaboration software in the style of Google Docs.
[Martin Kleppmann]
Added on: Fri, 23 Jul 2021 06:28:02 GMT
-
Sagas in practice
- This blog is a how-to implement a Saga with Axon and Spring Boot. Saga’s are a powerful concept but, you need to think about other options before implementing a Saga. You’ll have to keep in mind that the Saga should only orchestrate the process. The business logic should be kept in the Aggregates. The usage of a Saga implies more database traffic and CPU power for serializing and deserializing the instances. A Saga uses several tables in the database to store and retrieve its state. If you don’t need it, I recommend using a stateless event handler instead.
[Axon Framework and related blogs]
Added on: Thu, 22 Jul 2021 07:02:52 GMT