Robert Blumen is a Dev Ops engineer at Salesforce. He's interviewing Alexey Syomichev, a software engineering principle architect at Salesforce, with over 25 years of experience. Their conversation begins with what constitutes an event (an immutable record encoding something that happened to an app). They then move on to describe consumers of those events, whether they're internal to an app or external to other services and business departments. Finally, they discuss ways in which you can store that event, either in a database or a running event log.

Databases and event logs each have their strengths and weaknesses, which Alexey enumerates. Event logs, for example, are easier to write to; but databases are easier to query for information. In general, Alexey believes that it can be important to organize your larger systems around an event log.

The conversation concludes with a discussion on how to use an event log in practical ways. First, you'll need to decide the schema to use when representing an event. State transitions are another reality to consider. If multiple events representing the same action come in, you need to make sure that the event log is atomic. Finally, there's a question of precisely how many events to retain, how far back you store your application's state.

Links from this episode

OK Event Log (the architecture files episode 3) by Ian Varley

Apache Kafka

CQRS Pattern by Martin Fowler

Event-driven architecture

How Apache Kafka Inspired Our Platform Events Architecture by Alexey Syomichev

About event-driven driven_architecture

Protobufs and Apache Avro are two ways in which you can serialize an event.

Podden och tillhörande omslagsbild på den här sidan tillhör Salesforce Engineering. Innehållet i podden är skapat av Salesforce Engineering och inte av, eller tillsammans med, Poddtoppen.