In this article, you’ll learn the foundations of event-driven APIs, how they interact with consumers, the technology choices to build them, and how to document them with AsyncAPI specification.
We, as information consumers, have a craving desire to know things as they happen.
Where is my package right now? What’s the score of the game? How is Dogecoin performing today? Likewise, the list goes on. A majority of Internet users today would like information to be pushed towards them rather than pulling.
Microservices architectures are inherently distributed. Building Microservices always bring in the most challenging problems, such as resilient service invocation, distributed transactions, on-demand scaling, and exactly-once processing of messages.
Putting Microservices on Kubernetes doesn’t always solve these problems as Kubernetes doesn’t have an application logic. Frameworks like Spring Boot, Akka, and Quarkus offered great help when building distributed Microservices architectures. But they are tightly coupled to specific programming languages and often opinionated.
So developers remain searching for a portable runtime to build distributed, scalable, and event-driven Microservices.
Dapr is a portable, event-driven runtime that makes it easy for any developer to…
This post serves as an introduction to the Change Data Capture (CDC) practice, rather than a deep-dive on a particular tool. First, I will explore the motivation behind CDC and illustrate the components of a real-time event-driven CDC system. The latter parts discuss some potential use cases where CDC is applicable and conclude with some open-source tools available in the market.
P.S I made a YouTube videos for this post to explain this visually as well. If you are interested, you can check it below.
Applications start with a small data footprint. Initially, a single database fulfils every data…
Azure Service Bus is a managed message queueing service offered by Microsoft Azure. In Azure Service Bus, you can schedule a message to deliver at a later time.
This post discusses how to schedule a message, cancel a scheduled message, and browse already scheduled messages with Azure Service Bus and its .NET SDK client.
In messaging, you can send a message to a queue/topic for delayed processing. Those messages are called scheduled messages.
Unlike regular messages, scheduled messages don’t appear in the queue until the defined enqueue time. For example, you can schedule a message at 12 pm and send…
A message might have a limited lifetime, and if it is not processed within this period, it is useless and should be discarded.
For example, a pizza order is useless when its maximum wait time is passed. The customer might have considered ordering from another shop. Also, in a highly dynamic environment like stock trading, a BUY order must be processed within seconds. If not, the order will be irrelevant as the prices can fluctuate.
In this post, let’s see how a sender can indicate when a message should be considered stale and shouldn’t be processed.
After accepting a message…
EdU envisions building a vibrant community around asynchronous, event-driven, and reactive software architectures. We are always looking for great content to help architects, developers, and IT leaders build better systems than yesterday.
EdU attempts to centralize, curate, and distribute high-quality content on massively scalable and reliable event-driven systems among like-minded people.
If you have a background in this space, we are more than happy to share your experiences among our ever-growing EdU community.
We would like your contributions in the following areas.
In the previous post, I talked about an Event Streaming Platform (ESP) concept, why you should have an ESP in your organization, and the high-level architecture of a typical ESP.
In this post, I will explain the storage layer of an ESP in detail. We’ll discuss the architecture and fundamental concepts of it while taking examples from popular ESPs out there.
The storage layer is responsible for storing the ingested events in a highly scalable and durable manner. Simply put, it ensures that not a single event ingested is lost due to the failures of the entire ESP.
Debezium 1.5.0 is out with transactional metadata for the MySQL connector, LogMiner-based CDC implementation for Oracle promoted from incubating to stable, support for RedisStreams in Debezium Server, and much more.
Apache Pulsar is a cloud-native, distributed messaging and streaming platform created at Yahoo! and now a top-level Apache Software Foundation project.
That provides opinionated guidance on key topics such as Event-driven architectures, application design, debugging, and optimization.
The Design of an Event Store by Emil Koutanov
Why Threat Modelling Should Be Part of Your Serverless Development by Sheen Brisals.
Businesses today are dealing with a massive influx of real-time data. Financial transactions, application logs, website clickstreams, and IoT telemetry data are few examples.
As a business, you can’t simply ignore the importance of real-time data. Even if you do, your competitors won’t. Modern businesses use them to get meaningful insights in a timely fashion to stay ahead of the competition.
Crude oil is the best analogy we can apply to real-time data as well. They have to be extracted, transported, and refined to get a meaningful value. …
Thanks for the question. I too had that confusion when I began to go through the specification.
However, this is how I understood that.
We create an API definition to tell how it will behave to the consumers of that API. That includes specifying message formats and operation names. In my opinion, this is like ordering our consumers what to do next.
If you are creating an API that publishes messages to the consumer, then the consumer should subscribe to it. That's the order I'm giving to the consumer. Conversely, if your API consumers messages from the outside, then…