This image has an empty alt attribute; its file name is Remigiusz-Dudek_foto-240x300.jpg
Remigiusz Dudek

[This panel is only in Polish language]

We are leaving in a world of scalable software, but what are the three distinct ways of scaling out our software? What is the difference between scaling out and scaling up? What are the consequences we’ll have to face when choosing given option? 

Even software that can grow together with the demand of its clients will not remain unchanged for more then few months/weeks/days/hours. The world changes and so must our software. What are the patterns that we can choose while evolving our API? How about changes to DB schema? Is breaking change an acceptable solution? What are potential issues with breaking changes? How can we turn breaking change into non-breaking change? At what price? Is it really possible? 

Event based integration has proven itself in terms of decoupling allowing us to evolve serices independently. But schema of events will be evolving as well. What is the difference between forward and backward compatibility? Do we really want to face consequences of either or should we rather go towards full compatibility? 

We need to update our internal state and inform other services about the change, possibly using events. What are the different options that we can choose to do it reliably? Why some options are less recommended and some gain more and more momentum?

Every decision has it’s costs and benefits which we need to understand before making a choice. During our discussion panel I would like to share my experience and ask you to share yours so that we build (almost) complete picture of given design decisions.