> Markdown version of [/videos/494-the-rise-of-reactive-microservices](https://www.wearedevelopers.com/videos/494-the-rise-of-reactive-microservices). Every page supports `.md` or `Accept: text/markdown`. Links point to the HTML versions so they work for humans too. Agent guide: [/agents.md](https://www.wearedevelopers.com/agents.md). --- # The Rise of Reactive Microservices Every architecture buys options but demands payment in complexity. Stop slicing services by data objects with brittle synchronous APIs. Learn when to actually transition to reactive microservices. - **Speakers:** David Leitner - **Event:** World Congress 2022 - **Published:** June 15, 2022 - **Duration:** 46:24 - **URL:** https://www.wearedevelopers.com/videos/494-the-rise-of-reactive-microservices ## Summary The transition from monolithic applications to microservices often begins with synchronous, REST-based integrations that quickly reveal cascading failure points and tight coupling. By tracing the evolution of distributed systems, this overview dissects the entity service antipattern—the mistake of slicing services by data objects rather than end-to-end customer journeys. While introducing message queues mitigates some latency constraints, achieving true organizational autonomy relies on decoupling data ownership through stream-based, push-driven architectures. Embracing reactive microservices means adopting event-driven paradigms where tools like Apache Kafka, Apache Pulsar, and Redis Streams replace point-to-point API calls. Utilizing unidirectional data flows and CQRS-inspired projections allows each service to maintain its own highly optimized read models, effectively eliminating runtime dependencies. Transitioning to this architecture requires engineering teams to manage eventual consistency by mapping its distinct permutations: eventual divergence, variance, and latency. Strategies like optimistic UI rendering, strict deduplication, and change data capture (CDC) ensure resilience when streaming data from legacy monolithic databases. At the highest tier of scale, stream processing frameworks like Apache Flink pair with database sharding to yield virtually infinite horizontal scalability by processing partitioned datasets based on targeted user groups. Despite the performance upside of these capabilities, transitioning too fast is a common structural trap. Every architectural style buys operational options but demands payment in the currency of system complexity. Teams are encouraged to remain monolithic for as long as functionally possible, only adopting distributed, reactive, and sharded complexities when explicit non-functional requirements justify the engineering overhead. **Keywords:** reactive microservices, distributed systems architecture, entity service antipattern, event-driven architecture, eventual consistency tradeoffs, CQRS read models, apache kafka, change data capture, apache flink, legacy system decomposition, stream processing, optimistic UI patterns, unidirectional data flow, database sharding ## Chapters 1. **Tracing the evolution of modern microservices architecture** (00:05) — An introduction to the progression of distributed software architecture. 1. **Understanding the challenges of synchronous microservice integration** (02:01) — How HTTP synchronous calls between services face latency spikes and cascading failures. 1. **Decoupling microservices with asynchronous messaging queues** (06:12) — Migrating to an asynchronous message-driven architecture to protect high-latency core systems. 1. **Slicing software services along customer journey boundaries** (08:12) — Why organizing microservices by entities creates communication bottlenecks and slows down feature delivery. 1. **Bridging the customer journey and entity data mismatch** (14:01) — Addressing shared data dependencies across user flows by clarifying data ownership instead of caching. 1. **Pushing data streams into isolated read models** (18:35) — Using the CQRS pattern to push state changes into service-specific persistent projections. 1. **Managing trade-offs and latency in eventual consistency** (21:27) — How to handle eventual divergence, eventual variance, and eventual latency in distributed read models. 1. **Optimizing system scalability and real-time push capabilities** (28:14) — Utilizing reactive pipelines and GraphQL subscriptions for autonomous services and push-based frontend updates. 1. **Integrating legacy monoliths with change data capture** (32:46) — Capturing database log events to decouple reactive services from legacy system constraints. 1. **Maximizing data throughput via distributed stream sharding** (34:35) — Partitioning event topics to enable infinite processing scalability with localized projections. 1. **Weighing architectural complexity against system scalability options** (40:22) — Balancing system flexibility and performance capabilities against the high cost of distributed complexity. 1. **Applying microfrontend patterns and data duplication bounds** (43:41) — Answering audience queries about aligning frontends with service boundaries and maintaining projection immutability. ## Related Moments - [Transitioning from a monolith to a microservice architecture](https://www.wearedevelopers.com/videos/242-microservices-how-to-get-started-with-spring-boot-and-kubernetes) (from "Microservices: how to get started with Spring Boot and Kubernetes") - [Scaling responsive systems through reactive and message architectures](https://www.wearedevelopers.com/videos/935-architectures-that-we-can-use-with-net) (from "Architectures that we can use with .NET") - [Modern application stacks and real-time data requirements](https://www.wearedevelopers.com/videos/806-leveraging-real-time-data-in-fsis) (from "Leveraging Real time data in FSIs") - [Evolution of frontend and microservices architectures](https://www.wearedevelopers.com/videos/873-interface-contracts-in-microfrontend-architectures) (from "Interface Contracts in Microfrontend Architectures") - [Building scalable applications with reactive programming](https://www.wearedevelopers.com/videos/383-kubernetes-native-java) (from "Kubernetes Native Java") - [Evolution from monolithic applications to headless microservices](https://www.wearedevelopers.com/videos/1188-beyond-micro-services-embrace-composable-architecture) (from "Beyond micro-services, embrace composable architecture !") ## Related Articles - [Why Event-Driven Architecture Isn’t About Speed (and When You Actually Need It)](https://www.wearedevelopers.com/magazine/745-why-event-driven-architecture-isn-t-about-speed-and-when-you-actually-need-it) - [Why You Shouldn’t Build a Microservice Architecture](https://www.wearedevelopers.com/magazine/118-why-you-shouldn-t-build-a-microservice-architecture) - [Navigating the AI Shift](https://www.wearedevelopers.com/magazine/629-navigating-the-ai-shift) - [Now is the time for industrialized software development](https://www.wearedevelopers.com/magazine/601-now-is-the-time-for-industrialized-software-development) ## Related Jobs - [Principal Software Engineer](https://www.wearedevelopers.com/jobs/ext/149130-principal-software-engineer) at **Twilio** - [Senior Software Engineer, Client Apps Platform](https://www.wearedevelopers.com/jobs/ext/1773893-senior-software-engineer-client-apps-platform) at **GitHub** - [Lead Software Engineer - Data Engineering](https://www.wearedevelopers.com/jobs/ext/2000968-lead-software-engineer-data-engineering) at **Dynatrace** - [Staff Software Engineer](https://www.wearedevelopers.com/jobs/ext/1425755-staff-software-engineer) at **GitHub** - [Remote Senior Full-Stack Engineer](https://www.wearedevelopers.com/jobs/ext/645320-remote-senior-full-stack-engineer) at **Edge Impulse** - [Remote Senior Full-Stack Engineer](https://www.wearedevelopers.com/jobs/ext/644637-remote-senior-full-stack-engineer) at **Edge Impulse**