wtf( )unctionsystem design, drawn
← all problemsDistributed SystemsMedium

Which side do you upgrade first?

A field is being added to an event that six services consume. The producer and the consumers are deployed independently, so for a while both old and new will be running at once.

One deploy order is safe and the other takes the consumer fleet down mid-rollout, and which is which depends on a compatibility setting most teams never look at.

Order the two deploys under backward compatibility, where new code must be able to read old data.
Components — tap one, then tap a slot on the diagram
?One deploy order is safe. The other takes the consumer fleet down mid-rollout.

Outside every boundary: Consumers (six services), Producer (emits the events), Event stream, an empty slot for the upgrade first, an empty slot for the upgrade second Connections: Producer publishes to Event stream (step 2) Event stream publishes to Consumers (step 1) upgrade first controls Consumers — upgrade first upgrade second controls Producer — and only then

Consumerssix services
Produceremits the events
Event stream