What are the challenges posed by evolving distributed systems architecture? In this short series of articles, we’ll understand the critical factors we should be keeping an eye on and how to address them.
This series of articles focuses on the challenges and the approaches needed to evolve a distributed system designed using a Service-Oriented Architecture approach using messages and queues to enable cross services communication.
We’ll start by investigating the challenges involved, for example:
- What evolving a distributed system means
- What the change or evolution direction is, and why it matters
- What are the change types we need to handle
- What no-downtime deployments are, and their impact
We’ll then analyze what options we have for evolving messages and process states. We’ll do that by looking at:
- How message contracts are shared across services
- If there is any relationship between .NET types and messages on the wire
- How to handle non-breaking changes and if there is any advantage in handling them differently than breaking ones
- What is the impact of changing the topology
- What is the process state and how to evolve it
- What to do when changes need to be retroactive
Photo by Cenk Batuhan Özaltun on Unsplash