In the spirit of agile software development many cloud-based microservice application platforms start life as a handful of microservices. Initially the goal is to demonstrate that these services form systems that provide tangible value to business stakeholders, therefore more and more features are added into the individual services. Over time the number of services grows, but the fundamental interaction model between them does not change. They still rely on synchronous HTTP based communication and the services fetch the data required to calculate the responses at request time.
As the number of incoming requests increases this architecture quickly turns out to not be scalable or resilient to failure. And when taking a step back such a system is often a distributed monolith in disguise.
If any of the above sounds familiar this session is for you. In the session I want to describe how you can transition to a maturer model where data is pushed across the platform. Not only will I look at how the microservices interaction can be changed, but also talk about how connections to systems outside your direct influence can be isolated in order to avoid tainting your own architecture.